2026-05-23

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

요약 (AI 작성)

zntc는 데코레이터 변환 수정으로 하루를 열었습니다. es2021에서 experimental decorators를 쓸 때 class private 멤버를 다운레벨하고(#3679), private 멤버와 함께 쓴 field decorator가 조용히 사라지던 회귀를 고쳤습니다(#3681). private method 안의 super.x가 SyntaxError를 내던 문제의 수정 #3722도 이날 열렸습니다. CLI에는 --intro:js·--outro:js와 JSON config 노출, splitting 모드의 wrapper 안쪽 emit을 추가했습니다(#3682).

번들러 출력 파일 이름 체계는 크게 바뀌었습니다. 코드 분할에서 여러 chunk가 같은 CSS를 쓰면 복제하고, 같은 stem의 CSS 경로 충돌을 분할 여부와 관계없이 자동으로 구분하게 한 뒤(#3685, #3686, #3687), entry·chunk 이름 패턴에 [dir] 토큰을 지원하고 Chunk.name_dir 필드와 정규화 함수, CSS 이름 규칙, chunk 간 상대 import 경로, Module Federation manifest 경로 분리를 차례로 붙였습니다(#3688, #3689, #3697, #3698). 그 결과 entryNames·cssNames의 기본값을 [dir]/[name]으로 바꾸는 호환성 변경(#3699)이 들어갔고, RFC와 마이그레이션 가이드(#3702)를 함께 냈습니다. 리뷰 후속으로 dynamic chunk의 chunkNames 적용 등 Rollup 동작 맞춤(#3717)과 renderChunk 플러그인에 넘기는 chunk 이름을 실제 파일 이름과 맞추는 수정(#3719)이 이어졌습니다.

오후부터는 NAPI 메모리 문제를 집중적으로 다뤘습니다. 문자열 getter와 잘린 결과의 allocator 크기 불일치(#3691), loader_overrides 누수와 plugin bridge의 범위 밖 쓰기, Bundler.init의 ResolveCache 누수, manual chunks 이름 누수, shrinkSlice OOM 경로 누수를 고쳤고, 디버그 빌드용 누수 탐지기(#3695)를 넣은 뒤 Node worker_threads 경쟁과 atexit 시점 해제 후 사용 문제를 다듬었습니다(#3707, #3713). 측정 가이드 문서와 main push·nightly로 도는 NAPI 누수 게이트 워크플로(#3715)도 추가했습니다. watch 증분 빌드에서 entry_dir이 갱신되지 않던 문제와 사용자가 지정한 project_root를 덮어쓰던 문제도 고쳤습니다(#3704, #3708). 블로그 저장소 ohah.github.io의 커밋 8개는 크론의 문서 점검 표시와 요약 갱신 커밋입니다.

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

커밋

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#3722생성mergedmainfix(transformer): private method 내 super.x → SyntaxError 수정 (#3680)
ohah/zntc#3721생성 · 병합mergedmainci: leak gate — configureProfile/transpile smoke + exit code 139 분기
ohah/zntc#3720생성 · 병합mergedmainchore: 주석 정리 + 출력 파일명 가이드 + F5 runtime e2e
ohah/zntc#3719생성 · 병합mergedmainfix(bundler): renderChunk plugin chunk_name 을 실제 filename stem 과 동기 (F8 post-review)
ohah/zntc#3718생성 · 병합mergedmainci: leak gate atexit + tokenize smoke (SIGSEGV 위치 isolate)
ohah/zntc#3717생성 · 병합mergedmainfix(bundler): Rollup parity — dynamic chunk → chunkNames + cross-chunk import path (F5 post-review)
ohah/zntc#3716생성 · 병합mergedmainci: leak gate workflow fail-fast + NAPI smoke test (진단 강화)
ohah/zntc#3715생성 · 병합mergedmainci: NAPI leak gate workflow (main push + nightly + dispatch)
ohah/zntc#3714생성 · 병합mergedmaindocs: NAPI 누수 측정 가이드 (Debug GPA leak detector)
ohah/zntc#3713생성 · 병합mergedmainfix(napi): dumpLeaksAtExit — deinit() → detectLeaks() + mutex.tryLock (atexit UAF 회피)
ohah/zntc#3711생성 · 병합mergedmainfix(napi): shrinkSlice OOM fallback inner-element leak — caller cleanup contract
ohah/zntc#3710생성 · 병합mergedmainci: zig build napi --cache-dir .zig-cache-napi 통일 (F3 post-review)
ohah/zntc#3709생성 · 병합mergedmainfix(napi): DebugAllocator backing=c_allocator + backing_allocator_zeroes=false
ohah/zntc#3708생성 · 병합mergedmainfix(graph): buildIncremental 가 user-set project_root 보존 (#65 follow-up)
ohah/zntc#3707생성 · 병합mergedmainfix(napi): leak_dump_registered atomic 전환 — Node worker_threads race 차단
ohah/zntc#3706생성 · 병합mergedmainfix(graph): buildIncremental entry_dir 강제 재계산 (#65)
ohah/zntc#3705생성 · 병합mergedmainfix(napi): chunk.name leak — NapiManualChunksResolver dedup cache
ohah/zntc#3704생성 · 병합mergedmainfix(graph): buildIncremental entry_dir 재계산 — watch 모드 stale fix (#65)
ohah/zntc#3703생성 · 병합mergedmainfix(build): separate .zig-cache-napi for build:napi script (#54)
ohah/zntc#3702생성 · 병합mergedmaindocs: entryNames/cssNames default [dir]/[name] RFC + 마이그레이션 가이드 (PR B-4b sub-4)
ohah/zntc#3701생성 · 병합mergedmaintest(fixtures): RN example app — sub-2 새 default 반영 (PR B-4b sub-3)
ohah/zntc#3700생성 · 병합mergedmainfix(bundler): chunkPlaceholderStem discriminator — manualChunks 는 chunk_names (PR B-4b sub-3)
ohah/zntc#3699생성 · 병합mergedmainfeat(bundler): default entry_names/css_names → [dir]/[name] (PR B-4b sub-2, breaking)
ohah/zntc#3698생성 · 병합mergedmainfeat(bundler): name_dir entry_dir-relative + MF manifest path 분리 (PR B-4b sub-1b)
ohah/zntc#3697생성 · 병합mergedmainfeat(bundler): cross-chunk import relative + chunks ArrayList refactor (PR B-4b-1)
ohah/zntc#3696생성 · 병합mergedmainfix(napi): Bundler.init owned ResolveCache leak (Site #2)
ohah/zntc#3695생성 · 병합mergedmainfeat(napi): debug-build leak detector + plugin_bridge OOB + loader_overrides follow-up
ohah/zntc#3694생성 · 병합mergedmainfeat(bundler): chunkPlaceholderStem/cssPathForChunk 가 chunk.name_dir 활용 (PR B-4a)
ohah/zntc#3693생성closed기능 브랜치: fix/napi-string-leakfeat(napi): debug-build leak detector + plugin_bridge OOB follow-up
ohah/zntc#3692생성 · 병합mergedmainfeat(bundler): sanitizeNameDir 정밀화 + CSS naming 가드 + F1 double-free fix (PR B-3)
ohah/zntc#3691생성 · 병합mergedmainfix(napi): NAPI string getter + sliced-result allocator size mismatch
ohah/zntc#3690생성 · 병합mergedmainfeat(bundler): CSS applyCssChunkName 에 [dir] 토큰 지원 (PR B-2, F5 해소)
ohah/zntc#3689생성 · 병합mergedmainfeat(bundler): Chunk.name_dir 신규 필드 + sanitizeNameDir (PR B-1)
ohah/zntc#3688생성 · 병합mergedmainfeat(bundler): chunks 의 entry/chunk_names 에 [dir] 토큰 지원 (PR B 기술 토대)
ohah/zntc#3687생성 · 병합mergedmainfeat(bundler): 비-splitting CSS path 충돌 자동 disambiguate
ohah/zntc#3686생성 · 병합mergedmainfeat(bundler): CSS chunk path 충돌 자동 disambiguate (same-stem multi-entry)
ohah/zntc#3685생성 · 병합mergedmainfeat(bundler): CSS multi-owner replication for code splitting
ohah/zntc#3684생성 · 병합mergedmaindocs(roadmap): SIMD '추가 확장 여지' stale → BACKLOG 실측 ROI 0 명시
ohah/zntc#3683생성 · 병합mergedmaindocs(rn_codegen): mod.zig 주석 stale 정리
ohah/zntc#3682생성 · 병합mergedmainfeat(cli): --intro:js / --outro:js + JSON config 노출 + splitting wrapper-내 emit
ohah/zntc#3681생성 · 병합mergedmainfix(transformer): private 동반 시 field decorator silent drop 회귀 fix
ohah/zntc#3679생성 · 병합mergedmainfix(transformer): es2021+experimental-decorators 에서 class private member 다운레벨