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
- chore: cron verify spelling (docs/monthly-opensource/hwpjs/development-3.mdx)
- docs: verify MDX file spelling - hwpjs/development-3.mdx
- docs: Update CRON_CRD_WRITE.md - verified hwpjs/development-2.mdx spelling (2026-05-24 05:30 KST)
- docs: update 2026-05-23 commit summary
- chore(cron): add 2026-05-23 20:00 UTC CRON task record for electron-mcp-server/development-1.mdx
- docs: CRON_CRD_WRITE.md - Add 2026-05-23 19:00 KST entry
- docs: CRON_CRD_WRITE.md - 2026-05-23 11:30 KST cron task completed
- chore: cron task - verify craby/development-3.mdx spelling (2026-05-23 09:00 UTC)
ohah/zntc
- ci: leak gate — configureProfile/transpile smoke + exit code 139 분기
- chore: 코드 주석 정리 + 출력 파일명 가이드 + runtime e2e (F5 시리즈 마무리)
- fix(bundler): renderChunk plugin chunk_name 을 실제 filename stem 과 동기 (F8 post-review)
- ci: leak gate workflow — atexit + tokenize smoke 추가 (SIGSEGV 위치 isolate)
- fix(bundler): Rollup parity — dynamic chunk → chunkNames + cross-chunk import path (F5 post-review)
- ci: leak gate workflow fail-fast + NAPI smoke test (진단 강화)
- ci: NAPI leak gate workflow — main push + nightly + dispatch (회귀 가드)
- docs: NAPI 누수 측정 가이드 (Debug GPA leak detector)
- fix(napi): dumpLeaksAtExit — deinit() → detectLeaks() + mutex.tryLock
- fix(napi): shrinkSlice OOM fallback inner-element leak — caller cleanup contract
- ci: zig build napi --cache-dir .zig-cache-napi 통일 (F3 post-review)
- fix(napi): DebugAllocator backing=c_allocator + backing_allocator_zeroes=false
- fix(graph): buildIncremental 가 user-set project_root 보존 + e2e 가드 (#65 follow-up)
- fix(napi): leak_dump_registered atomic 전환 — Node worker_threads race 차단
- fix(graph): buildIncremental entry_dir 강제 재계산 (#65)
- fix(napi): chunk.name leak — NapiManualChunksResolver dedup cache + cleanup
- fix(graph): buildIncremental entry_dir 재계산 — watch 모드 stale fix (#65)
- fix(build): separate .zig-cache-napi for build:napi script (#54)
- docs: entryNames/cssNames default
\[dir\]/\[name\]RFC + 마이그레이션 가이드 (PR B-4b sub-4) - test(fixtures): RN example app — sub-2 new default 반영 (PR B-4b sub-3)
- fix(bundler): chunkPlaceholderStem discriminator — manualChunks 는 chunk_names (PR B-4b sub-3)
- feat(bundler): default entry_names/css_names → [dir]/[name] (PR B-4b sub-2, breaking)
- feat(bundler): name_dir entry_dir-relative + MF manifest path 분리 (PR B-4b sub-1b)
- feat(bundler): cross-chunk import relative + chunks ArrayList refactor (PR B-4b-1)
- fix(napi): Bundler.init owned ResolveCache leak — defer deinit 3 사이트
- fix(napi): loader_overrides size-mismatch + valid_count==0 leak
- fix(napi): plugin_bridge JS result string OOB write
- feat(napi): debug-build leak detector — shared DebugAllocator + atexit dump
- fix(napi): NAPI string getter + sliced-result allocator size mismatch
- feat(bundler): chunkPlaceholderStem/cssPathForChunk 가 chunk.name_dir 활용 (PR B-4a)
- feat(bundler): sanitizeNameDir 정밀화 + CSS naming 가드 (PR B-3)
- feat(bundler): CSS applyCssChunkName 에 [dir] 토큰 지원 (PR B-2, F5 해소)
- feat(bundler): Chunk.name_dir 신규 필드 + sanitizeNameDir (PR B-1)
- feat(bundler): chunks 의 entry/chunk_names 에 [dir] 토큰 지원
- feat(bundler): 비-splitting CSS path 충돌 자동 disambiguate
- feat(bundler): CSS chunk path 충돌 자동 disambiguate (same-stem multi-entry)
- feat(bundler): CSS multi-owner replication for code splitting
- docs(roadmap): SIMD '추가 확장 여지' stale → ROI 0 확정 명시
- docs(rn_codegen): mod.zig 주석 stale 정리 — 모든 PR 완료 반영
- feat(cli): --intro:js / --outro:js + JSON config 노출 + splitting 모드 wrapper-내 emit
- fix(transformer): private 동반 시 field decorator silent drop 회귀 fix (#3680)
- fix(transformer): es2021+experimental-decorators 에서 class private member 다운레벨 (#3/#4)
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.