2026-04-21

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

요약 (AI 작성)

zntc는 bungae 실측에서 드러난 HMR 재빌드 문제를 먼저 고쳤습니다. 캐시된 모듈의 alias table 소유권을 넘기며 double-free와 use-after-free를 막고(#1682), 재파싱되지 않은 React 내부 모듈이 HMR 업데이트에 끼던 문제, 재빌드 때 캐시된 참조 횟수와 canonical 이름이 오염되던 문제, 가상 모듈 경로의 mtime 조회를 바로잡은 뒤 회귀 테스트를 붙였습니다(#1683). 디버그·안전 빌드용 -Dnapi-optimize와 카테고리별로 켜는 디버그 로그(#1685)도 추가했습니다.

transformer 재설계 epic은 바뀌지 않은 모듈의 emit 결과를 재사용하는 compiled output cache(#1674)를 NAPI watch와 첫 빌드에도 연결했고(#1686, #1687), 바뀌지 않은 노드는 복제하지 않고 그대로 돌려주게 했습니다(#1689). AST 수명 디버그 인프라를 깔고 transformer가 파서 AST를 제자리에서 바꾸는 단계(#1690~#1695)를 병합했지만, 같은 AST로 두 번째 HMR 재빌드를 할 때 범위를 벗어나는 문제가 생겨 in-place 변경 부분은 되돌렸습니다(#1700). HMR은 dev 모드에서 minify 패스를 건너뛰고 감지 debounce를 25ms로 줄였습니다(#1698, #1701).

후반에는 profile·benchmark 인프라를 설계 문서(#1702)대로 하루 만에 올렸습니다. 기반 모듈과 CLI·NAPI·환경 변수 진입점 통합(기존 --timing 제거), parse·semantic·graph·transform·codegen·metadata 단계 타이머, --stop-after=<phase> 조기 종료, 통계를 내는 zts bench 서브커맨드와 NAPI benchmark(), HMR 세부 단계 시간, 문서와 CLI·NAPI parity 테스트까지 이어졌습니다(#1703, #1704, #1706~#1713). 이 밖에 한 번만 읽히는 상수 인라인(#1696), oxc식 엄격한 순수 빌트인 생성자 목록(#1697), ESM 래핑 모듈이 CJS에서 가져온 named import를 이름 충돌 대상에서 빼는 수정(#1699)이 들어갔습니다.

ohah.github.io에는 맞춤법 크론이 월간 오픈소스 문서 여러 편(craby, react-native-mcp, react-wasm-table 등)의 오탈자를 고치고 검사 완료를 표시한 커밋, 4월 20일 오늘의 커밋 요약이 올라왔습니다.

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

커밋

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#1713생성 · 병합mergedmaindocs(profile): 문서 + CLI↔NAPI parity 테스트 — #1672 D2 epic 마무리 (PR 10+11)
ohah/zntc#1712생성 · 병합mergedmainfeat(profile): HMR phaseDurations sub-phase + rebuild counters reset (#1672 D2 PR 9)
ohah/zntc#1711생성 · 병합mergedmainfeat(profile): Linker metadata timer 삽입 (#1672 D2 PR 8)
ohah/zntc#1710생성 · 병합mergedmainfeat(profile): Transformer/Codegen timer 삽입 (#1672 D2 PR 7)
ohah/zntc#1709생성 · 병합mergedmainfeat(profile): Semantic/Graph/Bundler timer 삽입 (#1672 D2 PR 6)
ohah/zntc#1708생성 · 병합mergedmainfeat(profile): zts bench 서브커맨드 + NAPI benchmark() API (#1672 D2 PR 5)
ohah/zntc#1707생성 · 병합mergedmainfeat(profile): --stop-after=<phase> 파이프라인 조기 종료 (#1672 D2 PR 4)
ohah/zntc#1706생성 · 병합mergedmainfeat(profile): Parser .parse phase timer — 첫 hot-path 측정 (#1672 D2 PR 3)
ohah/zntc#1705생성closed기능 브랜치: feat/profile-cli-napi-env-entryfeat(profile): Parser .parse phase timer — 첫 hot-path 측정 (#1672 D2 PR 3)
ohah/zntc#1704생성 · 병합mergedmainfeat(profile): CLI/NAPI/env 진입점 통합 + --timing 제거 (#1672 D2 PR 2)
ohah/zntc#1703생성 · 병합mergedmainfeat(profile): profile/benchmark infrastructure base module
ohah/zntc#1702생성 · 병합mergedmaindocs(design): profile & benchmark infrastructure design
ohah/zntc#1701생성 · 병합mergedmainperf(hmr): detect debounce 25ms + emit dev-mode skip — HMR -25ms
ohah/zntc#1700생성 · 병합mergedmainrevert(transformer): #1672 D1b-2/D1c — HMR rebuild OOB + guard tests
ohah/zntc#1699생성 · 병합mergedmainfix(linker): exclude CJS-in-ESM named imports from name-collision owners
ohah/zntc#1698생성 · 병합mergedmainperf(bundler): dev_mode 에서 minify pass skip — HMR rebuild -14%
ohah/zntc#1697생성 · 병합mergedmainperf(bundler): #1567 refine — oxc-style strict whitelist + Error Symbol safety
ohah/zntc#1696생성 · 병합mergedmainperf(minifier): #1666 Phase 2+3 — single-use constant inline
ohah/zntc#1695생성 · 병합mergedmaintest(transformer): initInPlace 4종 유닛 테스트 추가 (RFC #1672 D1b-2/D1c 검증)
ohah/zntc#1694생성 · 병합mergedmainrefactor(bundler): #1672 Phase D1c — splitting 경로도 in-place + AstHandling enum 정리
ohah/zntc#1693생성 · 병합mergedmainfeat(transformer): #1672 Phase D1b-2 — single-bundle in-place mutation
ohah/zntc#1692생성 · 병합mergedmainrefactor(transformer): #1672 Phase D1b-1 — Transformer.ast 를 *Ast 포인터로 전환
ohah/zntc#1691생성 · 병합mergedmainfeat(transformer): #1672 Phase D1a — boundary/root fields 활성화 (clone 경로)
ohah/zntc#1690생성 · 병합mergedmainfeat(debug): AST lifetime 디버그 인프라 — D1 재개 준비
ohah/zntc#1689생성 · 병합mergedmainperf(transformer): #1672 Phase C2a — copyNodeDirect identity 반환
ohah/zntc#1687생성 · 병합mergedmainperf(bundler): #1672 Phase B3 — first-build compiled_cache reuse
ohah/zntc#1686생성 · 병합mergedmainperf(napi): wire compiled_cache into NAPI watch worker
ohah/zntc#1685생성 · 병합mergedmainfeat(log): category-toggleable debug log infrastructure
ohah/zntc#1684생성closedmainfix(bundler): remove compiled_cache debug print noise
ohah/zntc#1683생성 · 병합mergedmaintest(bundler): regression coverage for #1682 HMR fixes
ohah/zntc#1682병합mergedmainfix(bundler): HMR alias_table ownership transfer (malloc abort)
ohah/zntc#1674병합mergedmainperf(bundler): #1672 Phase B2 — compiled output cache