2026-04-18

날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.

요약 (AI 작성)

zntc는 클래스 다운레벨링의 남은 구멍을 메웠습니다. ES5 클래스의 계산된 getter/setter 키 평가와 private getter/setter lowering(#1525, #1526), private·계산된 키 accessor의 ES5 구현과 static private accessor·복합 대입(#1527, #1528), Stage 3 데코레이터와 accessor의 ES5 처리(#1539, #1540), @decorator export default class 보존(#1541)이 병합됐습니다. 번들러는 axios 스모크 실패를 계기로 package.json browser 필드의 문자열 remap, bare module 키와 순환 감지를 지원하고(#1529, #1531), ESM 래퍼 함수 호이스팅의 중복 var 선언을 없앴습니다(#1532).

tsconfig 지원을 크게 넓혔습니다. verbatimModuleSyntax(#1544), NAPI/WASM의 tsconfigPath(#1545), CLI --tsconfig-path(#1547), paths/baseUrl과 --alias 병합(#1548)을 넣은 뒤 paths를 TS 공식 스펙대로 어디에나 오는 wildcard와 다중 후보로 다시 설계했고(#1549), 상위 디렉터리 자동 발견을 붙였습니다(#1550).

번들 크기 쪽에서는 tree shaker가 가짜 used_exports로 코드를 남기던 누수를 고치고(#1555), reference_count 신호를 없애고 BFS를 fixpoint 안으로 합치는 재설계를 마쳤으며(#1559~#1563), globalThis.process?.env 같은 방어적 접근도 define에 매칭되게 했습니다(#1556). 상수 폴딩과 dead branch 제거는 --minify 없이도 돌게 했고(#1565), !0/!1, void 0 같은 peephole 축약(#1557, #1566), ES2015 이상에서 화살표 IIFE 래퍼(#1583), mangling 제외 범위를 공개 API 경계로 줄이기(#1584), 합성 _default의 mangling(#1590), 참조되지 않는 클래스 식 이름 익명화(#1594)가 이어졌습니다. 이 과정에서 드러난 !!x 축약의 타입 가드 누락(#1578), for 초기화절 중복 세미콜론(#1568), 단일 모듈 번들에 _default$1이 붙던 문제(#1599)도 고쳤고, AST의 매직 오프셋과 플래그 비트를 상수와 구조체로 바꾸는 정리가 여러 PR로 들어갔습니다(#1534, #1570, #1573 등).

bungae는 예제 앱을 RN 0.85.1로 올리고 표시 이름을 Bungae로 바꿨으며, Expo SDK 55 Router 예제 BungaeExpo를 추가했습니다. @react-native/babel-plugin-codegen으로 네이티브 view config를 인라인하고, RN 0.85 업그레이드 뒤 드러난 Rozenite monkey-patch 누락과 .ts codegen 파서 불일치를 고쳤으며, 예제 앱을 iPhone·iPad 유니버설로 만들어 iPadOS 26 창 모드 실행 문제를 해결했습니다. ohah.github.io에는 맞춤법 크론의 상태 갱신 커밋이 이어졌습니다.

공개 커밋 76개, 해당일 생성 또는 병합된 PR 52개를 정리했습니다. PR 생성 52개·병합 52개는 같은 PR이 양쪽에 포함될 수 있습니다.

커밋

ohah/bungae

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#1599생성 · 병합mergedmainfix(bundler): _default 합성 심볼 중복 등록 제거
ohah/zntc#1595생성 · 병합mergedmaintest(integration): TLA IIFE 기대값을 arrow 래퍼로 갱신 (#1580 후속)
ohah/zntc#1594생성 · 병합mergedmainperf(transformer): 미참조 class expression name 익명화
ohah/zntc#1593생성 · 병합mergedmainfix(semantic): ClassExpression name을 class body scope에 lexical binding 등록
ohah/zntc#1591생성 · 병합mergedmainperf(codegen): minify_syntax 시 new (expr)()의 잉여 parens 제거
ohah/zntc#1590생성 · 병합mergedmainperf(bundler): 합성 _default 심볼을 mangler 후보에 포함
ohah/zntc#1584생성 · 병합mergedmainperf(bundler): mangling 제외 범위를 public API 경계로 축소
ohah/zntc#1583생성 · 병합mergedmainperf(bundler): arrow IIFE 래퍼로 전환 (ES2015+)
ohah/zntc#1578생성 · 병합mergedmainfix(minify): !!x 축약에 boolean 타입 가드 추가 (#1577)
ohah/zntc#1576생성 · 병합mergedmainrefactor(bundler): ModuleIndex.toU32() 헬퍼로 @intFromEnum 패턴 제거 (#1553 항목 2)
ohah/zntc#1575생성 · 병합mergedmainrefactor(tree_shaker): "*" sentinel → ALL_EXPORTS_SENTINEL 상수화 (#1553 항목 1)
ohah/zntc#1574생성 · 병합mergedmainrefactor(ast): MethodFlags 잔여 매직넘버 일소 (parser/semantic/transformer/codegen)
ohah/zntc#1573생성 · 병합mergedmainrefactor(ast): PropertyFlags struct 신설 + 매직넘버 치환
ohah/zntc#1572생성 · 병합mergedmainrefactor(codegen): FunctionFlags/ArrowFlags 매직넘버 제거
ohah/zntc#1571생성 · 병합mergedmainrefactor(ast): UnaryFlags.postfix 매직넘버 0x100 제거
ohah/zntc#1570생성 · 병합mergedmainrefactor(ast): MethodFlags 매직넘버 일소 (parser/transformer/codegen)
ohah/zntc#1569생성 · 병합mergedmainrefactor(ast): methodFlagsToFunctionFlags 헬퍼로 매핑 통일
ohah/zntc#1568생성 · 병합mergedmainfix(codegen): #1564 for-init 중복 세미콜론 + generator private method 다운레벨
ohah/zntc#1566생성 · 병합mergedmainfeat(codegen): minify_syntax 시 undefined → (void 0) peephole (#1552)
ohah/zntc#1565생성 · 병합mergedmainfeat(bundler): constant folding + dead branch DCE를 --minify 없이도 상시 실행 (#1552)
ohah/zntc#1563생성 · 병합mergedmaintest(tree_shaker): #1558 Phase 5 불변식 회귀 가드 7건 추가
ohah/zntc#1562생성 · 병합mergedmainrefactor(tree_shaker): reference_count 신호 완전 제거 (#1558 Phase 5)
ohah/zntc#1561생성 · 병합mergedmainrefactor(tree_shaker): BFS를 fixpoint 내부로 통합 + pruneUnreachable 삭제 (#1558 Step 3+4)
ohah/zntc#1560생성 · 병합mergedmainrefactor(tree_shaker): StmtInfo 구축을 fixpoint 전으로 이동 (#1558 Step 2)
ohah/zntc#1559생성 · 병합mergedmainfix(tree_shaker): namespace import target "*" 마킹으로 E2E dangling 복구 (#1558)
ohah/zntc#1557생성 · 병합mergedmainfeat(codegen): minify_syntax로 boolean 리터럴 !0/!1 축약 (#1552)
ohah/zntc#1556생성 · 병합mergedmainfeat(define): optional chaining + globalThis root 자동 매칭 + auto-define 확장 (#1552)
ohah/zntc#1555생성 · 병합mergedmainfix(tree_shaker): 가짜 used_exports 정정으로 tree-shake 누수 해결 (#1551)
ohah/zntc#1550생성 · 병합mergedmainfeat(tsconfig): 자동 발견 + paths wildcard 경고
ohah/zntc#1549생성 · 병합mergedmainfeat(tsconfig): paths를 TS 공식 스펙에 맞게 재설계 (wildcard anywhere + 다중 후보)
ohah/zntc#1548생성 · 병합mergedmainfeat(tsconfig): paths/baseUrl + CLI --alias 병합 지원
ohah/zntc#1547생성 · 병합mergedmainfeat(cli): --tsconfig-path 플래그 + -p 에 파일 경로 지원
ohah/zntc#1546생성 · 병합mergedmainrefactor(tsconfig): 머지 규칙 공용 helper (src/tsconfig_merge.zig) 추출
ohah/zntc#1545생성 · 병합mergedmainfeat(napi/wasm): tsconfigPath 옵션으로 tsconfig.json 자동 로드
ohah/zntc#1544생성 · 병합mergedmainfeat(tsconfig): verbatimModuleSyntax 지원 (TS 5.0+)
ohah/zntc#1543생성 · 병합mergedmainfix(wasm): 빈 출력에서 RangeError (Start offset -1) 방지
ohah/zntc#1542생성 · 병합mergedmainfix(bundler): TLA non-ESM 경고 중복 emit 제거 + ZTS0002 코드 부여
ohah/zntc#1541생성 · 병합mergedmainfix(parser, transformer): @decorator export [default] class 보존 (#1538)
ohah/zntc#1540생성 · 병합mergedmainfix(transformer): Stage 3 accessor+decorator × ES5 private backing WeakMap lowering (#1537)
ohah/zntc#1539생성 · 병합mergedmainfix(transformer): Stage 3 decorator + --target=es5 재방문 활성화
ohah/zntc#1536생성 · 병합mergedmainrefactor(ast): formal_parameter + class_declaration extras 상수화 (#1513 3/N)
ohah/zntc#1535생성 · 병합mergedmainrefactor(codegen, semantic): method/property extras 매직 offset 상수화 (#1513 2/N)
ohah/zntc#1534생성 · 병합mergedmainrefactor(ast): method/property extras 매직 offset 상수화 (#1513 1/N)
ohah/zntc#1533생성 · 병합mergedmainrefactor(bundler): /simplify 후속 — browser field 공용화 + 타입 통합 + 테스트 strictness
ohah/zntc#1532생성 · 병합mergedmainfix(bundler): ESM wrapper 함수 호이스팅 중복 var 선언 제거 (axios@node smoke FAIL)
ohah/zntc#1531생성 · 병합mergedmainfeat(bundler): package.json browser 필드 bare module 키 + cycle 감지 (#1530)
ohah/zntc#1529생성 · 병합mergedmainfix(bundler): package.json browser 필드 string remap 지원 (axios runtime fix)
ohah/zntc#1528생성 · 병합mergedmainfix(transformer): #1511 static private accessor + compound assign + Babel parity
ohah/zntc#1527생성 · 병합mergedmainfeat(transformer): private/computed accessor ES5 완전 구현 (#1511)
ohah/zntc#1526생성 · 병합mergedmainfix(transformer): ES5 target 의 private getter/setter lowering (#1523)
ohah/zntc#1525생성 · 병합mergedmainfix(transformer): ES5 class computed getter/setter key expression 평가 (#1524)
ohah/zntc#1522생성 · 병합mergedmainrefactor(transformer): Object.defineProperty descriptor 공용 helper 추출 (#1510 item4)