2026-05-20

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

요약 (AI 작성)

zntc는 빌드 결과가 바이트 단위로 같게 나오는지 10회 반복으로 검사하는 결정성 게이트와 CI job을 먼저 세우고(#3565), 모듈 인덱스 부여, mangler 후보 정렬, 이름 충돌 해결의 NameOwner 정렬, exec_index 동률 처리, emit 경로의 hashmap 순회, 치명적 진단 출력 순서를 모두 경로 기준의 안정된 순서로 바꿨습니다(#3566, #3567, #3568, #3569, #3570, #3571). 재번호 매김 때 SymbolRef.module을 다시 매핑하지 않아 생긴 모듈 간 심볼 해석 문제는 바로 hotfix했습니다(#3583).

이어 한 번의 빌드에서 여러 포맷을 내보내는 다중 포맷 출력을 쌓았습니다. 링커 메타데이터에 포맷을 전달하고 emit마다 상태를 초기화하는 진입점을 둔 뒤, OutputConfig와 BundleOptions.output 배열, 다중 포맷 emit 루프, 동등성·순서 불변·메모리 안전 게이트를 거쳐(#3576, #3577, #3578) rollup 방식의 zntc(input).write(output).close() API(#3579)와 esbuild 방식의 build 함수 output 배열 문법(#3585)을 추가했습니다. Module Federation과 다중 포맷을 함께 쓰는 설정은 거부하고(#3582), 공유 에셋 정책은 문서와 CSS 테스트로 정했습니다.

오후에는 증분 리빌드 측정 인프라를 만들고 M0부터 M8까지 단계별로 프로파일 구간을 쪼갠 뒤, export 이름 인덱스 사전 계산과 호출부 이전(#3593, #3594), re-export 진입의 스택 버퍼, RequestedExports.names의 HashMap을 평탄한 배열로 바꾸는 변경(#3599), 의존성 배열 용량 예약, 모듈 경로용 arena allocator(#3602)로 그래프 처리를 줄였습니다. 문서 사이트에는 /llms.txt·/llms-full.txt 엔드포인트와 Claude Code용 zntc-cli 스킬을 추가해 영어로 통일하고 간소화했습니다(#3604, #3605, #3606).

밤에는 RN 수정을 대거 묶은 ESM re-export getter PR(#3542)이 병합됐습니다. 여기에는 pnpm 심링크 모듈 정규화, Hermes용 미해결 dynamic import 낮추기, styled-components 처리의 Metro 정렬, scale 전용 에셋 해석, 엄격 순서에서 inline require 보존, throw 뒤 CJS factory 재시도, TSX generic JSX 속성 보존 등이 들어 있습니다. 헤드리스 Chromium으로 런타임을 확인하는 zntc verify --browser CLI(#3609)와 이를 에이전트가 부를 수 있는 verify_in_chrome MCP 도구(#3610), dev overlay 클라이언트의 .js 파일 분리(#3608), Electron 타깃별 config 예제 문서(#3563)도 병합됐습니다. 블로그 저장소 ohah.github.io의 커밋 14개는 크론의 문서 점검 표시와 요약 갱신 커밋입니다.

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

커밋

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#3610생성 · 병합mergedmainfeat(dev-server): verify_in_chrome MCP tool — agent-driven browser verify
ohah/zntc#3609생성 · 병합mergedmainfeat(core): zntc verify --browser CLI — headless Chromium runtime gate
ohah/zntc#3608생성 · 병합mergedmainrefactor(dev-server): extract Zig dev overlay client into @embedFile-backed .js
ohah/zntc#3607생성 · 병합mergedmaindocs(documents): zntc-cli skill — use @zntc/init for setup
ohah/zntc#3606생성 · 병합mergedmaindocs(documents): simplify zntc-cli skill (5 KB → 1.5 KB)
ohah/zntc#3605생성 · 병합mergedmaindocs(documents): make /llms.txt + /llms-full.txt + skill English-only
ohah/zntc#3604생성 · 병합mergedmaindocs(documents): LLM-friendly endpoints + Claude Code skill + 20-iter benchmark
ohah/zntc#3603생성 · 병합mergedmainchore(documents): refresh benchmark data 2026-05-21 (post-Z4)
ohah/zntc#3602생성 · 병합mergedmainfeat(graph): path arena allocator for module paths (Z4)
ohah/zntc#3601생성 · 병합mergedmainfeat(graph): ensureCapacity(8) for Module.dependencies/importers (Z3)
ohah/zntc#3600생성 · 병합mergedmainchore(profile): record_dep + add_module internal decomposition (M8)
ohah/zntc#3599생성 · 병합mergedmainfeat(graph): RequestedExports.names HashMap → flat array (Z2)
ohah/zntc#3598생성 · 병합mergedmainchore(profile): re_export entry 3-way decomposition (M7)
ohah/zntc#3597생성 · 병합mergedmainfeat(graph): stack buffer for requested_names in re_export entry (Z1)
ohah/zntc#3596생성 · 병합mergedmainchore(profile): re_export caller side entry/outer decomposition (M6)
ohah/zntc#3595생성 · 병합mergedmainchore(profile): requestNamed/All internals 4-way decomposition (M5)
ohah/zntc#3594생성 · 병합mergedmainfeat(graph): migrate request_exports callers to index lookup (Y2)
ohah/zntc#3593생성 · 병합mergedmainfeat(graph): export_index_by_name precompute (dormant Y1)
ohah/zntc#3592생성 · 병합mergedmainchore(profile): split requestDependencyExports into 3 branches (M4)
ohah/zntc#3591생성 · 병합mergedmainchore(profile): decompose replay into 4 sub-steps (M3)
ohah/zntc#3590생성 · 병합mergedmainchore(bench): sub-phase µs output for incremental bench (M2)
ohah/zntc#3589생성 · 병합mergedmainchore(profile): incremental rebuild sub-phase categories (M1)
ohah/zntc#3588생성 · 병합mergedmainchore(bench): production-realistic incremental rebuild measurement (M0)
ohah/zntc#3587생성 · 병합mergedmaindocs(roadmap): RN CLI/MCP 스코프를 빌드+실행+디버깅으로 확장
ohah/zntc#3586생성 · 병합mergedmainchore(bench): incremental rebuild measurement infra (ROI investigation)
ohah/zntc#3585생성 · 병합mergedmainfeat(core): esbuild-style build({output:[]}) sugar
ohah/zntc#3584생성 · 병합mergedmainfeat(emit): document multi-format shared-asset policy + CSS test gate
ohah/zntc#3583생성 · 병합mergedmainfix(graph): remap SymbolRef.module in renumber (cross-module resolution hotfix)
ohah/zntc#3582생성 · 병합mergedmainfeat(bundler): reject Module Federation + multi-format combination
ohah/zntc#3581생성 · 병합mergedmaintest(integration): rollup-style multi-format API smoke
ohah/zntc#3579생성 · 병합mergedmainfeat(core): rollup-style zntc(input).write(output).close() API
ohah/zntc#3578생성 · 병합mergedmaintest(bundler): multi-format equivalence + order invariance + memory safety gates
ohah/zntc#3577생성 · 병합mergedmainfeat(bundler): emit loop for multi-format (single path only)
ohah/zntc#3576생성 · 병합mergedmainfeat(bundler): OutputConfig + BundleOptions.output[] (infrastructure only)
ohah/zntc#3575생성 · 병합mergedmainfeat(linker): setEmitFormat + resetEmitTransients per-emit entry points
ohah/zntc#3574생성 · 병합mergedmainrefactor(linker): thread Format through metadata builders (no behavior change)
ohah/zntc#3573생성 · 병합mergedmaintest(infra): determinism gate code-splitting fixture — outdir 모드 helper 확장
ohah/zntc#3571생성 · 병합mergedmainfix(linker): stable-order fatal diagnostics flush
ohah/zntc#3570생성 · 병합mergedmainfix(emitter): sort emit-path hashmap iterators (esm-wrap star + chunk exports)
ohah/zntc#3569생성 · 병합mergedmainfix(bundler): path-stable bundleOrderLessThan for exec_index ties
ohah/zntc#3568생성 · 병합mergedmainfix(linker): path-stable NameOwner sort in name collision resolution
ohah/zntc#3567생성 · 병합mergedmainfeat(mangler): path-stable candidate tie-breaker for cross-module frequency sort
ohah/zntc#3566생성 · 병합mergedmainfix(graph): deterministic module index assignment via path-stable renumber
ohah/zntc#3565생성 · 병합mergedmaintest(infra): byte-identical determinism gate (N=10) — 5 fixture + helpers + CI job
ohah/zntc#3563병합mergedmaindocs(electron): zntc.config.ts 타깃별 config 파일 예제 추가
ohah/zntc#3542병합mergedmainfix(rn): ESM re-export getter source binding 사용