1. 개발 배경과 동기

시작: "100분 토론방"에서 태어난 프로젝트

2026년 3월 18일 오후 5시 19분(KST). /Documents/Conversation 폴더에서 열린 "100분 토론방" 세션. 가벼운 토론을 위한 공간이었지만, 이날의 대화는 8시간짜리 마라톤이 됐다.

"zig로 swc 같은걸 만들면 어떤 이득이 있을까요?" — 최초의 질문 (08:24 UTC)

"그냥 새로 만들어보고 싶어서 공부용이긴 하지만 그래도 프로덕션 레벨을 고민하면서" — 동기 설명 (08:25 UTC)

이 두 마디에 프로젝트의 본질이 담겨 있다. 공부용이지만 프로덕션 레벨. 이 모순적인 목표가 ZTS의 정체성이 됐다.

질문은 빠르게 구체화됐다:

"Bun의 JS파서는 공개야?" "그리고 그렇게 했을때 속도는 얼마나, 안정성은 얼마나 장단점을 가질 수 있을까?" "설계를 어떻게 해야 oxc보다 앞설 수 있죠? 번은 앞서나요?" — (08:30 UTC) 성능 목표 설정

그리고 Test262를 처음 알게 됐다:

"그리고 TEST262가 뭐야?" — (08:42 UTC)

이 세션에서 나온 핵심 결정들:

  • Zig 언어 선택
  • TS 5.8까지 전체 지원, 타입 체크는 안 함
  • Test262로 파서 정합성 검증
  • React Native 번들러로의 확장 목표: "React Native도 목표라 Flow 지원 하고 싶어" (10:12 UTC)
  • 번들러 비전: "추후 번들러까지 확장할 생각이긴 한데" (09:49 UTC)

레퍼런스 프로젝트 클론도 이 세션에서 시작됐다:

"esbuild도 클론 해주세요" — oxc, Bun, SWC, esbuild, Hermes, Metro를 한꺼번에 클론

워크플로우 확립도 이 세션:

"순차적으로 각각 최대한 나눠서 서브에이전트로 진행해서 PR 올리고 /simplify 진행해서 리뷰하고 코드 품질 점검하고 이거 룰에 적어주세요" — (10:46 UTC)

"그리고 진행하다 의사결정이 필요하면 반드시 물어본다를 메모리에 넣어줄 수 있나요?" — (09:42 UTC)

그리고 이 세션 안에서 프로젝트 생성 + Phase 1 렉서 완성 + Phase 2 파서 대부분 완성까지 진행됐다.

세션의 마지막 메시지:

"메모리가 지금 어디에 저장되어있는거야? 지금 내가 컨버스테이션 폴더에서 실행해서.. zts로 가도 이어지는거?" — (16:13 UTC)

이때 /Documents/workspace/zts로 이동하면서 다음 세션이 시작됐다.

학습 프로젝트이자 실용 프로젝트

ZTS(Zig TypeScript Transpiler)는 처음부터 학습과 실용 두 가지 목표를 동시에 추구했다:

  1. Zig 언어 학습 — 실제 프로덕션 급 프로젝트를 만들면서 언어를 익히기
  2. 트랜스파일러/번들러의 내부 구조 이해 — esbuild, oxc, SWC가 어떻게 동작하는지 직접 구현하면서 파악
  3. React Native 번들러 가능성 — 궁극적으로 Metro를 대체할 수 있는 고성능 번들러로 발전

이후 세션에서도 이 방향성은 반복 확인됐다:

"나중에 react-native도 지원 계획이라, strictExecutionOrder를 제공하려면 고민해야할 부분이 뭘까요" — 3/21 세션 "근데 메트로는 CJS 순서 보장 중요한데 ESM에서 그걸 가능하게 하는 옵션이 있었던거 같은데" — 3/21 세션

"빠른 완성"보다 "올바른 구조"를 선택했다:

"간단한 해결책보다 구조적으로 안정된 방법을 선호" — 메모리 시스템 기록

"C로 가자 이런건 좀 크더라도 유지보수나 안정성을 생각해야해" — 3/19 RegExp 설계 결정 시

성능에 대한 집착

학습 프로젝트이지만 성능에 대한 욕심도 분명했다. 3월 18일 첫 세션에서부터:

"난 OXC보다 빨랐으면 좋겠는데 너무 양보하면 안되는데" — Phase 3 트랜스포머 전략 결정 시

"근데 bun에는 지나?" — 24바이트 AST 노드 결정 시

