2026-03-29
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
이날 공개 활동은 zntc에 모였습니다. 오전에는 전날 연 minify 옵션 분리(#497)를 병합하면서 선언문 뒤 tagged template이 사라지던 문제를 함께 고쳤고, __extends·__generator·__rest 같은 런타임 헬퍼를 필요할 때 자동으로 넣도록 했습니다(#499). 이어 테스트 코드를 *_test.zig 파일로 나누고 런타임 헬퍼와 linker 함수, CLI 파싱을 정리하는 리팩터링(#501부터 #504까지)이 들어왔습니다.
오후에는 성능을 다뤘습니다. c_allocator와 스레드 풀, --timing 옵션과 파이프라인 벤치마크(#505), mimalloc 통합(#506)에 이어 finalize·emit·resolve 단계를 병렬화했고(#508), 커밋 기록상 번들 속도가 최대 4.7배 빨라졌습니다. 트리 셰이킹 fixpoint가 진동하며 100회 돌던 문제를 2회 만에 수렴하도록 고쳐 238ms가 50ms가 됐습니다(#509). 저녁 무렵에는 AST 미니파이어를 상수 접기, 죽은 코드 제거, 불리언 단순화, 쉼표 연산자와 템플릿 리터럴 접기의 4단계로 구현했습니다(#511부터 #514까지).
밤에는 esbuild·rolldown·rspack에 비해 빠져 있던 번들러 옵션을 묶음 단위로 채웠습니다. --alias·--banner·--global-name·--out-extension·--log-level 등 10개(Batch A, #516), content hash와 파일 이름 패턴(Batch B, #517), file·dataurl·text·binary·copy 에셋 로더(Batch C, #519), metafile·analyze·legal comments·inject·keepNames(Batch D, #520)가 들어왔고, CLAUDE.md의 상세 내용은 docs/ 문서로 옮겼습니다. 마지막으로 플러그인 인프라를 Zig 함수 포인터 기반 훅으로 시작해(#521), Node.js 프로세스를 띄워 JSON으로 통신하는 subprocess 플러그인과 그 JS API를 담은 @zts/core 패키지, CLI --plugin 옵션, 비 JS 확장자 load 훅과 virtual module 지원까지 이어 갔습니다(#523부터 #530까지).
공개 커밋 72개, 해당일 생성 또는 병합된 PR 34개를 정리했습니다. PR 생성 33개·병합 34개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/zntc
- feat(bundler): 필터 매칭 확장 + virtual module 지원
- test(integration): 플러그인 subprocess 통합 테스트 6개
- feat(bundler): 플러그인 품질 개선 — 에러 상세, 다중 --plugin, 훅 최적화
- fix(bundler): 플러그인 load 훅이 비-JS 확장자에서도 동작하도록 수정
- docs: 플러그인 2단계 완료 반영 + shutdown 버그 수정
- feat: CLI --plugin 옵션 + Bundler 통합
- feat: @zts/core npm 패키지 — subprocess 플러그인 JS API
- fix: /simplify 리뷰 반영 — subprocess_plugin
- feat(bundler): subprocess 플러그인 — Node.js spawn + JSON IPC
- refactor(bundler): Plugin 인터페이스에 context 포인터 추가
- feat(bundler): 플러그인 인프라 1단계 — Zig 함수 포인터 기반 Plugin struct + 파이프라인 훅 삽입
- docs: 플러그인 API 3단계 전략 문서화
- docs: 배치 D 구현 완료 반영
- test(bundler): /simplify 수정 검증 테스트 5개 추가
- fix: /simplify 리뷰 반영 — 배치 D
- test(bundler): 배치 D 유닛 테스트 12개 추가
- feat(bundler): keepNames (배치 D 완료)
- feat(bundler): inject (배치 D 3/3)
- feat(bundler): legal comments (배치 D 2/3)
- feat(bundler): metafile + analyze (배치 D 1/3)
- fix: Windows [dir] 패턴 경로 구분자 정규화 (\ → /)
- docs: CLAUDE.md 리팩토링 — 상세 내용을 docs/ 문서로 분리
- feat(bundler): asset-names [dir]/[ext] 패턴 + tree-shaking 한계 문서화
- test(bundler): Asset 로더 유닛 테스트 12개 추가
- fix: /simplify 리뷰 반영
- feat(bundler): Batch C — Asset 로더 (file, dataurl, text, binary, copy)
- docs: 배치 B 구현 완료 반영
- fix: /simplify 리뷰 반영
- feat(bundler): Batch B — content hash + naming 패턴
- docs: 배치 A 구현 완료 반영 — 미지원 목록 업데이트
- fix: /simplify 리뷰 반영 #2
- fix: /simplify 리뷰 반영
- feat(bundler): Batch A — 번들러 옵션 10개 구현
- style: zig fmt
- docs: AST 미니파이어 Phase 1~4 완료 반영
- fix: /simplify 리뷰 반영
- feat(minifier): Phase 4 — Comma Operator + Template Literal Folding
- feat(minifier): Phase 3 — Boolean Simplification
- feat(minifier): Phase 2 — Dead Code Elimination
- fix: /simplify 리뷰 반영 — evalTruthiness 숫자 파싱 버그 수정
- feat(minifier): Phase 1 — AST Constant Folding
- docs: AST 미니파이어 설계 추가
- docs: CLAUDE.md 번들러 성능 로드맵 실측 기반 업데이트
- perf(bundler): fixpoint oscillation 수정 — 100회 → 2회 수렴
- fix: /simplify 리뷰 반영
- perf(bundler): resolve 병렬화 — 파일시스템 탐색을 스레드 풀 실행
- perf(bundler): emit 병렬화 — 모듈별 transform+codegen을 스레드 풀 실행
- style: zig fmt
- revert: buildFromSemantic + Part 시스템 필드 제거
- fix: /simplify 리뷰 반영
- perf(bundler): Part 시스템 — semantic analyzer에서 StmtInfo 데이터 구축
- docs: 번들러 성능 로드맵 Phase 7-1~7-4 추가
- fix: /simplify 리뷰 반영
- perf(bundler): finalize 병렬화 + tree-shaker 역인덱스 — 번들 최대 4.7배 개선
- perf: mimalloc 통합 — c_allocator 대비 8% 추가 개선
- fix: build.zig에 linkLibC 추가 — c_allocator CI 빌드 수정
- fix: /simplify 리뷰 반영
- perf: c_allocator 전환 + 스레드 풀 + --timing + pipeline 벤치마크
- fix: /simplify 리뷰 반영
- refactor: es_helpers 공통 빌더 + linker 함수 분해 + 정렬 통합 + CLI 파싱 추출
- refactor(emitter): 런타임 헬퍼 상수를 runtime_helpers.zig로 분리
- style: zig fmt 적용
- refactor: 테스트 코드를 *_test.zig 파일로 분리
- refactor(emitter): /simplify 리뷰 반영
- fix: oxlint trailing comma 수정 (withHelpers 괄호 제거)
- feat(emitter): 런타임 헬퍼 자동 주입 (__extends, __generator, __rest, __async)
- fix(benchmark): 소수점 표시로 0KB 표기 문제 수정
- test(codegen): tagged template 유닛 테스트 추가
- fix(transformer): no-substitution tagged template이 선언문 뒤에서 사라지는 버그 수정
- test: e2e 스냅샷 업데이트
- refactor(minifier): /simplify 리뷰 반영
- feat(cli): --minify-whitespace, --minify-identifiers, --minify-syntax 옵션 분리
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.