2026-04-27

날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.

요약 (AI 작성)

zntc는 소형 패키지 번들 크기에서 esbuild·rolldown·rspack과의 격차를 좁히는 데 집중했습니다. 스모크 비교 기준을 세 번들러 중 가장 작은 값으로 바꾸고 production NODE_ENV를 맞춘 뒤(#2056, #2067), export * 도달성과 직접 재수출 평가 범위를 좁히고(#2044, #2045), 객체 리터럴 메서드를 순수로 보아 쓰이지 않는 Svelte custom element 연쇄를 걷어 냈습니다(#2047, #2049). CJS 쪽은 named import 헬퍼 비용을 줄이고(#2061), 정적 CJS named export와 module.exports 객체 형태의 미사용 프로퍼티를 tree shaking하며(#2063, #2068), linker 상수를 tree shaking 전에 전파하고 production 환경 문자열 비교를 접습니다(#2058, #2059). minify 출력의 블록 경계 세미콜론도 줄였습니다(#2048).

이 최적화 사이사이 생긴 회귀도 고쳤습니다. 변환 뒤 분석 재생성이 ESM을 CJS로 강등하고 tree shaking된 대상의 preamble을 남기던 문제(#2053), 전이적 CJS default 재수출의 __toESM 누락(#2064), CJS 래핑 모듈에 transformer가 넣은 헬퍼 import가 지워지던 문제(#2075)입니다. Expo RN dev 변환과 rename된 new callee의 괄호, node 해석에서 module 필드 우선(#2054, #2055), HMR 재빌드 메모리 소유권(#2050)도 바로잡았습니다. 정리 작업으로 oxlint 경고를 0으로 만들고(#2062), __toESM 판정을 linker와 emitter가 공유하게 했으며(#2066), 정적 키 이름 추출과 문장 정보 빌더를 공용화했습니다(#2071~#2074).

bungae는 codegen Babel 래퍼를 직접 RN codegen 호출로 바꾸고, tsconfig path alias를 NAPI 번들러에 넘기도록 고쳤으며, Expo 예제의 HMR 파일 갱신을 확인했습니다. ohah.github.io에는 ZTS 개발기 13·14편 맞춤법 검사와 4월 27일 오늘의 커밋 요약이 올라왔습니다.

공개 커밋 67개, 해당일 생성 또는 병합된 PR 28개를 정리했습니다. PR 생성 28개·병합 28개는 같은 PR이 양쪽에 포함될 수 있습니다.

커밋

ohah/bungae

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#2075생성 · 병합mergedmainfix(tree_shaker): cjs-wrap 모듈의 transformer-injected helper import 보존
ohah/zntc#2074생성 · 병합mergedmainrefactor(stmt_info): share Phase 1 between two builders
ohah/zntc#2073생성 · 병합mergedmainrefactor(ast): host objectPropertyValue helper alongside staticKeyName
ohah/zntc#2072생성 · 병합mergedmainrefactor(ast): centralize static-key-name extraction
ohah/zntc#2071생성 · 병합mergedmainrefactor(stmt_info): encapsulate sym -> stmt list lookups
ohah/zntc#2070생성 · 병합mergedmainrefactor(emitter): drop redundant skip_nodes.capacity guards
ohah/zntc#2069생성 · 병합mergedmainchore(simplify): cjs object-shape DCE 정리 (followup)
ohah/zntc#2068생성 · 병합mergedmainCJS module.exports 객체 형태 named export DCE 지원
ohah/zntc#2067생성 · 병합mergedmainfeat(benchmark): smoke.ts --filter 콤마 분리 다중 패턴 지원
ohah/zntc#2066생성 · 병합mergedmainrefactor(bundler): share __toESM predicate between linker and emitter
ohah/zntc#2065생성 · 병합mergedmainchore(simplify): chunk runtime split + early-exit (followup)
ohah/zntc#2064생성 · 병합mergedmainfix(bundler): emit __toESM for transitive CJS default re-export
ohah/zntc#2063생성 · 병합mergedmainfix: 정적 CJS named export tree-shaking
ohah/zntc#2062생성 · 병합mergedmainchore(lint): drive oxlint warnings to zero
ohah/zntc#2061생성 · 병합mergedmainCJS named import 헬퍼 오버헤드 줄이기
ohah/zntc#2059생성 · 병합mergedmainfix: tree-shaking 전에 linker constant 전파
ohah/zntc#2058생성 · 병합mergedmainfix(minify): production env 문자열 체크 fold
ohah/zntc#2057생성 · 병합mergedmainnamespace preamble helper-free 회귀 테스트 추가
ohah/zntc#2056생성 · 병합mergedmain벤치마크 smoke의 production NODE_ENV 비교 정렬
ohah/zntc#2055생성 · 병합mergedmainfix(bundler): node resolve에서 module 필드 우선
ohah/zntc#2054생성 · 병합mergedmainfix(bundler): Expo RN dev 변환 안정화
ohah/zntc#2053생성 · 병합mergedmainfix(bundler): #2051/#2052 — refresh 가 ESM 강등하고 tree-shaken target 의 preamble 도 emit
ohah/zntc#2050생성 · 병합mergedmainfix(watch): HMR rebuild 메모리 소유권 문제 수정
ohah/zntc#2049생성 · 병합mergedmainfix(bundler): object method purity로 Svelte fanout 축소
ohah/zntc#2048생성 · 병합mergedmainperf(codegen): trim minified block boundary semicolons
ohah/zntc#2047생성 · 병합mergedmainfix(bundler): 미사용 Svelte custom-element fanout 제거
ohah/zntc#2045생성 · 병합mergedmainfix(bundler): direct re-export evaluation fanout 정밀화
ohah/zntc#2044생성 · 병합mergedmainRefine re-export star reachability