2026-05-02

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

요약 (AI 작성)

zntc는 React Native 빌드에서 lodash-es를 하나만 가져와도 모든 모듈이 번들에 들어가던 회귀를 먼저 고쳤습니다. --platform=react-native가 ESM 모듈을 .esm으로 감싸는 방식과 tree-shaker의 부수 효과 판단이 엉켜 sideEffects: false barrel이 지워지지 않던 문제로, 회귀 테스트와 함께 병합됐습니다(#2409). 이어 tree-shaking 구현 가이드와 한·영 문서 페이지를 추가했고(#2411), tsconfig 자동 탐색을 프로세스 단위로 캐시하는 TsconfigCache를 NAPI와 vite 플러그인에 넣었습니다(#2412).

transpile의 binding-lite 경로는 하루 내내 다듬었습니다. import 생략 안전성을 보강한 뒤(#2410) 파라미터, 함수 안 var, 함수 표현식 이름이 import를 가리는 경우를 차례로 처리해 shadow 때문에 일반 경로로 넘어가는 횟수를 줄였고(#2414, #2419, #2423, #2424, #2429), TransformPlan 적중률 보고(#2421)와 comptime visitor로 묶은 함수 var 탐색기(#2427)가 들어갔습니다. 번들러는 할 일이 없는 graph 변환 사전 패스를 건너뛰고 AST의 문법 플래그로 사전 패스 진입을 O(1)에 판정하도록 바꿨으며(#2432, #2433, #2436), 같은 PR에서 TS export =를 module.exports =로 내리고 minify 대상에서 보호했습니다. 메모리 결함도 여럿 잡았습니다. Flow 패턴을 막던 미초기화 메모리 두 건과 slice 재할당 뒤 옛 포인터를 쓰던 형제 지점들(#2425, #2428), var 호이스팅 rename slice의 use-after-free(#2434), import_record specifier의 use-after-free로 require() 호출이 그대로 남던 문제(#2435)입니다. graph 탐색의 read/stat 비용 개선 #2440은 이날 열려 5월 3일에 병합됐습니다.

RN codegen은 상속 합성과 파일 간 참조 허용(#2415), Flow 패턴과 cast 래퍼 해제(#2420), Pick·Omit 유틸리티 타입과 마지막 prop 우선 중복 제거(#2431), CT.X 같은 namespace 한정 타입 참조(#2441), T[] 배열 표기와 중첩 객체 리터럴 prop 타입(#2444, #2446)을 지원하게 됐습니다. 플러그인 이름은 rn_codegen으로 바꿨고(#2442), @react-native/codegen 결과와 비교하는 스냅샷 기반을 만들어 4개 스펙 기준선을 두고 바이트 비교에서 의미 비교로 옮겼습니다(#2443, #2448, #2449). 파서는 prop 위치의 Flow exact object 문법을 처리하게 됐습니다(#2450).

bungae는 Bun이 CJS 산출물에 넣는 import.meta.require 폴리필 때문에 Node에서 bungae build가 실패하던 문제를 후처리로 고쳤고, codegen은 ZTS RN preset 기본값을 믿도록 해 _NATIVE 토글을 없앴으며, zts 서브모듈과 lockfile을 갱신했습니다. 블로그 저장소 ohah.github.io의 커밋 15개는 크론이 CRON_CRD_WRITE.md 점검 상태를 기록한 커밋 14개와 요약 추가 커밋 1개입니다.

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

커밋

ohah/bungae

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#2451생성 · 병합mergedmaintest(parser): expand Flow exact object edge cases for #2447
ohah/zntc#2450생성 · 병합mergedmainfix(parser): Flow exact object {| ... |} at prop position (#2447)
ohah/zntc#2449생성 · 병합mergedmainrefactor(codegen): semantic-diff snapshot test, drop env-var gate (#2348 후속)
ohah/zntc#2448생성 · 병합mergedmaintest(codegen): byte-diff snapshot infra vs @react-native/codegen (#2348 후속)
ohah/zntc#2446생성 · 병합mergedmainfeat(codegen): inline / nested object literal prop type → mixed (#2348 후속)
ohah/zntc#2444생성 · 병합mergedmainfeat(codegen): T[] postfix array type support (#2348 후속)
ohah/zntc#2443생성 · 병합mergedmainfeat(codegen): RN codegen reference + 4-spec snapshot baseline
ohah/zntc#2442생성 · 병합mergedmainrefactor(plugins): rename codegen → rn_codegen for clarity
ohah/zntc#2441생성 · 병합mergedmainfix(codegen): namespace-qualified type refs (CT.X) in schema_builder
ohah/zntc#2440생성mergedmainperf(bundler): graph discovery read/stat 비용 개선
ohah/zntc#2439생성 · 병합mergedmaintest(bundler): runtime helper skip name suppress 회귀 보강
ohah/zntc#2438생성 · 병합mergedmainrefactor(ast): FunctionExtra / ArrowExtra typed offset struct 도입
ohah/zntc#2436생성 · 병합mergedmainperf(bundler): AST feature 기반 graph pre-pass gate 확장
ohah/zntc#2435생성 · 병합mergedmainfix(bundler): import_record specifier UAF causing raw require() leak
ohah/zntc#2434생성 · 병합mergedmainfix(bundler): rename slice use-after-free (0xAA) in var hoisting
ohah/zntc#2433생성 · 병합mergedmainperf(parser): O(1) graph pre-pass gate + TS export = CJS lowering
ohah/zntc#2432생성 · 병합mergedmainperf(bundler): no-op graph pre-pass 스킵
ohah/zntc#2431생성 · 병합mergedmainfeat(codegen): Pick/Omit utility types + last-wins prop dedup (#2417, #2418)
ohah/zntc#2430생성closedmainperf(transpile): share BindingLite function-scope shadow scan
ohah/zntc#2429생성 · 병합mergedmainperf(transpile): thread fn-scope shadow counter through binding-lite scan
ohah/zntc#2428생성 · 병합mergedmainfix(transformer): apply slice-realloc fix to 7 sibling sites (#2426)
ohah/zntc#2427생성 · 병합mergedmainrefactor(transpile): unify binding-lite function-var walker via comptime visitor
ohah/zntc#2425생성 · 병합mergedmainfix(parser,transformer): root-cause #2422 + sibling realloc sites
ohah/zntc#2424생성 · 병합mergedmainperf(transpile): handle function expression import shadows
ohah/zntc#2423생성 · 병합mergedmainperf(transpile): handle function var import shadows
ohah/zntc#2421생성 · 병합mergedmainperf(transpile): report TransformPlan hit rates
ohah/zntc#2420생성 · 병합mergedmainfeat(codegen): Flow patterns root-cause + cast wrapper unwrap (#2348 후속)
ohah/zntc#2419생성 · 병합mergedmainperf(transpile): reduce BindingLite shadow fallbacks
ohah/zntc#2415생성 · 병합mergedmainfeat(codegen): schema_builder inheritance composition + permissive cross-file (#2348)
ohah/zntc#2414생성 · 병합mergedmainperf(transpile): BindingLite 파라미터 shadow 처리
ohah/zntc#2412생성 · 병합mergedmainperf(napi): TsconfigCache — autodiscover walk per-process 캐시 (#2367)
ohah/zntc#2411생성 · 병합mergedmaindocs(bundler): add tree-shaking implementation guide
ohah/zntc#2410생성 · 병합mergedmainfix(transpile): BindingLite import elision 안전성 보강
ohah/zntc#2409생성 · 병합mergedmainfix(tree-shake): RN .esm wrap 환경에서 sideEffects:false barrel DCE (#2398)