2026-05-15

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

요약 (AI 작성)

zntc는 새벽에 전날 이어 온 파서 정합성 수정과 TSC 감사 오라클 보강을 계속했습니다. for 문 머리의 using·await using 선언(#3202), if·while·for 본문 첫머리의 /를 정규식으로 다시 읽기(#3206), 타입 있는 화살표 함수 재해석 실패의 롤백(#3207), 문맥 키워드 레이블과 제네릭 메서드 이름 처리, stage3 accessor 데코레이터의 computed key(#3203)를 고쳤고, 추측 파싱의 저장·복원을 SpeculationCheckpoint로 묶었습니다(#3217). RN 에셋은 등록된 릴리스 에셋만 복사하도록 고친 뒤(#3216) 복사를 비동기 병렬로 바꾸고 AssetRegistry 메타데이터를 번들러 API로 노출하는 정리가 이어졌습니다(#3222). Flow는 라벨 있는 튜플 요소와 Hermes 규격을 따르는 튜플·조건부 타입·declare export·match 패턴 처리를 더했습니다(#3282, #3292, #3298).

낮부터는 minify 결과 크기를 줄이는 작업이 하루의 대부분을 차지했습니다. mangle을 tree-shake 뒤로 미뤄 죽은 바인딩이 짧은 이름을 차지하던 문제를 고치고(#3229), Phase B 예약 이름을 모듈 단위로 좁히고 전역 예약 집합을 모듈 사이에 공유했습니다(#3247, #3280). CJS 래퍼는 객체 리터럴 간접 참조 제거, 콜백 매개변수 단축, 쓰지 않는 module 매개변수와 createRequire shim 생략, 래퍼 안 "use strict" 제거 등을 하나씩 적용해 rxjs 번들을 PR마다 수 퍼센트씩 줄였습니다(#3250–#3264). 한 번만 쓰는 순수 복합식 인라인(#3232)과 쓰지 않는 함수식 이름 제거(#3266)에 이어, 모듈 수준 죽은 최상위 선언을 감사하고 사용자 순수 모듈에서 지우는 N-step 작업으로 mobx를 3.2KB 줄였습니다(#3268, #3272, #3274). mobx 형식의 CJS main shim을 자동 감지해 mobx 번들을 21% 줄인 resolver 변경(#3290)과 typeof 비교 단축, void 0 괄호 제거, return·throw 뒤 공백 제거 같은 세부 최적화도 병합됐습니다. 화살표 IIFE 축약은 커밋으로 main에 들어갔고 같은 이름의 PR #3231은 닫혔습니다.

그 밖에 Zig CLI의 --browserslist와 opera를 Chromium으로 대응시키는 처리(#3242, #3244), esbuild·swc처럼 네이티브 API를 처음 호출할 때 자동 초기화하는 기능(#3245), React 19 vite와 react-compiler 예제(#3249), Astro 문서 사이트의 SSR 막힘을 echarts 지연 로딩으로 푼 수정(#3239)이 들어왔습니다. 블로그 저장소 ohah.github.io의 커밋 8개는 크론 점검 기록과 일일 요약 갱신입니다.

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

커밋

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#3298생성 · 병합mergedmainfix(flow): match expression pattern soundness (Hermes parity)
ohah/zntc#3297생성 · 병합mergedmainperf(minify): if-else multi-expr block → ternary (three -54B, jotai -6B, S6-step1)
ohah/zntc#3296생성 · 병합mergedmainperf(minify): const → let 변환 + mergeDecls 통합 (three -40B, S4b)
ohah/zntc#3295생성 · 병합mergedmainperf(minify): return/throw + string/array/object/template 공백 제거 (mobx -31B, S3b)
ohah/zntc#3294생성 · 병합mergedmainperf(minify): return/throw + paren/unary 공백 제거 (three -14B, mobx -13B, S3)
ohah/zntc#3293생성 · 병합mergedmainfix(flow): declare export sub-form dispatch + ambient opaque type
ohah/zntc#3292생성 · 병합mergedmainfix(flow): conditional type infer/extends priority follows Hermes
ohah/zntc#3291생성 · 병합mergedmainperf(minify): undefined → void 0 paren elision (three -50B, S1)
ohah/zntc#3290생성 · 병합mergedmainfeat(resolver): mobx-style cjs main shim 자동 검출 (mobx -21%, rolldown 보다 작음)
ohah/zntc#3287생성 · 병합mergedmainperf(mangler): skip path 의 redundant 원본 이름 reserve 정리 (J epic step1)
ohah/zntc#3286생성 · 병합mergedmainperf(minify): elide function body trailing return; (-7B)
ohah/zntc#3285생성 · 병합mergedmainperf(minify): typeof X === "literal" → == (mobx -30B)
ohah/zntc#3284생성 · 병합mergedmainperf(minify): typeof X !== "undefined" → typeof X < "u" (mobx -100B)
ohah/zntc#3283생성 · 병합mergedmainrefactor(flow): tuple element parsing follows Hermes spec
ohah/zntc#3282생성 · 병합mergedmainfeat(flow): support labeled tuple elements
ohah/zntc#3280생성 · 병합mergedmainperf(mangler): K2-perf — global_reserved share across modules
ohah/zntc#3279생성 · 병합mergedmainrefactor(minify): dead_toplevel_audit counter atomic 화
ohah/zntc#3278생성 · 병합mergedmaintest(node-compat): align CJS shim splitting test with cbd201f6
ohah/zntc#3277생성 · 병합mergedmainfix(mangler): cross-module Phase A reserve in ESM bundle
ohah/zntc#3276생성 · 병합mergedmainrefactor(emitter): N-step4b cleanup — alloc+memcpy → Allocator.dupe
ohah/zntc#3275생성 · 병합mergedmainperf(minify): N-step4b — prepass→emitter ref_deltas hydrate
ohah/zntc#3274생성 · 병합mergedmainperf(minify): N-step4 — dead branch cascade ref decrement (인프라)
ohah/zntc#3273생성 · 병합mergedmainfeat(linker): shared namespace inline 의 per-entry size audit
ohah/zntc#3272생성 · 병합mergedmainperf(minify): N-step3b — module-level dead store elide for user-pure modules (mobx -3.2KB)
ohah/zntc#3271생성 · 병합mergedmainfeat(minify): N-step3a — audit per-binding name + span dump
ohah/zntc#3270생성 · 병합mergedmainfix(minify): function expression name elide 를 minify_syntax 만 적용
ohah/zntc#3269생성 · 병합mergedmaintest(stmt_info): N-step2 — mobx-style cascade graph correctness 검증
ohah/zntc#3268생성 · 병합mergedmainfeat(minify): N-step1 — module-level dead toplevel candidate audit
ohah/zntc#3266생성 · 병합mergedmainperf(minify): named function expression unused name elide (mobx -593B)
ohah/zntc#3265생성 · 병합mergedmainperf(codegen): multi-expr block 을 sequence 로 unwrap (rxjs -61B)
ohah/zntc#3264생성 · 병합mergedmainperf(emitter): CJS wrap body 의 trailing ; elide (rxjs -211B)
ohah/zntc#3263생성 · 병합mergedmainrefactor(emitter): M2-M4 follow-up — needsRequireShim helper + narration 정리
ohah/zntc#3262생성 · 병합mergedmainrefactor(codegen): "use strict" directive 리터럴을 const 로 추출
ohah/zntc#3261생성 · 병합mergedmainrefactor(emitter): CJS var-merge 패턴을 helper 로 통합 + narration 정리
ohah/zntc#3260생성 · 병합mergedmainfix(test): allow m.exports form in CJS wrapper bundle-minify
ohah/zntc#3259생성 · 병합mergedmainperf(emitter): helper var + 첫 CJS module 합치기 (rxjs -4B)
ohah/zntc#3258생성 · 병합mergedmainperf(codegen): CJS wrap 안 "use strict" directive elide (rxjs -1.94%)
ohah/zntc#3257생성 · 병합mergedmainperf(emitter): CJS_FACTORY_MIN $cj → $c 단축 (rxjs -224B)
ohah/zntc#3256생성 · 병합mergedmainperf(emitter): minify CJS wrapper 의 module var 선언 합치기 (rxjs -0.6%)
ohah/zntc#3255생성 · 병합mergedmainperf(emitter): CJS wrapper helper to anonymous arrow (rxjs -16B)
ohah/zntc#3254생성 · 병합mergedmainperf(emitter): elide createRequire shim when no external require call (-84B)
ohah/zntc#3253생성 · 병합mergedmainperf(emitter): CJS wrap unused 'module' param drop (rxjs -0.3%)
ohah/zntc#3252생성 · 병합mergedmainperf(emitter): CJS wrap callback param 단축 (rxjs -5.7%)
ohah/zntc#3251생성 · 병합mergedmainfix(core): update init-lifecycle tests for lazy auto-init contract
ohah/zntc#3250생성 · 병합mergedmainperf(emitter): minify CJS wrapper 의 object literal indirection 제거
ohah/zntc#3249생성 · 병합mergedmaindocs(examples): add react-19 vite + zntc-standalone react-compiler examples
ohah/zntc#3248생성 · 병합mergedmaintest(mangler): unified mangler Phase A/B 통합 회귀 가드 추가 (#1760)
ohah/zntc#3247생성 · 병합mergedmainfeat(mangler): Phase B reserved 를 모듈 단위로 좁힘 (rxjs -3.7%)
ohah/zntc#3246생성 · 병합mergedmainfix(astro): preserve landing code-example indent; clean up JSDoc samples
ohah/zntc#3245생성 · 병합mergedmainfeat(core): lazy auto-init for native API — match esbuild/swc UX
ohah/zntc#3244생성 · 병합mergedmainfeat(compat): map opera/op_mob to Chromium in parseBrowserslistEntry
ohah/zntc#3243생성 · 병합mergedmainfeat(mangler): mangle_audit — Phase A/B base54 1-char skip 측정
ohah/zntc#3242생성 · 병합mergedmainfeat(cli): support --browserslist in Zig CLI with simple engine+version queries
ohah/zntc#3241생성 · 병합mergedmainrefactor(astro): single echarts-setup module — union register, dedup imports
ohah/zntc#3240생성 · 병합mergedmainrefactor(astro): consolidate brand hex tokens to single source
ohah/zntc#3239생성 · 병합mergedmainfix(astro): unblock SSR by lazy-loading echarts; mermaid + benchmark share dark hook
ohah/zntc#3238생성 · 병합mergedmaindocs(astro): fix audit findings — WASM scope, vite link, RN flag split, intro links, chart re-render
ohah/zntc#3237생성 · 병합mergedmainperf(emitter): elide CJS wrapper module name string in minify mode
ohah/zntc#3236생성 · 병합mergedmainperf(bundler): namespace inline elide for tree-shaken re-exports (root cause)
ohah/zntc#3235생성 · 병합mergedmainperf(codegen): unwrap declaration-free standalone block at program-root
ohah/zntc#3234생성 · 병합mergedmainperf(bundler): namespace getter minify-whitespace tokens
ohah/zntc#3233생성 · 병합mergedmainfeat(minify): paren-elimination at statement-root for pure compound inline
ohah/zntc#3232생성 · 병합mergedmainfeat(minify): inline single-use pure compound expressions
ohah/zntc#3231생성closedmainfeat(minify): IIFE collapse — (()=>X)() → X
ohah/zntc#3230생성 · 병합mergedmainfix(mangle): statement-level reachability guard + namespace getter dead-export skip
ohah/zntc#3229생성 · 병합mergedmainfix(mangle): tree-shake 후 mangle 로 짧은 이름 풀 잠식 회귀 수정
ohah/zntc#3228생성 · 병합mergedmainfeat(mangle-report): nested stats + ZNTC_DEBUG=mangle_dump 추가
ohah/zntc#3227생성 · 병합mergedmainrefactor(rn-asset): drop unread width/height/hash from metadata sidechannel
ohah/zntc#3226생성 · 병합mergedmainrefactor(rn-asset): collapse emitAssetRegistryCall args into input struct + drop dead hash
ohah/zntc#3225생성 · 병합mergedmainrefactor(rn-asset): emit follow-up — borrow escape + arena for temp rel + doc
ohah/zntc#3224생성 · 병합mergedmainperf(rn-asset): emit directly into metadata allocator, drop clone step
ohah/zntc#3223생성 · 병합mergedmainrefactor(rn-asset): tighten metadata wire-up after simplify follow-up
ohah/zntc#3222생성 · 병합mergedmainrefactor(rn-asset): expose AssetRegistry metadata as bundler API
ohah/zntc#3221생성 · 병합mergedmainperf(rn-asset): switch release copy to fs/promises + Promise.all
ohah/zntc#3220생성 · 병합mergedmainrefactor(esm_wrap): dedupe re-export guard + flatten star getter nesting
ohah/zntc#3219생성 · 병합mergedmainchore(rn-asset): drop legacy projectRoot walk helpers
ohah/zntc#3218생성 · 병합mergedmaintest(parser): add regression guard for ternary parenthesized arrow speculation
ohah/zntc#3217생성 · 병합mergedmainrefactor(parser): extract SpeculationCheckpoint struct
ohah/zntc#3216생성 · 병합mergedmainfix(rn): copy only registered release assets
ohah/zntc#3215생성 · 병합mergedmainfix(parser): reject literal keyword as labeled break/continue + comment cleanup
ohah/zntc#3214생성 · 병합mergedmainchore(scripts): audit detects await-as-identifier patterns as policy_strict
ohah/zntc#3213생성 · 병합mergedmainchore(scripts): audit treats TS2405/TS2499/TS2500 as syntax-equivalent
ohah/zntc#3212생성 · 병합mergedmainfix(parser): contextual keyword as generic method name
ohah/zntc#3211생성 · 병합mergedmainfix(parser): accept contextual keyword as labeled break/continue label
ohah/zntc#3210생성 · 병합mergedmainchore(scripts): audit detects use-strict in non-simple params
ohah/zntc#3209생성 · 병합mergedmainchore(scripts): audit treats TS2660 as syntax-equivalent
ohah/zntc#3208생성 · 병합mergedmainfix(parser): clear in_decorator inside parenthesized expression
ohah/zntc#3207생성 · 병합mergedmainfix(parser): tryReinterpretAsTypedArrow rolls back ParseError without propagating
ohah/zntc#3206생성 · 병합mergedmainfix(parser): rescan / as regex at start of if/while/for/with body
ohah/zntc#3205생성 · 병합mergedmainchore(scripts): audit adds TS2427/TS5076 + Duplicate parameter as spec-strict
ohah/zntc#3204생성 · 병합mergedmainchore(scripts): audit treats TS2356 as syntax-equivalent
ohah/zntc#3203생성 · 병합mergedmainfix(parser): handle computed key in stage3 accessor decorator transform
ohah/zntc#3202생성 · 병합mergedmainfix(parser): support using / await using in for-statement header