이 두 가지 상반된 목표 — 안정성/유지보수성 우선 vs oxc/Bun 수준의 성능 — 는 프로젝트 전체를 관통하는 긴장이었다. 매 의사결정마다 이 두 축 사이에서 균형을 찾아야 했다.

레퍼런스 프로젝트들

처음부터 혼자 설계한 것은 아니다. 12개의 레퍼런스 프로젝트를 로컬에 클론해두고, 구현 방향이 갈릴 때마다 참조했다:

프로젝트언어참고 영역
oxcRust파서 구조, 트랜스포머, AST 설계 (가장 많이 참고)
BunZig렉서 SIMD, 메모리 전략, Zig 패턴
esbuildGo번들러 아키텍처, 모듈 해석, 설정 체계
SWCRust전체 기능 범위, Flow 지원
HermesC++Flow 파서 임베딩 소스
RollupJStree-shaking 원조, scope hoisting
RolldownRustRollup 호환 번들러, Vite 통합
ViteJS개발 서버, HMR, 플러그인 API
webpackJScode splitting, 플러그인 시스템, HMR
rspackRustWebpack 호환, CSS 처리
TurbopackRust증분 컴파일, 캐싱 전략
BabelJS플러그인 시스템, 스펙 추종

핵심 원칙은 3/19 세션에서 확립됐다:

"그리고 구현 방법이 여러가지라면 왠만하면 oxc 따라줘" — 3/19, 이후 프로젝트 전체 원칙으로 자리잡음

매번 구현 방향이 갈릴 때마다 "oxc는 어떻게 하는데?", "esbuild는?", "rolldown은?" 하고 물어보는 패턴이 반복됐다. 이것은 단순한 참조가 아니라, 각 프로젝트가 왜 그런 선택을 했는지까지 이해하려는 시도였다.

Claude Code와의 협업 — 프로젝트의 핵심 특성

ZTS 개발의 가장 독특한 점은 Claude Code(AI 어시스턴트)와 전 과정을 함께 진행했다는 것이다. 단순히 코드를 생성하는 수준이 아니라, 아키텍처 설계부터 의사결정, 코드 리뷰, 버그 추적까지 전 과정이 대화를 통해 이루어졌다.

실제 대화 패턴을 보면:

의사결정 시 — 항상 선택지를 먼저 요구

"트랜스포머 전략은 어느게 낫다고 생각해? 각 장단점 설명해줘" — 3/18 "51. B / 52. B / 53. 은 추천대로 / 54. A / 55. A 로 갈건데 나머지 옵션이나 이런것도 일단 진행전에 다 장단점 좀 더 자세히 설명해줘" — 3/19 semantic analysis 설계

구현 중 — /simplify 리뷰를 절대 빠뜨리지 않음

"아니 멈추고 PR 올리고 /simplify 진행하고 계속 이어서 가시죠" — 3/19 "/simplify 한거야?" — 여러 세션에서 반복적으로 확인

방향이 흐려질 때 — 다른 프로젝트 비교 요청

"oxc나 swc, esbuild, babel 등은 어떻게 하는지?" — 3/20 "rolldown은? rspack은?" — 3/23

메모리 시스템을 통한 연속성

38개 세션에 걸쳐 작업하면서, 이전 세션의 맥락을 유지하는 것이 핵심이었다. 세션이 끝날 때마다:

"메모리에 저장했어? 새로운 세션에서 진행하게" — 3/19 "다음에 뭐라고 말하면 되지?" — 3/19

이런 패턴으로 프로젝트 상태, 다음 작업 우선순위, 미결정 사항을 메모리에 기록하고, 다음 세션에서 이어갔다.

프로젝트 타임라인 한눈에 보기

