2026-04-20

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

요약 (AI 작성)

zntc는 minify 최적화를 본격적으로 키웠습니다. 함수·블록 안에서 쓰이지 않는 선언을 지우는 dead store 제거(#1645)와 결과값이 쓰이지 않는 식을 줄이는 unused expression simplify를 oxc 방식으로 이식했고(#1649, #1662, #1663), 패스를 고정점까지 반복하는 루프(#1651), 템플릿 리터럴 부분 rewrite(#1664), scope hoisting된 최상위 const/let의 var 다운그레이드(#1667), 클래스별 #private 이름 축약(#1668)을 더했습니다. 그 과정에서 for 루프 바인딩을 지우던 회귀(#1647), "use client" 같은 directive가 쓰이지 않는 식으로 지워지던 회귀를 directive 노드 파싱으로 막은 수정(#1653), 버려진 선언 노드를 dead store 대상으로 훑던 문제(#1677)를 고쳤습니다.

시맨틱 분석은 참조 종류를 bitset 플래그로 바꾸고 복합 대입·증감을 읽기와 쓰기로 정확히 나눴으며(#1641~#1643), 스코프 단위 선언 참조와 문장 인덱스를 들였습니다(#1670, #1671). private 메서드·accessor의 읽기/쓰기 오진 제거(#1655), 객체 리터럴의 private 메서드 early error(#1657), async 화살표 함수 안 중첩 화살표 매개변수의 await 검사(#1659), 블록·switch·모듈의 var와 lexical 재선언 검출(#1661)로 스펙 준수도 보강했습니다. 블록 안 let/const/class와 화살표 함수 본문 안 var/function 호이스팅, Flow component 래퍼의 ref 해석도 고쳤습니다(#1679, #1680, #1681).

번들러는 transformer 재설계의 첫 단계로 emit 결과를 CompiledModule 값 타입으로 분리했고(#1673), 그 결과를 캐시하는 #1674와 HMR alias table 소유권 수정 #1682는 이날 PR이 열렸습니다. bungae 실측에서 나온 HMR changed_modules use-after-free(#1675)와 bundle+ES5에서 var _this를 깨뜨리던 고아 함수 선언(#1676)도 고쳤습니다.

ohah.github.io에는 4월 7일부터 20일까지의 오늘의 커밋 요약과 _meta.json 날짜 정렬 수정이 올라갔고, 나머지는 맞춤법 크론의 상태 갱신 커밋입니다.

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

커밋

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/zntc#1682생성mergedmainfix(bundler): HMR alias_table ownership transfer (malloc abort)
ohah/zntc#1681생성 · 병합mergedmainfix(semantic): hoist var/function inside arrow function body
ohah/zntc#1680생성 · 병합mergedmainfix(semantic): visit Flow component wrapper const_decl for React ref resolution
ohah/zntc#1679생성 · 병합mergedmainfix(semantic): hoist let/const/class in block scope for static resolution
ohah/zntc#1678생성 · 병합mergedmainrefactor(minify): require scratch allocator as explicit parameter
ohah/zntc#1677생성 · 병합mergedmainfix(minify): skip orphan var_decls in dead-store elimination
ohah/zntc#1676생성 · 병합mergedmainfix(class): avoid orphan function_decl breaking var _this in bundle+es5
ohah/zntc#1675생성 · 병합mergedmainfix(bundler): HMR changed_modules use-after-free
ohah/zntc#1674생성mergedmainperf(bundler): #1672 Phase B2 — compiled output cache
ohah/zntc#1673생성 · 병합mergedmainrefactor(bundler): #1672 Phase B1 — CompiledModule 타입 도입
ohah/zntc#1671생성 · 병합mergedmainrefactor(semantic): #1669 follow-up — drop NodeIndex-based Symbol fields
ohah/zntc#1670생성 · 병합mergedmainrefactor(semantic): #1669 scope-wide declare ref + per-scope stmt index
ohah/zntc#1668생성 · 병합mergedmainperf(minify): #1632 Phase 1 — private field name mangle
ohah/zntc#1667생성 · 병합mergedmainperf(minify): #1630 top-level const/let → var 다운그레이드
ohah/zntc#1664생성 · 병합mergedmainfeat(minify): #1650 TemplateLiteral 부분 rewrite (oxc 방식)
ohah/zntc#1663생성 · 병합mergedmainfeat(minify): #1650 unused simplify 확장 — Array / Call / New / Object
ohah/zntc#1662생성 · 병합mergedmainfeat(minify): #1650 step 2 — unused expression simplify (c/d)
ohah/zntc#1661생성 · 병합mergedmainfix(semantic): #1660 block/switch/module 의 var↔lexical 재선언 조기검출 보강
ohah/zntc#1659생성 · 병합mergedmainfix(parser): #1658 async arrow 중첩 arrow 파라미터 'await' 검사 누락 수정
ohah/zntc#1657생성 · 병합mergedmainfix(parser): #1656 object literal 의 private method/accessor 전체 variant 에 early error
ohah/zntc#1655생성 · 병합mergedmainfix(semantic): #1654 ZTS1102/1103/1104 오진 제거 — private method/accessor 는 runtime TypeError
ohah/zntc#1653생성 · 병합mergedmainfix(parser): #1652 directive prologue 를 .directive 노드로 파싱 — #1649 회귀
ohah/zntc#1651생성 · 병합mergedmainfeat(minify): #1650 fixed-point loop 도입 (step 1 — wrapper)
ohah/zntc#1649생성 · 병합mergedmainfeat(minify): #1644 PR1.5 — unused expression simplify (a + b)
ohah/zntc#1648생성 · 병합mergedmainrefactor(ast): #1646 공통 child walker 추출 — 5곳 중복 순회 일소
ohah/zntc#1647생성 · 병합mergedmainfix(minify): #1647 dead store 가 for-loop binding 을 제거하던 회귀
ohah/zntc#1645생성 · 병합mergedmainfeat(minify): #1644 PR1 — unused declaration 제거 (dead store elimination)
ohah/zntc#1643생성 · 병합mergedmainrefactor(semantic): #1640 compound assign / update 를 {read, write} 로 정확 분류 (PR C)
ohah/zntc#1642생성 · 병합mergedmainrefactor(semantic): #1640 stmt_declared 중간 캐시 제거 — references.declare flag 로 통합 (PR B)
ohah/zntc#1641생성 · 병합mergedmainrefactor(semantic): #1640 ReferenceKind enum 을 ReferenceFlags bitset 으로 교체 (PR A)