2026-05-10

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

요약 (AI 작성)

zntc는 npm 배포 구조를 크게 손봤습니다. NAPI 바이너리를 플랫폼별 하위 패키지로 나누는 뼈대를 만들고(#2935), release.yml에 매트릭스 NAPI 빌드와 npm publish job을 더했으며(#2936), 빌드 스크립트와 플랫폼 목록을 한 곳으로 모았습니다(#2937). 플랫폼은 musl과 win32-arm64·ia32를 포함한 9개로 늘었고, 로더는 linux libc를 구분해 musl 하위 패키지를 고르게 됐습니다(#2942). @zntc/core는 ESM·CJS 이중 exports를 갖추고 rspack-loader가 퍼블리시 대상에 등록됐으며(#2938), vite-plugin-zntc는 @zntc/vite-plugin으로 이름을 바꿨습니다(#2940). smoke test는 작업 공간 대신 tarball을 import하도록 고치고 win32-ia32 검증과 --deep·--minify-all 단계를 추가했습니다(#2943, #2962, #2980). CI 쪽은 --frozen-lockfile 일괄 적용과 bun-cache composite action으로 캐시 키를 하나로 묶었습니다(#2933, #2934).

변환 기능으로는 Hermes용 named capture group 정규식 다운레벨(#2930)과 transpile 경로의 react-refresh 지원이 들어왔습니다. TranspileOptions에 reactRefresh를 노출하면서 화살표 함수를 대입한 컴포넌트도 등록되게 했고(#2939), 훅 서명 $RefreshSig$는 reactRefreshHookSignatures로 선택해 켜도록 했습니다(#2941).

오후부터는 번들러·minify 결함 수정이 이어졌습니다. default re-export 체인에서 _default 대입이 사라지던 문제(#2944), wrapper-barrel 모듈 감지와 tree-shake 시드(#2946, #2950), linker의 namespace import 이름 충돌(#2954), minify한 ESM external import에서 식별자와 키워드 사이 공백이 빠지던 문제(#2963)를 고쳤습니다. mangler는 모듈 간 이름이 중첩 바인딩을 가리던 문제와 import 바인딩·한 글자 최상위 바인딩을 예약 이름에 넣지 않던 문제를 고쳤습니다(#2966, #2973, #2974). codegen은 템플릿 리터럴, 빈 else 분기, {로 시작하는 화살표 함수 본문, new 호출 괄호 제거, 구조 분해 단축 속성 rename 회귀를 바로잡았고, 함수 매개변수와 같은 이름의 var를 같은 바인딩으로 묶었습니다(#2978). 소스맵은 static member property 매핑 누락을 고친 뒤 매핑을 명시적으로 발행하는 방식으로 통일하고, 누락을 잡는 정적 감사를 CI에 넣었습니다(#2984, #2986). bundler deep-dive·Flow 지원 가이드 문서도 추가됐고(#2985), 가이드 보강·HMR API 문서·소스맵 names 발행 PR(#2987, #2988, #2989)은 이날 열렸습니다. 블로그 저장소 ohah.github.io에는 크론의 점검 표시 커밋 2개가 있습니다.

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

커밋

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#2989생성mergedmainfeat(codegen): sourcemap names 배열 + mapping name_index 발행 (Sentry production debugging)
ohah/zntc#2988생성mergedmainfeat(docs): dev-server 가이드에 import.meta.hot HMR API 섹션 추가
ohah/zntc#2987생성mergedmainfeat(docs): bundling/plugins/config/transpile 가이드 사용자 함정·한계 보강
ohah/zntc#2986생성 · 병합mergedmainchore(ci): codegen emitter 의 addSourceMapping 누락 정적 audit
ohah/zntc#2985생성 · 병합mergedmainfeat(docs): bundler-deep-dive + flow-support 가이드 페이지 추가
ohah/zntc#2984생성 · 병합mergedmainrefactor(codegen): sourcemap mapping 을 oxc-style 명시 발행으로 통일
ohah/zntc#2982생성 · 병합mergedmainfix(codegen): static member property sourcemap mapping 누락 회귀
ohah/zntc#2981생성 · 병합mergedmaintest(tsc): codegen fix 후속 스냅샷 갱신 (CI 회생)
ohah/zntc#2980생성 · 병합mergedmainchore(ci): smoke job 에 --deep --minify-all step 추가 (회귀 보호)
ohah/zntc#2979생성 · 병합mergedmainfix(codegen): destructuring shorthand 의 implicit RHS rename 시 longhand expand (#2977)
ohah/zntc#2978생성 · 병합mergedmainfix(binder): 함수 매개변수 + 같은 이름 var 를 동일 binding 으로 처리 (#2976)
ohah/zntc#2975생성 · 병합mergedmainfix(codegen): new callee paren stripping 이 비-MemberExpression 결합을 깨는 회귀 (#2960)
ohah/zntc#2974생성 · 병합mergedmainfix(mangler): 1-char top-level binding 도 reserved 등록 (#2965, #2958)
ohah/zntc#2973생성 · 병합mergedmainfix(mangler): import binding local name 을 Phase A reserved 에 등록 (#2971)
ohah/zntc#2972생성 · 병합mergedmainfix(codegen): static member property 슬롯에서 peephole identifier 치환 차단
ohah/zntc#2970생성 · 병합mergedmainfix(codegen): arrow function expression body 의 leftmost { 토큰 paren wrap (#2964)
ohah/zntc#2969생성 · 병합mergedmainfix(codegen/dce): empty/dead else 분기에서 else 키워드 자체 elide (#2967, #2961)
ohah/zntc#2968생성 · 병합mergedmainfix(codegen): template literal 의 list.start=0 가 raw span 분기로 잘못 진입 (#2957)
ohah/zntc#2966생성 · 병합mergedmainfix(mangler): cross-module Phase A 이름이 nested binding 과 충돌하는 shadow 차단
ohah/zntc#2963생성 · 병합mergedmainfix(bundler/emitter): minify ESM external import 식별자↔키워드 토큰 경계 공백 누락
ohah/zntc#2962생성 · 병합mergedmainchore(smoke): deep entry 검증 + --deep/--minify-all/--format-cjs flag
ohah/zntc#2954생성 · 병합mergedmainfix(bundler): linker namespace import collision detection
ohah/zntc#2953생성 · 병합mergedmainrefactor(bundler): wrapper-barrel detection helper + Module cache
ohah/zntc#2951생성 · 병합mergedmainrefactor(bundler): isLazyBarrelCandidate / isWrapperBarrel 의미 분리
ohah/zntc#2950생성 · 병합mergedmainfix(bundler): tree_shake wrapper-barrel module body seeding
ohah/zntc#2949생성 · 병합mergedmainchore(simplify): isLazyBarrelCandidate negation guard 평탄화
ohah/zntc#2948생성 · 병합mergedmainchore(lint): oxlint 23 → 0 워닝 정리
ohah/zntc#2947생성 · 병합mergedmainfix(integ-tests): direct spawn zntc — sh -c wrapper leak 회피
ohah/zntc#2946생성 · 병합mergedmainfix(bundler): wrapper-barrel detection in isLazyBarrelCandidate
ohah/zntc#2945생성 · 병합mergedmaintest(bundler): simplify lodash-es default import 회귀 테스트
ohah/zntc#2944생성 · 병합mergedmainfix(bundler): preserve _default emit for default re-export chain
ohah/zntc#2943생성 · 병합mergedmainfeat(ci): win32-ia32 smoke 추가 (Node 22 LTS)
ohah/zntc#2942생성 · 병합mergedmainfeat(napi): expand platform matrix to 9 (musl + win32-arm64/ia32)
ohah/zntc#2941생성 · 병합mergedmainfeat(refresh): $RefreshSig$ (hook signature) opt-in — reactRefreshHookSignatures
ohah/zntc#2940생성 · 병합mergedmainrefactor(vite-plugin): vite-plugin-zntc → @zntc/vite-plugin (scoped 통일)
ohah/zntc#2939생성 · 병합mergedmainfeat(transpile): TranspileOptions 에 reactRefresh 노출 — loader 경로 react-refresh
ohah/zntc#2938생성 · 병합mergedmainfix(core): @zntc/core dual ESM/CJS exports + rspack-loader publish 등록
ohah/zntc#2937생성 · 병합mergedmainrefactor(release): build script 분리 + PLATFORMS 단일 source + publish-smoke sub-package cover
ohah/zntc#2936생성 · 병합mergedmainci(release): release.yml 매트릭스 NAPI 빌드 + npm publish job
ohah/zntc#2935생성 · 병합mergedmainfeat(core): NAPI platform sub-package 분기 (5 platform skeleton)
ohah/zntc#2934생성 · 병합mergedmainci: bun-cache composite action 으로 캐시 hashFiles 단일화
ohah/zntc#2933생성 · 병합mergedmainci: bun install --frozen-lockfile 일괄 + emotion-v10 fixture install
ohah/zntc#2932생성 · 병합mergedmainrefactor: ES2015 generator scan 헬퍼 분리
ohah/zntc#2931생성 · 병합mergedmainfix(linker): shared_namespace hasNestedBinding fallback 누락 회귀
ohah/zntc#2930생성 · 병합mergedmainfeat(es5): Hermes named capture group regex 다운레벨 (#1063)