2026-04-10
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
zntc는 이날 네이티브 바인딩을 중심으로 패키지 구조를 바꿨습니다. bun:ffi 기반 @zts/ffi를 만들었다가 기존 플러그인 런타임을 @zts/plugin으로, 네이티브 바인딩을 @zts/core로 이름을 바꾸고(#972, #973), 곧바로 C NAPI로 전환했습니다(#975). 그 위에 buildSync()와 워커 스레드에서 도는 비동기 build()(#978, #979), esbuild 스타일 JS 플러그인의 in-process 실행(#980), Vite/Rollup 플러그인 어댑터 vitePlugin()(#992)과 async 훅, renderChunk·generateBundle 훅(#1014, #1016), incremental rebuild와 HMR diff를 주는 watch() API(#1053, #1054)를 얹었습니다. CLI도 Rolldown처럼 Node.js/Bun 스크립트가 NAPI를 부르는 구조로 바꿨고(#986), 플러그인 호출의 libuv 워커 점유 데드락과 멀티스레드 경합 데드락을 고쳤습니다(#987, #989). define·alias부터 BundleOptions 전체 필드까지 NAPI에 노출했습니다(#994, #1012, #1022, #1023).
번들러·트랜스파일러 기능으로는 --jobs=N(#970), tsconfig.json 자동 로드(#993), ES2023 타깃과 hashbang 보존·제거(#998~#1000), UMD/AMD 출력 포맷(#1036), 입출력 경로가 같을 때의 덮어쓰기 검사(#1035), Vite 호환 import.meta.glob(#1047, #1049)이 들어왔습니다. 고친 버그는 nodePaths가 bare specifier에 적용되지 않던 문제(#1043), 선언보다 앞서 쓰인 var/function이 식별자 축소에서 어긋나던 문제(#1044, #1045), non-null assertion 뒤 나눗셈과 함수 타입 type predicate 파싱(#1052), .ts 파일 제네릭을 JSX로 읽던 문제(#1055), ES5 변환에서 abstract·declare 메서드와 오버로드 시그니처가 빈 함수로 나오던 문제(#1056, #1057) 등입니다. dev 모드 __esm의 함수 호이스팅은 껐다가 되돌렸고(#1061, #1062), named re-export 소스 모듈의 init 호출 누락을 고쳤습니다(#1064). dev 모드 import 바인딩을 namespace 접근으로 바꾸는 #1067은 이날 PR이 열렸습니다. NAPI·WASM·CLI 벤치마크와 CI job, 문서 사이트의 NAPI 가이드도 추가됐습니다(#1010, #1011).
bungae는 ZTS를 서브모듈로 들이고 subprocess 호출을 NAPI in-process 호출로 바꿨습니다. RN 프리셋이 CLI에서만 켜던 flow·jsxInJs·resolveExtensions·mainFields·configurableExports를 NAPI 옵션에 채웠고, 이후 ZTS 수정에 맞춰 서브모듈을 여러 번 올렸습니다. 지연 로딩하는 Babel 플러그인 시스템을 붙여 reanimated와 gesture handler 데모를 예제 앱에 넣었고, iPadOS 26에서 앱이 전체 화면으로 열리도록 Info.plist를 고쳤습니다.
공개 커밋 102개, 해당일 생성 또는 병합된 PR 75개를 정리했습니다. PR 생성 75개·병합 74개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/bungae
- chore: ZTS 서브모듈 업데이트 (re-export init 호출 누락 수정)
- chore: lock add
- chore: ZTS 서브모듈 업데이트 (function 호이스팅 revert)
- fix(ios): launch app in full screen on iPadOS 26
- chore: ZTS 서브모듈 업데이트 (ES5 오버로드/React Refresh/dev 함수 호이스팅 수정)
- chore: ZTS 서브모듈 업데이트 (ES5 abstract 메서드 스트리핑 수정)
- chore: ZTS 서브모듈 업데이트 (jsx_in_js .ts 오파싱 수정)
- fix(napi): RN 프리셋 누락 옵션 추가 (resolveExtensions, mainFields, configurableExports)
- fix(napi): RN 빌드 옵션에 flow + jsxInJs 추가
- chore: ZTS 서브모듈 업데이트 (watch 파일 쓰기 수정)
- fix(napi): 프로젝트 루트 기준 zts.node 경로 탐색
- chore: mise.toml에 zig 0.15.2 추가 (postinstall용)
- refactor(bundler): /simplify 중복 제거 + 효율 개선
- feat(bundler): ZTS subprocess → NAPI in-process 전환
- fix(example): add react-native-worklets dependency for reanimated v4
- feat(example): full reanimated + gesture handler demo
- feat(zts): Babel plugin system with lazy loading and --jobs=1 support
- feat: Babel plugin support, reanimated integration, CLI improvements
ohah/zntc
- test: dev 모드 ESM re-export init 호출 테스트 6개 추가
- fix(emitter): named re-export 소스 모듈 init 호출 누락
- revert(emitter): dev 모드 function 호이스팅 되돌림
- fix(emitter): dev 모드 __esm에서 function 호이스팅 비활성화
- refactor(test): /simplify — 테스트 헬퍼 통합 + assertion 안정성 개선
- test: ES5/jsx_in_js/React Refresh 엣지 케이스 테스트 추가
- fix(refresh): function expression 이름을 $RefreshReg$에 등록하지 않도록
- fix(es5): 오버로드 시그니처도 빈 function()으로 emit되는 버그 + 테스트 추가
- fix(es5): abstract/declare 메서드가 빈 function()으로 emit되는 버그
- fix(parser): jsx_in_js가 .ts 파일에도 적용되어 제네릭이 JSX로 오파싱되는 버그
- fix(napi): watch 초기 빌드 + rebuild 시 파일 쓰기 추가
- fix(ci): 통합 테스트 스냅샷 전체 재생성
- test: watch 테스트 추가 + CI 통합 테스트 수정
- test(napi): watch API 테스트 7개 추가
- fix(napi): watch API 메모리 안전성 + 코드 중복 제거
- style: oxfmt 포맷 + 미사용 인터페이스 제거
- feat(napi): watch API + buildResult에 moduleCodes/modulePaths 노출
- fix(parser): non-null assertion 뒤 division 파싱 + 함수 타입 type predicate 지원
- fix(ci): react, lodash-es devDependencies 추가
- test: 엣지 케이스 + 조합 보강 테스트 14개 추가
- test: import.meta.glob 엣지 케이스 3개 추가
- refactor(codegen): import.meta.glob를 AST 수준에서 교체
- style: import.meta.glob /simplify 수정
- feat(bundler): import.meta.glob 지원 (Vite 호환)
- test: minifyIdentifiers var/function hoisting 테스트 3개 추가
- fix(semantic): 함수 body 내 var/function hoisting 선언 predeclare
- fix(semantic): assignment_target_identifier의 symbol_id 누락 수정
- fix(resolver): nodePaths가 bare specifier resolve에 적용되지 않는 버그 수정
- test: 실제 라이브러리 번들링 + 포맷별 런타임 실행 테스트 추가
- ci: WASM 빌드+테스트 추가
- test: UMD/AMD 실제 런타임 실행 테스트
- style: UMD/AMD /simplify 수정
- feat(bundler): UMD/AMD 출력 포맷 지원
- feat(bundler): allowOverwrite 입출력 동일 경로 체크
- test: 옵션 조합 통합 테스트 10개 추가
- style: oxfmt 포매팅
- feat(napi): BundleOptions 전체 필드 노출
- feat(napi): 배치 E S급 옵션 일괄 노출
- docs(roadmap): 플러그인 N-API 완료 반영
- docs: PLUGINS.md + ROADMAP.md 업데이트
- fix(docs): typedoc 빌드 @types/node 누락 수정 + CLAUDE.md 업데이트
- test: 누락 커버리지 추가 (renderChunk 체이닝, async generateBundle, 엣지 케이스)
- refactor(napi): 플러그인 훅 구현 중복 제거
- feat(napi): renderChunk/generateBundle 훅 노출
- fix(napi): 플러그인 condvar signal 순서 + 타임아웃 추가
- style: oxfmt 포매팅 수정
- feat(napi): vitePlugin async 훅 지원
- fix(wasm): ES2023 비트마스크 동기화 확인 + 테스트 수정
- feat(napi): 누락된 BuildOptions 옵션 노출 (#1005)
- docs(pages): GitHub Pages에 NAPI 가이드 추가
- feat: NAPI vs WASM vs CLI 벤치마크 + CI 업데이트
- fix(test): transform 플러그인 테스트를 실제 코드 변환으로 수정
- test: 추가 커버리지 테스트 9개
- docs: 문서 전면 업데이트 + Vite 실전 테스트 5개
- feat: hashbang 보존/제거 구현 + 테스트 7개 + CI NAPI 추가
- feat: hashbang 보존/제거 구현 + 테스트 7개 + CI NAPI 추가
- feat: ES2023 타겟 + hashbang 다운레벨 추가
- fix(cli): tsconfig 주석 제거가 URL 문자열을 깨뜨리는 버그 수정
- feat(napi): define/alias 옵션 NAPI 노출
- feat(cli): tsconfig.json 자동 로드
- feat: Vite/Rollup 플러그인 어댑터 (Phase 4)
- docs: CLAUDE.md에 NAPI/CLI 문서 추가
- test(napi): 멀티스레드 플러그인 데드락 회귀 테스트 3개 (#985)
- fix(napi): 멀티스레드 플러그인 데드락 수정 (#985)
- fix: zts.node 바이너리 git 제거 + serve 테스트 retry loop
- fix(napi): build() 플러그인 데드락 수정 + CLI 테스트 36개 (#985)
- feat: Node.js/Bun CLI로 전환 (Rolldown 방식)
- docs: 플러그인 로드맵 업데이트 (3단계 완료 + 4/5단계 계획)
- test(napi): 종합 테스트 15개 추가 + dispatcher try-catch
- refactor: plugin dispatcher hookName 분기 공통화 + throw 테스트
- fix(napi): OOM 안전성 + buildComplete 방어 코드 + 엣지케이스 테스트 21개
- feat(napi): JS 플러그인 in-process 지원 (Phase 3)
- feat(napi): build() 비동기 번들링 + buildSync 리팩터링
- feat(napi): buildSync() 번들링 NAPI 추가
- refactor(test): NAPI 테스트 비트마스크를 명명 상수로 추출
- test(napi): Node.js NAPI 바인딩 테스트 추가
- feat(napi): bun:ffi → C NAPI 전환 (@zts/core)
- refactor: decodeFlags/encodeFlags/타입 중복 제거
- fix: 패키지 리네이밍 후 누락된 경로 참조 수정
- refactor: 패키지 리네이밍 @zts/core ↔ @zts/plugin
- style: oxfmt 포맷팅 적용
- feat(ffi): 네이티브 FFI 바인딩 패키지 (@zts/ffi)
- fix(plugin): LoadResult 타입에 code 필드 추가
- feat: add --jobs=N option for thread pool size control
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.