2026-04-04
요약 (AI 작성)
ZTS에서 React Native 플랫폼 호환성과 Hermes 엔진 지원을 중점적으로 작업했습니다. ES5 class를 IIFE 패턴(SWC 호환)으로 변환하고, __callSuper + Reflect.construct로 네이티브 클래스 extends를 지원했습니다. Hermes 런타임 호환을 위해 __copyProps를 forEach로 변경하고, RN 프리셋 에셋 확장자를 Metro defaults 전체로 확장했습니다. __esm 래퍼 관련 다수의 버그(export default, hoisted var, class 선언 호이스팅 등)를 수정하고, dev mode에서 polyfill/banner 포함 버그를 해결했습니다. Bungae에서는 RN 에셋 플러그인과 전역 식별자 예약 기능을 추가했으며, Suji에서는 문서 동기화와 배포 계획을 정리했습니다.
커밋
ohah/zts
- fix(transformer): Flow component 파라미터를 props destructuring으로 변환
- fix(codegen): JSX classic 모드에서 번들러 리네이밍된 React 변수 반영
- fix(transformer): postProcessSuperCallBody에서 extra_data dangling pointer 수정
- fix(transformer): __callSuper + instance fields를 _this에 초기화
- feat(transformer): __callSuper + Reflect.construct로 네이티브 클래스 extends 지원
- fix(transformer): ES5 class getter/setter에 configurable: true 추가
- test(integration): ES5 class super() 스코프 격리 통합 테스트 추가
- fix(transformer): ES5 class super() 호출에서 IIFE _super 매개변수 사용
- fix(codegen): default+named 혼합 import에도 __toESM 래핑 적용
- refactor(codegen): /simplify 리뷰 반영
- fix(codegen): import Default, { named } 동시 사용 시 default 바인딩 누락 수정
- fix(codegen): CJS export binding에서 linker rename을 반영
- refactor(bundler): entry 감지를 is_entry_point 플래그 기반으로 전환
- fix(bundler): ESM 래핑 모듈의 export * from (re_export_all) 지원
- refactor(json_to_esm): /simplify 리뷰 반영
- fix(bundler): JSON 모듈 named export 지원
- test: 에셋 로더 테스트 케이스 보강
- feat(bundler): RN 프리셋 에셋 확장자를 Metro defaults 전체로 확장
- fix(bundler): 플러그인 load 훅이 에셋 모듈을 오버라이드할 수 있도록 수정
- style: oxfmt
- style: zig fmt
- fix(bundler): loader 미설정 에셋 파일 silent failure → 빌드 에러 + RN 프리셋 기본 로더
- refactor: isTypeOnlyDeclaration을 Tag 메서드로 추출 + 혼합 export 테스트 추가
- test: export type/interface + module.exports CJS 판별 테스트 추가 (#713)
- fix(parser): export type alias/interface가 ESM으로 잘못 판별되는 버그 수정
- fix(codegen): ES2015 shorthand 확장 시 object property key에 scope hoisting rename이 적용되는 버그 수정
- refactor(emitter): /simplify 리뷰 반영
- fix(emitter): export { default } from re-export가 __esm 래퍼에서 할당 누락 수정 (#705)
- style: oxfmt 포맷 적용
- fix(emitter): import + export default 패턴에서 hoisted var 중복 선언 수정 (#706)
- fix(emitter): CJS 엔트리 모듈이 IIFE/ESM 번들에서 자동 호출되지 않는 버그 수정 (#707)
- test(linker): _default 합성 변수 충돌 방지 테스트 추가
- refactor(linker): addNameOwner 헬퍼 추출, 중복 코멘트·로직 정리
- fix(linker): _default 합성 변수 충돌으로 ESM default export가 덮어쓰이는 버그
- test: dev mode polyfill/banner 포함 검증 테스트 추가
- fix(bundler): dev mode에서 --polyfill, --banner:js가 번들에 포함되지 않는 버그
- fix(test): hermes-runtime 테스트가 CI에서 이전 테스트 결과에 의존하던 문제
- fix: lowerClassExpression에서도 표현식 super class 지원 추가
- fix(transformer): 표현식 super class (e.g. React.Component) ES5 변환 누락
- test: RN 번들 Node.js 실행 검증 추가 (ES5 + non-ES5)
- fix(transformer): ES5 destructuring에서 프로퍼티 키가 linker에 의해 리네이밍되는 버그
- refactor: runHermes shell→writeFileSync, findHermesc null 검증 추가
- test: Hermes 런타임 테스트 추가 + CI hermes-engine-cli 설정
- fix(runtime): __copyProps forEach로 변경 (Hermes for-in 스코프 버그)
- fix(runtime): __copyProps for-in 클로저가 Hermes에서 마지막 키만 캡처하는 버그
- test: class IIFE prototype 참조 + Flow covariant 스트리핑 + ESM class 호이스팅 회귀 테스트
- refactor: unused class_name_old_idx 파라미터 제거
- fix(transformer): IIFE 내부 Object.defineProperty가 외부 변수를 잘못 참조하는 버그
- fix: ES5 downlevel 경로에서도 Flow variance 프로퍼티 스트리핑 누락 수정
- fix(flow): covariant/contravariant 클래스 프로퍼티 타입 어노테이션 스트리핑
- refactor: 코멘트 정리 — what 중복 제거, why만 유지
- fix(bundler): __esm 래퍼 내 class 선언 호이스팅 누락 수정
- refactor(transformer): SWC 호환 IIFE 패턴 (fresh identifier + _super 매개변수)
- fix(transformer): IIFE 내부 함수에 별도 이름 + static fields IIFE 밖 배치
- fix(transformer): IIFE 내부 함수에 별도 이름 + static fields IIFE 밖 배치
- fix(emitter): named fn expr 이름 제거 시 리네이밍된 base name으로 매칭
- feat(linker): --global-identifier 예약 전역 식별자 지원
- fix(transformer): class → IIFE 패턴으로 ES5 downlevel (SWC 호환)
- fix(transformer): class → IIFE 패턴으로 ES5 downlevel (SWC 호환)
ohah/bungae
- fix(zts-bundler): AssetRegistry를 가상 모듈로 제공
- feat(zts-bundler): RN 에셋 플러그인 + Metro assetExts 전체 지원
- fix(zts-bundler): dev 모드에서 process.env.NODE_ENV를 "development"로 define
- debug: runZtsBuild에 args 로그 추가
- feat(zts-bundler): RN 전역 식별자 예약 (--global-identifier)
- fix(zts-bundler): ZTS 바이너리 경로 탐색 확장
ohah/suji
- feat(node): 이벤트 수신 (on/off/once) 구현
- feat(examples): 예제를 @suji/node SDK 사용으로 전환
- feat(sdk): @suji/node Node.js 백엔드 SDK 추가
- docs: 배포/설치 채널 계획 추가
ohah/ohah.github.io
- docs: update CRON_CRD_WRITE.md timestamp (2026-04-04 01:29)
- docs: CRON 30분마다 맞춤법 교정 - 2026-04-03 03:30 AM (Asia/Seoul)