2026-04-06
요약 (AI 작성)
ZTS에서 block scoping(let/const 블록 단위 스코프 격리)을 구현하고, for-loop let/const 클로저 캡처 IIFE 추출까지 완성하여 ES5 다운레벨링의 핵심 기능을 마무리했습니다. AST 통합 작업으로 old_ast/new_ast를 단일 append-only AST로 합치고, comptime 노드 레이아웃 인프라(Tag.dataKind/extraChildOffsets)를 도입했습니다. tagged template literal, new.target 다운레벨링을 구현하고, ES2015 params lowering을 2-pass로 전환했습니다. 번들 소스맵에 sourcesContent를 추가하고, namespace getter에서 JS 예약어 따옴표 처리와 live binding 보존을 구현했습니다. Suji에서는 BrowserWindow API 설계와 멀티 윈도우 PoC를 진행했습니다.
커밋
ohah/zts
- fix(linker): namespace getter에서 JS 예약어 따옴표 처리 + 테스트 추가
- fix(linker): namespace 인라인 객체를 getter로 생성하여 live binding 보존
- refactor: /simplify 리뷰 반영 — 매직 넘버, 중복 주석, 깨진 테스트 수정
- fix(bundler): 런타임 헬퍼 ES5 호환 + 합성 노드 주석 위치 수정
- fix(bundler): RN 플랫폼에서 IIFE 래핑 제거
- fix(bundler): RN 엔트리 모듈도 __esm 래핑하여 초기화 순서 보장
- fix(bundler): __copyProps/__toCommonJS 런타임 헬퍼를 Rolldown 호환으로 수정
- fix(transformer): shorthand property에서 scope hoisting rename 미적용 수정
- refactor(semantic): flow_component_wrapper 방문 로직을 별도 메서드로 추출
- refactor: /simplify 리뷰 반영 — 소스맵 매핑 헬퍼 추출
- fix(sourcemap): 번들 소스맵에 sourcesContent 추가 및 preamble 오프셋 수정
- fix(semantic): Flow component syntax body의 symbol_id 미설정 수정
- fix(codegen): export default
mangling 시 할당문 누락 수정 - fix(transformer): block scoping 격리에서 destructuring 패턴 지원 (#800)
- refactor: /simplify 리뷰 반영 — block scoping 정리
- refactor: /simplify 리뷰 반영 — block scoping 정리
- feat(transformer): block scoping 블록 단위 let/const 스코프 격리 (#784)
- fix(transformer): spread in new expression에서 괄호 누락 수정 (#783)
- fix(transformer): template literal 변환에서 보간 표현식 괄호 추가 (#782)
- refactor: /simplify 리뷰 반영 — dangling pointer 수정 정리
- fix(transformer): class accessor 변환에서 extra_data dangling pointer 크래시 수정 (#788)
- fix(ast): export_default_declaration, jsx_fragment 노드 레이아웃 오분류 수정
- fix(ast): object_property 노드 레이아웃 오분류 수정 (#790)
- refactor: /simplify 리뷰 반영 — 중복 제거 + 코멘트 정리
- fix(transformer): block scoping 재귀→반복 변환 + AST 노드 레이아웃 오분류 수정
- refactor: /simplify 스킵 항목 해소
- fix(transformer): /simplify 리뷰 반영 — 버그 3개 수정
- fix(transformer): getNodeText에서 string_table 참조 처리 누락 수정
- refactor(ast): comptime 노드 레이아웃 인프라 — Tag.dataKind/extraChildOffsets/extraListOffsets
- fix(bundler): TLA scope-hoisted IIFE를 async function으로 감싸기 (#779)
- refactor: /simplify 리뷰 반영 — 버그 수정 + 코드 품질 개선
- feat(transformer): for-loop let/const 클로저 캡처 IIFE 추출 (Phase 4)
- feat(transformer): tagged template literal 다운레벨링 구현
- feat(transformer): new.target 다운레벨링 구현
- fix(transformer): for-of 블록 없는 body에서 변수 바인딩 누락 수정
- test: ES2015 다운레벨링 테스트 38개 추가 (SWC 대비 커버리지 보강)
- fix(bundler): __esm 래핑 시 TLA async 키워드 누락 수정 + 문서 현행화
- test: template literal 스냅샷 업데이트
- refactor: /simplify 리뷰 반영 — 중복 제거 + pass2 visitNode 제거
- refactor: ES2015 params lowering을 2-pass로 전환 (Phase 4)
- refactor(flow): component ref 변환을 파서로 이동 (Phase 3)
- refactor: linker/emitter new_ast 파라미터명 변경 + transformer_node_start를 Transformer로 이동
- refactor: /simplify 리뷰 반영 — OOM 안전성, dead code, 주석 정리
- refactor: old_ast/new_ast 분리 → 단일 AST (append-only) 통합
- fix(flow): component 문법의 ref 파라미터를 React.forwardRef로 래핑
- fix(transformer): __rest 제외 목록에서 string literal 키 누락 수정
- fix(transformer): buildStandaloneFunc ES5 params lowering 누락 수정
- fix(transformer): constructor/async/generator ES5 destructuring lowering 누락 일괄 수정
- fix(transformer): class method/setter destructuring/rest params ES5 lowering 누락 수정
- style: zig fmt
- fix(transformer): 화살표 함수 destructuring/rest params가 ES5 lowering 누락되는 버그 수정
- fix(transformer): JSX spread props가 --target=es5에서 Object.assign으로 변환되지 않는 버그 수정
- fix(transformer): rest_element가 JSX 분기로 잘못 라우팅되는 버그 수정
- fix(jsx_lowering): /simplify 리뷰 — namespaced tag, dead code, control char escape
- refactor(codegen): 번들 모드 JSX를 Transformer로 이동 + codegen JSX 코드 제거 (Phase 2)
- refactor(transformer): JSX lowering을 codegen에서 Transformer 패스로 이동 (Phase 1)