2026-04-05
요약 (AI 작성)
ZTS에서 JSX 처리를 대규모로 리팩터링하여 codegen에서 Transformer 패스로 이동시키고(Phase 1~2), 번들 모드에서도 올바른 JSX automatic import injection을 구현했습니다. __esm 모듈에서 JSX binding 스코프 문제와 live binding, TDZ 이슈를 수정했습니다. Rolldown 호환 런타임 configurable_exports 옵션을 추가하고, 번들 모드 소스맵 생성을 통합했습니다. Flow component 파라미터를 props destructuring으로 변환하는 기능과 optional chaining 괄호 수정도 진행했습니다. Bungae에서는 JSX dev 모드 전달과 RN 렌더링 디버깅을, Suji에서는 @suji/node SDK를 추가했습니다.
커밋
ohah/zts
- test(codegen): JSX transform 리팩터링 방어 테스트 20개 추가
- fix(codegen): /simplify 리뷰 수정 — entity 제어문자 이스케이프, StaticStringMap, 루프 정리
- feat(codegen): JSX 스펙 준수 5가지 수정
- fix(codegen): JSX single child 텍스트의 개행 정규화 누락 수정
- test(bundler): ESM-wrapped JSX binding 스코프 테스트 3개 추가
- fix(emitter): ESM-wrapped 모듈에서 JSX binding 스코프 문제 수정
- test(bundler): JSX automatic import injection 테스트 7개 추가
- fix(linker): ESM-wrapped 모듈에서 synthetic JSX binding이 skip되는 버그 수정
- fix: 실수로 삭제된 tests/benchmark 파일 복원
- test(bundler): JSX automatic import injection 테스트 추가 + specifier 캐시 leak 수정
- chore: 실수로 커밋된 임시 파일/벤치마크/에셋 제거
- fix(bundler): JSX synthetic import의 Span 충돌 버그 수정 + 최적화
- fix(bundler): automatic JSX transform에서 jsx-runtime import 자동 주입
- perf(linker): buildInlineObjectStr cache miss 시 불필요한 dupe 제거
- perf(linker): namespace import export 수집 결과 캐싱
- feat(runtime): configurable_exports 옵션 추가 (RN/Hermes 호환)
- fix(main): tsconfig 로딩을 번들 분기 전으로 이동 + jsx_runtime optional 전환
- fix(linker): ESM 래핑 모듈 namespace import에서 exports_xxx rename 제거
- fix(bundler): JSX 옵션을 번들러에 전달 + RN automatic 기본값 설정
- fix(runtime): Object.defineProperty에 configurable: true 추가
- fix(linker): self-import에 live binding 적용 제외
- test(bundler): __esm live binding 검증 테스트 추가 + simplify 수정
- fix(linker): export_getter_overrides 메모리릭 수정 + live_binding_syms 제거
- fix(bundler): __esm 모듈 간 live binding 적용 (rolldown 방식)
- fix(bundler): __esm 모듈에서 함수가 init 전 변수를 참조하는 TDZ 문제 수정
- fix(codegen): JSX factory rename이 일부 모듈에서 누락되는 문제 수정
- refactor(bundler): parseFromSliceLeaky → parseFromSlice로 교체
- fix(bundler): subprocess plugin JSON 파싱 메모리릭 수정
- fix(bundler): sourceMappingURL에 실제 파일명 사용 + 디버그 코드 제거
- feat(bundler): emitWithTreeShaking에 소스맵 생성 통합
- feat(bundler): 번들 모드 소스맵 생성 지원
- refactor(transformer): makeParenExpr 헬퍼 추출
- fix(transformer): optional chaining 변환 시 괄호 추가 (#732)
- fix(semantic): jsx_member_expression left side의 symbol 등록
- refactor: has_super 파라미터 제거, self.current_super_class 활용
- fix(transformer): super_call_this_alias를 field init에서만 활성화
- fix(transformer): /simplify 리뷰 반영
- fix(transformer): ES5 this→_this 치환 두 가지 버그 수정
- refactor(test): readFileSync를 static import로 변경
- style: oxfmt 포맷 적용
- fix(codegen): JSX 태그 이름에 번들러 rename 반영
ohah/bungae
- fix: App.tsx에 React default import 추가 + 디버그 코드 제거
- debug: JSX vs createElement vs raw RCTText 비교
- debug: ReactNativeViewConfigRegistry.get('RCTText') 직접 확인
- debug: RCTText viewConfig.style 런타임 확인
- debug: Text 스타일 속성별 테스트 (color/bgColor/fontSize/bold/underline)
- debug: Text ref/style 런타임 디버깅
- debug: 빨간 텍스트 색상 테스트
- debug: 색상값 포맷별 테스트
- debug: 렌더링 테스트 A/B/C (위치+스타일 분리 테스트)
- debug: 렌더링 테스트 마커 v2
- chore: ExampleApp 디버그 코드 제거
- feat(zts-bundler): dev 모드에서 --jsx-dev 전달
- debug: ZTS 렌더링 디버깅용 normal flow 테스트 추가