2026-04-11
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
zntc는 TC39 Stage 3 데코레이터 변환을 하루 안에 구현했습니다. 기존 experimental 데코레이터와 별도로 TypeScript 5.0+/Babel/SWC와 같은 __esDecorate·__runInitializers 출력을 내고, access 프로퍼티, 필드별 initializer, auto-accessor의 private backing field 변환, class expression, Symbol.metadata, private 필드·getter·setter·메서드 데코레이터까지 다뤘습니다(#1075). 식 평가와 적용을 분리해 TC39 스펙의 평가 순서를 따르게 했고, Babel 2023-11 conformance 테스트 46개를 포팅했으며, MobX 6 @computed getter가 실패하던 initializer 누락을 고친 뒤(#1077) MobX 스모크 테스트를 붙였습니다.
CSS 번들링 1단계로 Zig 네이티브 @import 추출기와 인라이닝, Lightning CSS minify를 넣고(#1080) 순환 import·미디어 쿼리 등 엣지 케이스와 Emotion·styled-components 스모크 테스트를 추가했습니다(#1081, #1083). Vite의 esbuild transform을 ZTS로 바꾸는 vite-plugin-zts(#1085, #1087), --certfile/--keyfile HTTPS dev 서버(#1068), import.meta.glob의 eager·import 옵션(#1071), UMD/AMD 포맷의 external 의존성 처리(#1070)도 들어왔습니다. scope hoisting 쪽은 모듈별 namespace 변수 이름으로 충돌을 막고(#1072), TS enum이 __esm 팩토리 안에 갇히던 버그(#1073), 순환 참조 init 순서(#1093)를 고쳤으며, Rolldown의 strictExecutionOrder에 해당하는 옵션과 팩토리가 throw해도 다른 모듈로 번지지 않게 하는 복구를 넣었습니다(#1078).
후반에는 Zig 네이티브 AST 플러그인 인터페이스와 Reanimated worklet 변환을 만들고(#1088), 문자열 기반 플러그인과 AST 플러그인을 하나로 합쳐 NAPI에 연결했으며(#1090), workletTransform 옵션을 NAPI에 노출했습니다(#1098). 이어 node_modules의 reanimated/worklets 적용 범위, 식 위치 worklet의 IIFE factory, initData 코드를 Codegen으로 생성, ES5 매개변수 변환 뒤 directive 탐색, rest 매개변수와 런타임 헬퍼 처리(#1099~#1106)를 차례로 고쳤습니다. [...map.values()]가 concat으로 바뀌어 iterator가 깨지던 ES5 spread 문제는 __toConsumableArray 헬퍼로 해결했습니다(#1096).
bungae는 이 변경들을 따라 ZTS 서브모듈을 여덟 차례 올리고 workletTransform을 켰습니다.
공개 커밋 91개, 해당일 생성 또는 병합된 PR 33개를 정리했습니다. PR 생성 32개·병합 33개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/bungae
- chore: ZTS 서브모듈 업데이트 (worklet rest params + directive offset + IIFE factory)
- chore: ZTS 서브모듈 업데이트 (worklet Codegen 기반 initCode + IIFE factory)
- chore: ZTS 서브모듈 업데이트 (worklet IIFE factory for function_expression)
- chore: ZTS 서브모듈 업데이트 (worklet function_expression 문법 에러 수정)
- chore: ZTS 서브모듈 업데이트 (worklet node_modules 필터 수정)
- chore: ZTS 서브모듈 업데이트 + workletTransform 활성화
- chore: ZTS 서브모듈 업데이트 (ES5 spread iterator fix + gitignore dist)
- chore: ZTS 서브모듈 업데이트 (AST Plugin + 순환 참조 수정 + postinstall)
ohah/zntc
- fix(worklet): rest params, runtime helpers, and TS types in closure (#1104, #1102)
- fix(worklet): find directive after ES5 params transform inserts statements
- fix(worklet): use Codegen for initData.code instead of raw source (#1102)
- feat(worklet): IIFE factory for function_expression worklets
- fix(worklet): skip function_expression to avoid syntax error in call args
- fix(worklet): apply worklet transform to reanimated/worklets in node_modules
- feat(napi): add workletTransform option to NAPI build
- fix(es2015): spread iterator with __toConsumableArray helper (#1095)
- fix(es2015): spread iterator with __toConsumableArray helper (#1095)
- chore: add postinstall script for automatic zig build
- fix(emitter): resolve circular ref init order in __esm factory (#1092)
- feat: NAPI AST plugin bridge + Plugin unification + builtin preset
- style: zig fmt worklet.zig
- feat: AST plugin system + Reanimated worklet native transform
- fix(vite-plugin): Vite 8 호환 — esbuild: false 조건부 적용
- style: oxfmt
- fix(test): CI 소스맵 테스트 환경 차이 수정
- style: oxfmt
- feat: vite-plugin-zts — Vite의 esbuild transform을 ZTS로 교체
- docs: CSS 번들링 관련 문서 5개 업데이트
- test(css): Emotion + Styled-Components + 네이티브 CSS 스모크 테스트
- style: oxfmt
- test(css): 엣지 케이스 9개 추가 (총 26개)
- test(css): 엣지 케이스 5개 추가
- refactor: /simplify — stripCssImports 이중 파싱 제거
- test(runtime): add __esm throw recovery test case
- fix(runtime): __esm throw recovery — restore fn on factory error
- test(emitter): add strict execution order integration tests
- feat(emitter): add strict_execution_order option for scope hoisting
- style: oxfmt
- style: zig fmt
- feat(bundler): CSS 번들링 Phase 1 — @import 인라이닝 + Lightning CSS minify
- docs: Stage 3 decorators 완료로 로드맵 업데이트
- style: zig fmt
- fix(decorator): Stage 3 getter decorator __runInitializers 누락 수정
- refactor: /simplify — "_Class" 상수 추출
- fix(decorator): export default class + 익명 class decorator 변환 수정
- fix(test): CI 실패 수정 — TSC 스냅샷 업데이트 + MobX skipIf
- test(decorator): MobX 6 Stage 3 decorator 스모크 테스트 추가
- style: zig fmt
- refactor: /simplify — decorator 코드 정리
- fix(decorator): TC39 스펙 준수 decorator 평가 순서 구현
- test(decorator): Babel 2023-11 conformance 추가 포팅 (9개 추가, 총 46개)
- fix(decorator): string/numeric literal key context.name + computed access 지원
- test(decorator): Babel 2023-11 conformance 테스트 포팅 (13개 추가)
- refactor: /simplify — getter 생성 + 이름 추출 중복 제거
- test(decorator): Stage 3 테스트 대폭 추가 (유닛 40개 + E2E 24개)
- feat(decorator): private method descriptor 래핑 구현
- feat(decorator): private member decorator 지원
- feat(decorator): Symbol.metadata 설정 + field 초기값 __runInitializers 래핑
- feat(decorator): Stage 3 E2E 통합 테스트 + 런타임 버그 수정
- feat(decorator): Stage 3 class expression decorator 지원
- refactor: /simplify — Stage 3 decorator 코드 정리 + 테스트 추가
- feat(decorator): Stage 3 auto-accessor → private backing field + getter/setter
- feat(decorator): Stage 3 field decorator per-field initializers
- feat(decorator): Stage 3 access 프로퍼티 생성
- feat(decorator): Stage 3 (TC39) decorator 변환 구현
- feat(decorator): Stage 3 decorator 인프라 + 실패 테스트 추가
- fix(codegen): restore indent_level guard for esm_var_assign_only
- style: format test files with oxfmt defaults
- chore: update RN example app fixture outputs
- test(emitter): add TS enum hoisting regression tests
- fix(emitter): hoist TS enum declarations out of __esm factory
- fix(test): update unit tests for new namespace variable naming format
- chore: update RN example app fixture outputs
- test(linker): add namespace variable collision regression tests
- fix(linker): use module-scoped namespace variable names in scope hoisting
- docs: UMD/AMD 완료 표시 + CLAUDE.md format 옵션 업데이트 + 기존 AMD 테스트 수정
- test(cli): 실제 React E2E 테스트 추가 (UMD/AMD)
- refactor: /simplify — UMD/AMD prologue 헬퍼 추출 + toOwnedSlice
- test(cli): UMD/AMD E2E 테스트 3개 추가
- fix(emitter): UMD/AMD 포맷 external 의존성 올바르게 처리
- test(cli): Vite 패턴 import.meta.glob E2E 테스트 추가
- refactor: /simplify — glob 옵션 파싱 중복 제거
- refactor: fallback import scanner 경로 제거 + glob E2E 테스트 4개 추가
- feat(bundler): import.meta.glob eager/import 옵션 지원
- docs: ROADMAP HTTPS dev server 완료 표시
- style: child_process import 통합
- test(server): HTTPS dev server 테스트 3개 추가
- style: oxfmt 포맷 수정
- feat(server): HTTPS dev server 지원 (--certfile / --keyfile)
- refactor: /simplify — namespace 패턴 코드 정리
- fix(emitter): dev 모드 ESM import binding을 namespace 접근 패턴으로 변경
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.