2026-05-16

요약 (AI 작성)

오늘은 suji 모바일 백엔드와 zntc 번들러 code splitting이 두 축이었다. suji에서는 CEF 무관 embed C ABI 분리(Phase 1+2)를 머지하고, iOS/Android 언어별 예제 구조(_shared 호스트 + multi/rust/go/zig 변형)를 정적 링크로 완성했으며, suji_core_last_error() 진단 게터, Windows dlopen 백엔드(kernel32 직접 래핑), 시뮬레이터·에뮬레이터 실빌드/구동 검증 하니스와 회귀 방지 CI job을 추가했다. zntc에서는 #3321 P3 시리즈로 IIFE/UMD/AMD code splitting을 본격 구현 — P3-A preserve-modules + CJS 출력, P3-B 런타임 레지스트리 + 안정 모듈 ID, P3-C dead 레지스트리 제거, IIFE 동적 로더 비-DOM 폴백(worker/Deno/Node-ESM) 및 CSP nonce 지원을 더했다. 또한 cross-chunk namespace re-export 미바인딩, same-chunk 동적 import 미재작성(ERR_MODULE_NOT_FOUND), tree-shaker 중첩 ns re-export 체인 over-elimination, linker all-scope 1-char identifier shadow 등 다수의 번들러 버그를 근본 수정하고, private-field helper의 minify 시 메시지 축약 등 런타임 최적화를 진행했다.

커밋

ohah/ohah.github.io

ohah/suji

PR (해당일 생성/머지)

repo#상태제목
ohah/zntc#3371mergedfix(tree-shaker): 중첩 ns re-export 체인 모듈 over-elimination (#3368)
ohah/zntc#3370mergedfeat(linker): ESM wrapper-barrel default import scope-aware member 분석 (정밀 lazy 선행 PR-1)
ohah/zntc#3369mergedfix(bundler): splitting 단일/같은 청크 namespace whole-value 미합성 (#3367)
ohah/zntc#3366mergedfix(bundler): cross-chunk namespace re-export 미바인딩 (#3321 후속)
ohah/zntc#3365mergedRN HMR Refresh 심볼 바인딩 보존
ohah/zntc#3364mergeddocs(bundler): cross-chunk namespace re-export 한계 정밀 규명 + 추적 테스트 (#3321)
ohah/zntc#3363mergedrefactor(bundler): P3-C — dead PR1 레지스트리 코어 제거, 단일 canonical 화 (MF 선행, #3321)
ohah/zntc#3362mergedtest(smoke): 함수참조/비결정 entry 를 값·동작 기반으로 교체 (false-positive DIFF 제거)
ohah/zntc#3361mergedtest(bundler): RSC 디렉티브 × iife/umd-split 회귀 가드 + PR4 잔여 스코프 확정 (#3321)
ohah/zntc#3359mergedfeat(bundler): sideEffects:false 모듈 top-level 멤버대입 member-augment 귀속
ohah/zntc#3358mergedfeat(bundler): IIFE/UMD 동적 로더 CSP nonce 지원 (PR4, #3321)
ohah/zntc#3357mergedfeat(bundler): UMD/AMD code splitting (PR4, #3321)
ohah/zntc#3356mergedrefactor(test): IIFE 드라이버 헬퍼 writeIifeDriver 공용화 (#3321)
ohah/zntc#3355mergedfeat(bundler): IIFE 동적 로더 비-DOM 폴백 (worker/Deno/Node-ESM) (PR4, #3321)
ohah/zntc#3354mergedfix(bundler): export * from cross-chunk re-export 미바인딩 (#3321 후속)
ohah/zntc#3353mergedfix(bundler): same-chunk 동적 import 미재작성 → ERR_MODULE_NOT_FOUND (#3321 후속)
ohah/zntc#3352mergedfix(linker): reserve all-scope 1-char identifiers in Phase A (cross-module shadow)
ohah/zntc#3351mergedfix(bundler): ESM 동적-entry 청크 Duplicate export SyntaxError (PR4, #3321)
ohah/zntc#3350mergedfix(bundler): cross-chunk re-export 심볼 미바인딩 (#3321 후속)
ohah/zntc#3349mergedfeat(bundler): P3-B IIFE code splitting — 런타임 레지스트리 활성화 (#3321)
ohah/agent-devtools#8mergedfeat: agent-browser 패리티 REAL GAP 13건 보강
ohah/zntc#3348mergedperf(runtime): terse TypeError messages in minified private-field helpers
ohah/zntc#3347mergedperf(transformer): compact private-field postfix update in statement context
ohah/zntc#3346mergedfeat(bundler): P3-B CJS code splitting emit 연결 (#3321)
ohah/zntc#3345mergedfix(rn): preserve release runtime initialization order
ohah/zntc#3344mergedfeat(bundler): P3-B 레지스트리 런타임 + 안정 모듈 ID 하위 인프라 (#3321)
ohah/zntc#3343mergedfeat(bundler): preserve-modules + CJS output (P3-A, #3321)
ohah/zntc#3342mergedchore(mangler): remove refuted c2/M2 dead infra (RFC #3288)
ohah/zntc#3341mergeddocs(rfc): CJS/IIFE code splitting (P3) design — integrated with MF registry
ohah/zntc#3340mergedtest(bundler): edge-case hardening for #3321 + document css_names limit
ohah/zntc#3339mergedfeat(mangler): global-freq-rank-aware Phase B slot ordering (RFC #3288 M2 PR-2)
ohah/zntc#3338mergedfeat(mangler): bundle-wide frequency-rank infra for M2 slot-pool sharing (RFC #3288 M2 PR-1)
ohah/zntc#3337mergedfix(bundler): inline @import'd CSS per chunk across split chunks (P0-4)
ohah/zntc#3336mergedfeat(bundler): warn on non-literal dynamic import() specifier (P1)
ohah/agent-devtools#7mergedfeat: agent-browser 패리티 갭 보강 (7개)
ohah/zntc#3335mergedfeat(mangler): reference-precise liveness option for top-level slot sharing (RFC #3288 c2 infra)
ohah/zntc#3334mergeddocs(bundler): document literal-only dynamic import policy + minChunkSize
ohah/zntc#3333mergedfeat(bundler): minChunkSize — merge tiny common chunks (P2)
ohah/zntc#3332mergedfix(linker): broadcast namespace-import member sources to per_mod_reserved (RFC #3288)
ohah/zntc#3331mergedfix(bundler): collect CSS through tree-shaken proxy modules (#3330)
ohah/zntc#3329mergedfix(bundler): don't force content hash into chunk CSS names
ohah/zntc#3328mergedfix(linker): broadcast .alias re-export source to per_mod_reserved (RFC #3288 b)
ohah/zntc#3327mergedchore(mangler): collision invariant assert for RFC #3288 (PR a, safety net)
ohah/zntc#3326mergedtest(e2e): runtime CSS injection for dynamic chunks
ohah/agent-devtools#6mergedchore: bump version to 0.1.2
ohah/zntc#3325mergedfeat(bundler): inject runtime CSS for dynamic chunks
ohah/agent-devtools#5mergedfix(ci): Windows recvLineAlloc 테스트 컴파일 실패 수정
ohah/zntc#3324mergedrefactor(bundler): extract planCssChunks from emitCssChunks
ohah/agent-devtools#4mergeddocs: 스킬 설명에 0.27 + React 명령 동기화
ohah/agent-devtools#3mergedfix: E2E 검증으로 발견한 cookies/vitals 버그 수정