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

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#1067생성mergedmainfix(emitter): dev 모드 ESM import binding을 namespace 접근 패턴으로 변경
ohah/zntc#1065생성 · 병합mergedmaintest: dev 모드 ESM re-export init 호출 테스트 6개
ohah/zntc#1064생성 · 병합mergedmainfix(emitter): named re-export 소스 모듈 init 호출 누락
ohah/zntc#1062생성 · 병합mergedmainrevert(emitter): dev 모드 function 호이스팅 되돌림
ohah/zntc#1061생성 · 병합mergedmainfix(emitter): dev 모드 __esm에서 function 호이스팅 비활성화
ohah/zntc#1060생성 · 병합mergedmainrefactor(test): 테스트 헬퍼 통합 + assertion 안정성 개선
ohah/zntc#1059생성 · 병합mergedmaintest: ES5/jsx_in_js/React Refresh 엣지 케이스 테스트 13개 추가
ohah/zntc#1058생성 · 병합mergedmainfix(refresh): function expression 이름 $ 등록 방지
ohah/zntc#1057생성 · 병합mergedmainfix(es5): 오버로드 시그니처 빈 function() emit + 테스트 5개
ohah/zntc#1056생성 · 병합mergedmainfix(es5): abstract/declare 메서드가 빈 function()으로 emit되는 버그
ohah/zntc#1055생성 · 병합mergedmainfix(parser): jsx_in_js가 .ts 파일의 제네릭을 JSX로 오파싱하는 버그
ohah/zntc#1054생성 · 병합mergedmainfix(napi): watch 초기 빌드 + rebuild 시 파일 쓰기 추가
ohah/zntc#1053생성 · 병합mergedmainfeat(napi): watch API + buildResult에 moduleCodes/modulePaths 노출
ohah/zntc#1052생성 · 병합mergedmainfix(parser): non-null assertion 뒤 division 파싱 + 함수 타입 type predicate 지원
ohah/zntc#1051생성 · 병합mergedmaintest: 엣지 케이스 + 조합 보강 테스트 14개 추가
ohah/zntc#1050생성 · 병합mergedmaintest: import.meta.glob 엣지 케이스 추가
ohah/zntc#1049생성 · 병합mergedmainrefactor(codegen): import.meta.glob AST 수준 교체
ohah/zntc#1048생성 · 병합mergedmainstyle: import.meta.glob simplify
ohah/zntc#1047생성 · 병합mergedmainfeat(bundler): import.meta.glob 지원 (Vite 호환)
ohah/zntc#1046생성 · 병합mergedmaintest: minifyIdentifiers hoisting 테스트 추가
ohah/zntc#1045생성 · 병합mergedmainfix(semantic): 함수 body 내 var/function hoisting predeclare
ohah/zntc#1044생성 · 병합mergedmainfix(semantic): assignment_target_identifier symbol_id 누락 수정
ohah/zntc#1043생성 · 병합mergedmainfix(resolver): nodePaths bare specifier resolve 버그 수정
ohah/zntc#1040생성 · 병합mergedmaintest: 실제 라이브러리 번들링 + 포맷별 런타임 실행 테스트
ohah/zntc#1039생성 · 병합mergedmainci: WASM 빌드+테스트 추가
ohah/zntc#1038생성 · 병합mergedmaintest: UMD/AMD 실제 런타임 실행 테스트
ohah/zntc#1037생성 · 병합mergedmainstyle: UMD/AMD simplify 수정
ohah/zntc#1036생성 · 병합mergedmainfeat(bundler): UMD/AMD 출력 포맷 지원
ohah/zntc#1035생성 · 병합mergedmainfeat(bundler): allowOverwrite 입출력 동일 경로 체크
ohah/zntc#1024생성 · 병합mergedmaintest: 옵션 조합 통합 테스트 10개 추가
ohah/zntc#1023생성 · 병합mergedmainfeat(napi): BundleOptions 전체 필드 노출
ohah/zntc#1022생성 · 병합mergedmainfeat(napi): 배치 E S급 옵션 일괄 노출
ohah/zntc#1021생성 · 병합mergedmaindocs(roadmap): 플러그인 N-API 완료 반영
ohah/zntc#1020생성 · 병합mergedmaindocs: PLUGINS.md + ROADMAP.md 업데이트
ohah/zntc#1019생성 · 병합mergedmainfix(docs): typedoc 빌드 @types/node 누락 수정
ohah/zntc#1018생성 · 병합mergedmaintest: 누락 커버리지 추가
ohah/zntc#1017생성 · 병합mergedmainrefactor(napi): 플러그인 훅 구현 중복 제거
ohah/zntc#1016생성 · 병합mergedmainfeat(napi): renderChunk/generateBundle 훅 노출
ohah/zntc#1015생성 · 병합mergedmainfix(napi): 플러그인 condvar signal 순서 + 타임아웃
ohah/zntc#1014생성 · 병합mergedmainfeat(napi): vitePlugin async 훅 지원
ohah/zntc#1013생성 · 병합mergedmainfix(wasm): ES2023 비트마스크 동기화 확인 + 테스트 수정
ohah/zntc#1012생성 · 병합mergedmainfeat(napi): 누락된 BuildOptions 옵션 노출
ohah/zntc#1011생성 · 병합mergedmaindocs(pages): GitHub Pages에 NAPI 가이드 추가
ohah/zntc#1010생성 · 병합mergedmainfeat: NAPI 벤치마크 + CI 업데이트
ohah/zntc#1003생성 · 병합mergedmainfix(test): transform 테스트를 실제 코드 변환으로 수정
ohah/zntc#1002생성 · 병합mergedmaintest: 추가 커버리지 테스트 9개
ohah/zntc#1001생성 · 병합mergedmaindocs: 문서 전면 업데이트 + transform 체이닝 수정 + Vite 테스트 5개
ohah/zntc#1000생성 · 병합mergedmainfix: hashbang을 AST 노드로 근본 수정 (파서+codegen)
ohah/zntc#999생성 · 병합mergedmainfeat: hashbang 보존/제거 + 테스트 7개 + CI NAPI job
ohah/zntc#998생성 · 병합mergedmainfeat: ES2023 타겟 + hashbang 다운레벨
ohah/zntc#995생성 · 병합mergedmainfix(cli): tsconfig URL 문자열 주석 제거 버그 수정
ohah/zntc#994생성 · 병합mergedmainfeat(napi): define/alias 옵션 NAPI 노출
ohah/zntc#993생성 · 병합mergedmainfeat(cli): tsconfig.json 자동 로드
ohah/zntc#992생성 · 병합mergedmainfeat: Vite/Rollup 플러그인 어댑터 (Phase 4)
ohah/zntc#991생성 · 병합mergedmaindocs: CLAUDE.md에 NAPI/CLI 문서 추가
ohah/zntc#990생성 · 병합mergedmaintest(napi): 멀티스레드 플러그인 회귀 테스트 3개 (#985)
ohah/zntc#989생성 · 병합mergedmainfix(napi): 멀티스레드 플러그인 데드락 수정
ohah/zntc#988생성 · 병합mergedmainfix: zts.node git 제거 + serve 테스트 안정화
ohah/zntc#987생성 · 병합mergedmainfix(napi): build() 플러그인 데드락 수정 + CLI 테스트 36개
ohah/zntc#986생성 · 병합mergedmainfeat: Node.js/Bun CLI (Rolldown 방식 전환)
ohah/zntc#984생성 · 병합mergedmaindocs: 플러그인 로드맵 업데이트 (4/5단계 계획)
ohah/zntc#983생성 · 병합mergedmaintest(napi): 종합 테스트 15개 추가 + dispatcher try-catch
ohah/zntc#982생성 · 병합mergedmainrefactor: plugin dispatcher 공통화 + throw 테스트
ohah/zntc#981생성 · 병합mergedmainfix(napi): OOM 안전성 + 엣지케이스 테스트 21개 추가
ohah/zntc#980생성 · 병합mergedmainfeat(napi): JS 플러그인 in-process 지원 (Phase 3)
ohah/zntc#979생성 · 병합mergedmainfeat(napi): build() 비동기 번들링 API 추가
ohah/zntc#978생성 · 병합mergedmainfeat(napi): buildSync() 번들링 NAPI 추가
ohah/zntc#977생성 · 병합mergedmainrefactor(test): NAPI 테스트 비트마스크 상수 추출
ohah/zntc#976생성 · 병합mergedmaintest(napi): Node.js NAPI 바인딩 테스트 추가
ohah/zntc#975생성 · 병합mergedmainfeat(napi): bun:ffi → C NAPI 전환 (@zts/core)
ohah/zntc#974생성 · 병합mergedmainfix: CI 경로 수정 + decodeFlags/타입 중복 제거
ohah/zntc#973생성 · 병합mergedmainrefactor: 패키지 리네이밍 @zts/core ↔ @zts/plugin
ohah/zntc#972생성 · 병합mergedmainfeat(ffi): 네이티브 FFI 바인딩 패키지 (@zts/ffi)
ohah/zntc#971생성 · 병합mergedmainfix(plugin): LoadResult 타입에 code 필드 추가
ohah/zntc#970생성 · 병합mergedmainfeat: add --jobs=N option for thread pool size control