3/18 ████████ Phase 1~5 완주 — 48 커밋, 첫날에 렉서→파서→트랜스포머→코드젠→CLI
3/19 ████████████████ Semantic Analysis + Test262 65.6% — 138 커밋
3/20 ██████████████ RegExp 풀 파서 + Cover Grammar + Test262 100% — 123 커밋 (14 세션!)
3/21 █████████ Zig 0.15.2 업그레이드 + 번들러 B1 — 81 커밋, D056~D082 의사결정
3/22 █████████ tree-shaking + HMR dev server + Bun 모노레포 — 83 커밋
3/23 ██████████████ 스모크 테스트 5→47개 + CJS/ESM 상호운용 — 123 커밋
3/24 ██████████ 적합성 9.5%→58.8% + Test262 100% 유지 — 90 커밋
3/25 ██████ 적합성 74.1% + SIMD + 병렬 파싱 + 런타임 에러 전해소 — 55 커밋
3/26 █████████ statement shaker + ES 다운레벨링 시작 — 81 커밋
3/27 █████ tree-shaker 2단계 + StmtInfo + CJS→ESM Interop — 50 커밋
3/28 ███ 배치 A~C (alias, banner, content hash, asset 로더) — 32 커밋
3/29 ████████ 소스맵 정확도 + inotify + 증분 빌드 — 68 커밋
3/30 █████████ 플러그인 API + Flow 파서 + config + watch — 74 커밋
3/31 ██████████████ RN resolve + 엔진 타겟 + scan 파이프라인 — 116 커밋
4/01 ██ emit 병렬화 + resolve 병렬화 — 21 커밋
4/02 ████ fixpoint 수정 + Producer-Consumer + jsx-dev — 48 커밋
4/03 ███████ 증분 빌드 + watch-json + 성능 최적화 — 61 커밋
4/04 ██████ RN 플랫폼 + Hermes 호환 + global-identifier — 58 커밋
4/05 █████ JSX 리팩터링 + Rolldown 런타임 + 소스맵 번들 — 41 커밋
4/06 ██████ block scoping + ES5 완성 + AST 통합 — 57 커밋
4/07 █ kangax 99% + SWC 비교 CI — 11 커밋
─── 3-11 ~ 3-14 (실전 대응 16일) ───
4/08 ███ RN HMR 재설계 + dev 엔진 프로덕션 통합 — 31 커밋
4/09 █ 모노레포 HMR 복구 + DevLoadingView + 소스맵 2종 — 13 커밋
4/10 ███ 플러그인 stdio → bun:ffi → C NAPI 전환 — 32 커밋
4/11 ███ Stage 3 decorator(TS) + UMD/AMD + HTTPS dev — 28 커밋
4/12 ██ 스모크 CI 확장 + Reanimated 워클렛 해시 추적 — 21 커밋
4/13 ███ 워클렛 Phase 6 + 드래그 근본 수정 + RSC directive — 32 커밋
4/14 ████ ESTree 어댑터 채택 + function params 정규화 — 37 커밋
4/15 ████ Symbol Table SoA + Bun 스타일 crash report — 36 커밋
4/16 █ "zts vs 번개" 경계 확정 + Metro API 감사 — 6 커밋
4/17 ██ 친절한 에러(miette급) + 근본 수정 CLAUDE 규칙 — 19 커밋
4/18 ██ tree_shaker 리팩터 + tsconfig paths + Svelte 에픽 — 18 커밋
4/19 ██ References RFC #1634 PR1~4 머지 — 21 커밋
4/20 ██ test262 162 복구 + oxc 스타일 AST RFC #1672 승인 — 22 커밋
4/21 ████ transformer epic + debug infra + HMR 병목 분해 — 39 커밋
4/22 ███ HMR #1727: lazy sourcemap + mtime cache + profile 계층화 — 26 커밋
4/23 ████ ModuleGraph accessor + require.context + single mangler — 34 커밋
─── 3-15 ("프로덕션이라는 말", 4/24~4/30) ───
4/24 █████ type-only elision 근본수정 + AST cosmetic refactor + 문서 사이트 Astro 개편 — 57 커밋
4/25 █████████ manualChunks parity 64→93% + WASM 번들러 #1885 + 스모크 폭격 — 102 커밋
4/26 ███████ Codex 등판 + runtime-helper virtual module + ES5 헬퍼 null-prefix 근본수정 — 76 커밋
4/27 ███ smoke 회귀 추적 + tree-shaking/DCE refinement — 34 커밋
4/28 ████████ config 시스템(.env/--mode/extends/workspace) + CJS DCE + "프로덕션 부족분" 첫 점검 — 91 커밋
4/29 ████████ 옵션 갭 메우기 + IIFE 디폴트 제거 + Vite app builder + zts-codex 별도 클론 분리 — 90 커밋
4/30 ████████ emotion/styled-components 트랜스포머 정식 스펙 parity — 93 커밋
─── 3-16 (binding-lite·패키지 분리·이름 변경, 5/1~5/7) ───
5/01 █████ tsconfigRaw esbuild-style + binding-lite POC 시작 + napi! strict throw — 58 커밋
5/02 ███████ binding-lite Phase 2/3 + 메모리 오염 근본수정(#raw-require / 0xAA UAF ×12) — 73 커밋
5/03 ███████ stack-overflow hardening(스택버퍼→ArrayList) + numeric const folding + AST intern-map — 71 커밋
5/04 ████ RN codegen rn-0.78~0.84 매트릭스 + "Flow도 ts처럼" + core-js 자동 폴리필 + dev 에러 오버레이 — 43 커밋
5/05 █████ @zntc/* 모노레포 분리 대설계 + BoringSSL dev TLS + 번개 폐기 결정 — 57 커밋
5/06 ██████ 번개 RN 데브서버 전수 이관 + 이름 변경 결정(zts→…→zntc) — 64 커밋
5/07 ███ ★ zts → zntc 리네임(687 파일) + 헤르메스 다운레벨 정책 + parse_arena panic 수정 + HMR 113→89ms — 36 커밋
─── 3-17 (0.1.0을 향해, 5/8~5/12) ───
5/08 ████ plugin 시스템 통일 + 대규모 파일 분리 시작 + test262 OS 불일치 디버그 — 40 커밋
5/09 ████████████████ ★ 최다 커밋 — publish-readiness + TS Project References + 파일 분리 ~100 — 161 커밋
5/10 █████████ 9-platform prebuilt NAPI 매트릭스 + react-refresh + 배포 파이프라인(OIDC) — 89 커밋
5/11 █████████ 0.1.0 publish prep + MetafileAnalyzer + 문서 사이트 대보강 + 대형 번들 프로파일링 — 88 커밋
5/12 █ e2e compat matrix(39 libs) + JSX scope isolation #3068 + webpack 갭(오전까지) — 14 커밋
5/13~    →→→→→→→→ 계속 진행 중

git log 기준 누적 — 4/7까지 ~1,440개, 4/23까지 2,330개, 그리고 4/245/12의 19일 동안 ~1,340개가 더해져 5/12 시점 누적 약 3,670개 커밋(5/9 하루 161개 — 단일 날짜 최다). 그리고 여전히 진행 중이다 — 5/12 시점은 zntc 0.1.0 배포 직전(실제 npm publish는 아직). 자세한 흐름은 3-11. Metro 동등성 — RN HMR 재설계3-14. RFC 시리즈3-15. "프로덕션이라는 말"3-16. binding-lite·패키지 분리·이름 변경3-17. 0.1.0을 향해 편에서 다룬다.

이름이 바뀌었다: 2026-05-07 15:40 KST, 배포를 준비하다 npm org @zts가 이미 선점돼 있다는 걸 발견하고 프로젝트 이름을 zts에서 zntc("Zig Native Transpiler Compiler")로 변경했다(687 파일 한 커밋). 이 문서들은 초기 명칭 "ZTS"를 그대로 두지만, 5/7 이후의 저장소·패키지·문서 사이트는 모두 zntc다.

OpenAI Codex 병행: 4/26부터 Claude Code(zts/zntc 폴더)와 OpenAI Codex CLI(zts-codex 별도 클론, 같은 origin remote)를 병행했다. 두 AI가 같은 GitHub 이슈/PR 풀을 공유하며 갈라져 작업하는 구도. 회고는 3-17 끝에 둔다.

작업 강도 — 거의 24시간 쉬지 않고

커밋 시간대를 분석하면, 하루 중 모든 시간에 커밋이 존재한다. 가장 적은 시간대(새벽 5시)에도 6개의 커밋이 있다.

시간별 커밋 분포 (KST):
00시  35  ███████████
01시  35  ███████████
02시  44  ██████████████
03시  24  ████████
04시  14  ████
05시   6  ██         ← 가장 적은 시간대
06시   7  ██
07시  10  ███
...
19시  51  █████████████████
20시  58  ███████████████████  ← 가장 많은 시간대

일별 작업 시간:

날짜작업 시간커밋속도특이사항
3/1818:30~23:51 (5.4h)489.0/h첫날 — 가장 빠른 속도
3/1900:09~22:05 (21.9h)1386.3/h거의 22시간 연속
3/2000:25~23:58 (23.6h)1235.2/h거의 24시간 연속!
3/2100:02~22:21 (22.3h)813.6/h번들러 설계 논의
3/2200:55~23:49 (22.9h)833.6/h
3/2300:07~23:49 (23.7h)1235.2/h거의 24시간 연속!
3/2402:03~22:49 (20.8h)904.3/h
3/2505:10~23:32 (18.4h)553.0/h
3/2600:29~21:58 (21.5h)813.8/hstatement shaker + ES 다운레벨링
3/2702:30~23:30 (21.0h)502.4/htree-shaker 2단계
3/2801:48~22:38 (20.8h)321.5/h배치 A~C 일괄
3/2900:05~23:20 (23.3h)682.9/h소스맵 + inotify
3/3000:01~21:16 (21.3h)743.5/h플러그인 + Flow
3/3101:03~23:45 (22.7h)1165.1/hRN resolve + 엔진 타겟
4/0121
4/0203:03~21:40 (18.6h)482.6/h
4/0300:58~20:35 (19.6h)613.1/h
4/0400:07~22:28 (22.4h)582.6/hRN 플랫폼
4/0512:43~23:24 (10.7h)413.8/hJSX 리팩터
4/0601:01~23:28 (22.5h)572.5/hblock scoping + ES5
4/0700:04~03:44 (3.7h)113.0/hkangax 99%
4/0804:07~21:44 (17.6h)311.8/hRN HMR 재설계 + dev 엔진 통합
4/0901:10~23:57 (22.8h)130.6/h모노레포 HMR 복구
4/1001:02~23:59 (23.0h)321.4/h플러그인 NAPI 전환
4/1100:00~23:49 (23.8h)281.2/hStage 3 decorator(TS) + UMD/AMD
4/1215:02~23:59 (9.0h)212.3/hReanimated 워클렛 해시 추적
4/1300:00~23:59 (24.0h)321.3/h워클렛 Phase 6 + RSC directive
4/1400:00~23:59 (24.0h)371.5/hESTree 어댑터 + function params
4/1500:00~21:13 (21.2h)361.7/hSymbol Table SoA
4/1600:55~23:59 (23.1h)60.3/hzts vs 번개 경계 확정
4/1700:00~23:52 (23.9h)190.8/h친절한 에러 + 근본 수정 규칙
4/1800:06~23:59 (23.9h)180.8/htree_shaker 리팩터
4/1900:00~23:59 (24.0h)210.9/hReferences RFC #1634
4/2000:00~23:59 (24.0h)220.9/hRFC #1672 승인
4/2100:02~23:52 (23.8h)391.6/hTransformer epic + debug infra
4/2200:10~23:59 (23.8h)261.1/hHMR #1727 — lazy sourcemap
4/2300:00~23:53 (23.9h)341.4/hModuleGraph accessor + require.context
4/2409:08~23:42 (14.6h)573.9/htype-only elision 근본수정 + AST cosmetic refactor + 문서 사이트 개편
4/2500:02~23:54 (23.9h)1024.3/hmanualChunks parity + WASM 번들러 + 스모크 폭격
4/2600:00~23:48 (23.8h)763.2/hCodex 등판 + runtime-helper virtual module + ES5 헬퍼 null-prefix
4/2700:21~23:49 (23.5h)341.4/hsmoke 회귀 추적 + tree-shaking/DCE refinement
4/2800:15~22:41 (22.4h)914.1/hconfig 시스템 + CJS DCE + "프로덕션 부족분" 첫 점검
4/2900:13~20:56 (20.7h)904.3/h옵션 갭 메우기 + IIFE 디폴트 제거 + zts-codex 분리
4/3000:37~22:27 (21.8h)934.3/hemotion/styled-components 트랜스포머 정식 스펙
5/0104:10~23:49 (19.6h)583.0/htsconfigRaw esbuild-style + binding-lite POC
5/0200:05~23:55 (23.8h)733.1/hbinding-lite Phase 2/3 + 메모리 오염 근본수정
5/0300:25~23:57 (23.5h)713.0/hstack-overflow hardening + numeric const folding
5/0400:00~23:21 (23.4h)431.8/hRN codegen 매트릭스 + Flow "ts처럼" + core-js 폴리필
5/0501:27~23:53 (22.4h)572.5/h@zntc/* 모노레포 분리 대설계 + BoringSSL + 번개 폐기 결정
5/0600:05~21:10 (21.1h)643.0/h번개 RN 데브서버 전수 이관 + 이름 변경 결정
5/0700:56~22:32 (21.6h)361.7/h★ zts → zntc 리네임 + 헤르메스 다운레벨 정책 + HMR 113→89ms
5/0811:40~23:55 (12.3h)403.3/hplugin 시스템 통일 + 대규모 파일 분리 시작 + test262 OS 디버그
5/0900:09~23:59 (23.8h)1616.8/h★ 최다 커밋 — publish-readiness + TS Project References + 파일 분리 ~100
5/1000:11~23:58 (23.8h)893.7/h9-platform prebuilt NAPI + react-refresh + 배포 파이프라인(OIDC)
5/1100:05~23:20 (23.3h)883.8/h0.1.0 publish prep + MetafileAnalyzer + 문서 대보강 + 프로파일링
5/1201:14~08:14 (7.0h)142.0/he2e compat matrix + JSX scope isolation #3068 (오전까지)

3/18~4/7 구간: 가장 긴 수면 시간은 8시간(3/22 02:3810:41). 평균 수면은 약 46시간.

4/8~4/23 구간: 평균 세션 공백은 약 1.6시간 — 자정 경계를 넘겨 계속 이어진 날이 16일 중 11일이다. 가장 긴 공백은 4/11 23:49 → 4/12 15:02의 15.2시간이었지만, 이것도 수면이라기보다 "하루 쉬었다 돌아온" 구간에 가깝다. 그 외 14일의 경계 공백이 모두 4시간 미만이었다. 전반기(3/184/7)에 46시간씩 자던 리듬은 후반기 16일 동안 거의 사라졌고, 일이 끝난 뒤 곧바로 다음 날 작업으로 이어지는 패턴이 굳어졌다.

4/24~5/12 구간: 자정 경계를 넘겨 이어진 날이 19일 중 15일. "00:xx~23:xx"는 대부분 잠깐 끊겼다 이어진 spillover지 24시간 연속 작업은 아니다 — 그래도 명백한 휴식일(거의 손 안 댄 날)은 0일이다. 이 구간에서 OpenAI Codex CLI를 별도 워크스페이스(zts-codex)로 병행하기 시작하면서 처리량이 한 단계 올라갔다 — 5/9 하루 161 커밋은 전 기간 단일 날짜 최다이며, 종전 최다 3/19(138)을 넘긴다.

3/18 첫날은 5.4시간 만에 48커밋(시간당 9.0커밋)으로 가장 빠른 속도를 기록했다 — Phase 1~2를 한 번에 쏟아낸 결과다. 단일 날짜 최다 커밋은 5/9의 161개(publish-readiness + TS Project References + 코어 파일 분리 리팩터 100개가 겹친 날)로, 종전 최다였던 3/19(138)을 넘겼다. 후반기(4/245/12)만 보면 4/25(102)·4/30(93)·4/28(91)·4/29(90) 순으로 컸다.

여전히 진행 중

이 "개발 배경" 편은 4/7까지의 기준선을 다루지만, 4/8 이후에도 작업은 이어지고 있다. 3-11~3-14 편이 4/84/23의 16일을, 3-15~3-17 편이 4/245/12의 19일을 담았다. 그동안 4/23 시점의 진행 중 에픽(RFC #1672 oxc 스타일 AST, 트리쉐이킹 개선, HMR #1727, require.context, 에러 UX miette급, ESTree 어댑터, CSS 번들링 등)은 대부분 머지됐고, 그 위에 새로운 것들이 쌓였다:

  • @zntc/* 모노레포 분리 — core / web / server(private) / react-native / vite-plugin / wasm / rspack-loader / init / shared + 9 platform 서브패키지
  • 번개(bungae) 흡수 — RN 번들러 래퍼를 @zntc/react-native로 통합, 번개 자체는 폐기
  • 이름 변경ztszntc (5/7, npm org @zts 선점 때문)
  • 0.1.0 publish prep — changesets·OIDC publish·9-platform prebuilt·문서 사이트 340+ 페이지. 단, 실제 npm publish는 아직 안 함
  • Codex 병행 — 같은 저장소·이슈/PR 풀을 Claude/Codex 두 AI가 갈라 작업
  • 진행 중: binding-lite 후속, 헤르메스/롤리팝 다운레벨 깊이, mangle-props, 대형 번들 워커풀 재설계, dev HTTPS(BoringSSL), Vue/Svelte 문법, Next.js/터보팩 같은 메타프레임워크 빌드, Zig 0.16 업그레이드 등

즉 이 프로젝트는 학습 프로젝트로 시작해 프로덕션 레벨 — zntc 0.1.0 배포 직전 — 까지 왔고, 여전히 가고 있다. "완성"이라 부를 시점은 아직 오지 않았다.