2026-04-15
요약 (AI 작성)
2026-04-15은 ohah 프로젝트의 대규모 리팩토링과 Metro 호환성 개선에 집중한 날이었습니다. ZTS의 /simplify 작업이 Phase 4 시리즈로 확장되면서 bundler의 심볼 테이블, ImportBinding, ExportBinding 구조를 재설계하고, transformer에서 ES5 다운레벨 지원을 보강했습니다. 또한 Metro AssetRegistry 호환, 블록리스트 리졸버, watchFolders 옵션 등 호환성 관련 기능 30개 PR이 머지되어 bundler와 resolver의 웹팩/Metro 양방향 호환을 다진 날입니다.
커밋
ohah/bungae
- test(example-app): ES5 다운레벨 스트레스 케이스 추가
- feat(zts): add Metro-compatible server.enhanceMiddleware hook for Rozenite
- chore: bump zts submodule
- test(example-app): narrow ES5 downlevel repro to async function + computed object
- chore(example): update Podfile.lock for RNSVG 15.15.4
- feat(zts): add Metro-compatible rewriteRequestUrl + symbolicator.customizeFrame
- docs: add ZTS Metro config hook compatibility matrix to CLAUDE.md
- docs(skills): sync config.md schema with actual BungaeConfig
- docs(skills): rewrite dev-server.md to match actual implementation
ohah/zts
- fix(transformer): for-in let/const 바인딩의 TDZ void 0 init 생략 (#1386)
- fix(transformer): for-await-of ES5 미만 타겟에서 iterator+await 루프로 lowering (#1381)
- fix(transformer): unicode brace escape \u{X} → surrogate pair lowering (#1388)
- docs(architecture): symbol table + AST 정규화 최신화
- fix(codegen): for-await-of var init hoist/skip 누락 수정 (#1379)
- fix(transformer): for-of body array/object destructure 를 var+인덱스 접근으로 lowering (#1383)
- fix(transformer): top-level await 를 async IIFE 로 감싸 bare yield leak 방지 (#1384)
- chore(transformer): /simplify #1387 후속 — 단일 버퍼 조립 + OOM 전파
- fix(transformer): regex dotAll/named capture 다운레벨 (#1387)
- fix(transformer): object literal method shorthand 를 key:function 으로 lowering (#1385)
- fix(transformer): 합성 노드 span 의 STRING_TABLE_BIT 처리 — getText 일괄 사용 (#1404)
- chore(transformer): for-of/for-await loop var assign helper 통합
- chore(transformer): unicode brace escape 유틸 재사용
- chore(transformer): /simplify #1404 후속 — 누락 사이트 + 매직 넘버 + 회귀 테스트 보강
- chore(crash-handler): URL 을 깃헙 레포 링크로 단순화
- fix(cli): --allow-overwrite 체크 시 realpathAlloc 결과 leak
- feat(diagnostics): Bun 스타일 crash report — panic handler + 신고 안내
- chore(bundler): /simplify Phase 4e-2d-a 후속 — semanticSymbols getter로 dedup
- refactor(bundler): Phase 4e-2d-a — dead variants + synthetic_default fallback 제거 (#1338)
- chore(bundler): /simplify Phase 4e-2d-b 후속 — Alias.span 제거
- refactor(bundler): Phase 4e-2d-b — SymbolTable → AliasTable 축소 (#1338)
- refactor(bundler): Phase 4c-3b-α — ImportBinding.local_symbol 필드 추가 (#1328)
- chore(bundler): /simplify Phase 4e-2d-c 후속 — capture 이름 b → a 일관화
- refactor(bundler): Phase 4e-2d-c — SymbolRef.bundler → SymbolRef.alias rename (#1338)
- chore(bundler): /simplify Phase 4c-2 후속 — populateSymbolRefCounts 중복 제거
- refactor(bundler): Phase 4c-2 — populateImportSymbols + ib.symbol 소비 전환 (#1328)
- chore(bundler): /simplify Phase 4c-3 후속 — getCanonicalByRef expression switch
- refactor(bundler): Phase 4c-3 — getCanonicalByRef facade 도입 (#1328)
- refactor(bundler): Phase 4c-3c-3 — reader가 Symbol.canonical_name 우선 (#1328)
- refactor(bundler): Phase 4c-3c-2 — canonical_names writer mirror to Symbol (#1328)
- refactor(bundler): Phase 4c-3c-4a — synthetic 심볼 canonical_name mirror 보강 (#1328)
- chore(bundler): /simplify Phase 4c-4d 후속 — SymbolRef.semanticIndex 헬퍼 + 정리 (#1328)
- fix(bundler): export { default as X } from re-export 시 source 모듈 wrap 누락 (#1340)
- chore(bundler): /simplify #1340 후속 — helper 추출 + regex 정밀화
- refactor(transformer): visitExtraList 시그니처를 NodeList로 통일 (#1325)
- fix(shared): ES_TARGET_BITS / FEATURES 를 compat.zig 28-bit 레이아웃으로 동기화
PR (해당일 생성/머지)
(없음)