2026-06-02

요약 (AI 작성)

zntc 번들러/트랜스파일러를 대대적으로 다진 날입니다. 깊은 좌결합 이항 체인과 prefix 타입 연산자(keyof keyof…)에서 터지던 스택 오버플로우를 없애려 파서·트랜스포머·코드젠·private-mangler의 재귀 AST walker를 반복 순회로 바꾸고(#4123 PR-1~2c), 재귀 walker 재유입을 막는 CI tripwire까지 세웠습니다. 번들러는 cross-chunk 전역 네이밍으로 동명 export collapse·namespace re-export 충돌(#4101)과 CJS default/named interop(#4120)을 바로잡고, fan-out discovery dispatch를 batch-drain으로 amortize(#4003 회귀)했습니다. 여기에 cold/incremental 빌드 벤치마크 인프라(zntc vs esbuild vs rolldown)를 붙이고 GitHub Pages 차트로 실측을 공개했습니다. suji는 os-info·autostart 플러그인과 suji.config.ts 빌드 훅을, napi는 watch stop() use-after-free를 처리했습니다.

커밋

ohah/suji

ohah/zntc

PR (해당일 생성/머지)

repo#상태제목
ohah/zntc#4151mergedrefactor(codegen): emitNode↔emitExpr 통합 — 단일 expression 진입점 (#4042 PR4)
ohah/zntc#4150mergedtest(codegen): load-bearing 괄호 회귀 하네스 + semantic-equiv oracle (#4042 PR3)
ohah/zntc#4149mergedfeat(codegen): emitExpr(level,flags) 스캐폴드 + statement-start 필드 (#4042 PR2)
ohah/zntc#4148mergedfeat(codegen): precedence Level enum + 연산자 테이블 추가 (#4042 PR1)
ohah/zntc#4147mergedfix(napi): watch stop() use-after-free — async_data refcount 으로 free 레이스 제거
ohah/zntc#4145mergedfix(parser): #4142 깊은 prefix 타입연산자(keyof keyof…) 반복 파싱
ohah/zntc#4144mergedtest(bench): cold/incremental 비교에 100/1000-module fixture 추가
ohah/suji#67mergedfeat(config): suji.config.ts 빌드 훅 + 플랫폼별 빌드 + dev.env (mode/command 스레딩)
ohah/zntc#4143mergedfix(bench): 증분 rebuild 변동 안정화 — iteration 50 + 파일크기 일정(in-place)
ohah/zntc#4141mergedfix(transpile): #4123 마지막 6개 재귀 AST walker 반복화 (PR-2c)
ohah/zntc#4140mergeddocs(benchmarks): 증분 차트 설명에 median-of-runs 횟수 명시
ohah/zntc#4139mergeddocs(benchmarks): cold/증분 차트 수치를 최신 실측으로 갱신
ohah/zntc#4138mergeddocs(benchmarks): GitHub Pages 벤치에 cold build·증분 rebuild 차트 추가
ohah/zntc#4137mergedfeat(bench): in-process cold build 비교 추가 (zntc vs esbuild vs rolldown)
ohah/zntc#4136mergedfix(ast-walk): flag-gated 재귀 walker 4곳 반복 순회 — 깊은 이항 체인 (#4123 PR-2a, ex-#4128)
ohah/zntc#4135mergedfix(bench): inprocess 를 순수 incremental rebuild 비교로 재설계 (디바운스 제외)
ohah/zntc#4134mergedfeat(napi): watch 디바운스를 watchDelay 옵션으로 노출 (하드코딩 50ms 제거)
ohah/zntc#4133mergedci(audit): 신규 재귀 AST walker 재유입 차단 — durability tripwire (#4123)
ohah/zntc#4132mergedfix(bench): inprocess 가 esbuild 도 watch 경로로 측정하도록 공정화
ohah/zntc#4131mergedfix(private-mangler): collectPrivateNames/applyRenames 반복 순회 — 깊은 이항 체인 (#4123 PR-2b)
ohah/zntc#4130mergedfeat(cli): watch 폴링 간격을 --watch-delay 로 조절 (하드코딩 500ms 제거)
ohah/zntc#4129mergedfix(bench): incremental-rebuild 가 실제 사용자 CLI(JS)를 측정하도록 수정
ohah/zntc#4128closedfix(ast-walk): flag-gated 재귀 walker 4곳 반복 순회 — 깊은 이항 체인 (#4123 PR-2a)
ohah/zntc#4127mergedchore(bench): incremental/watch rebuild 벤치 추가 (ZNTC vs esbuild vs rolldown)
ohah/zntc#4126mergedchore: untrack stray .zig-cache-napi-win/ 빌드 캐시 + WIP benchmark 스크립트
ohah/zntc#4125mergedfix(bundler): CJS default/named 를 cross-chunk·동적 re-export 시 interop 바인딩 정합 materialize (#4120)
ohah/zntc#4124mergedfix(transformer,codegen,semantic): 깊은 좌결합 이항 체인 스택 오버플로우 반복 변환 (#4123 PR-1)
ohah/zntc#4122mergedci(benchmark): ubuntu 권위화 + esbuild/Bun 비율 기반 소프트 회귀 게이트
ohah/zntc#4121mergedperf(bundler): fan-out discovery dispatch 를 batch-drain 으로 — #4003 (Zig 0.16) bundle 회귀 회복
ohah/suji#66mergedfeat: os-info·autostart 플러그인 + 창 생명주기 SDK 패리티 + store values/entries (설계 조율)
ohah/zntc#4119mergedfix(bundler): namespace re-export collision — ns getter/멤버재작성을 cross-chunk 전역명으로 해석 (#4101)
ohah/zntc#4118mergedrefactor(bundler): cross-chunk export emit 을 owner-iterating 단일 루프로 통합 (#4101 follow-up)
ohah/zntc#4117mergedfix(bundler): production cross-chunk 전역 네이밍으로 동명 export collapse·divergence 해결 (#4101)
ohah/zntc#4116mergedfix(jsx): 값없는 key 속성(
)이 dev/automatic 런타임 positional 인자 시프트 수정