2026-06-01
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
zntc는 lazy dev 모듈 HMR 작업을 진행했습니다. dev+split lazy 빌드가 모듈을 개별 factory로 감싸 전역 per-module __zntc_modules 레지스트리에 등록하도록 바꿔 청크를 넘나드는 hot-replace를 가능하게 했고(#4088), zntc dev 웹 dev 서버에서 컴포넌트를 편집하면 리로드 없이 state를 보존하는 React Fast Refresh를 연결했습니다(#4089). Zig DevServer의 /@react-refresh preamble이 __ReactRefresh 글로벌을 세팅하지 않던 문제(#4091)와 automatic JSX dev 다중 모듈 빌드에서 겹치는 jsx-runtime helper 선언 때문에 _jsx$1 is not defined가 나던 문제(#4092)도 고쳤습니다.
이어 dev_split의 청크 간 결함을 잇달아 수정했습니다. 동적 청크가 entry 모듈 export를 노출하지 않아 lazy 라우트가 렌더되지 않던 회귀(#4090), re-export forwarding(#4093), 청크 간 공유 CJS의 import·require()(#4094)와 re-export-from-CJS·export *·side-effect(#4095)를 글로벌 레지스트리로 해석하게 했습니다. 예약어 default를 구조 분해하며 생기던 SyntaxError(#4096, #4099), const export를 초기화 전에 snapshot하던 문제(#4098), star 재노출 누락(#4100)도 바로잡았습니다. 청크 간 같은 이름 export 충돌(이슈 #4101)은 방어 테스트 스위트(#4103)를 먼저 깔고, 비활성 전역 네이밍 인프라(#4104)를 거쳐 dev_split에서 이를 활성화했습니다(#4105). production splitting의 같은 한계는 todo 테스트로 고정해 두었습니다(#4106).
파서 쪽에서는 zig build test에서 빠져 있던 parser 유닛 테스트를 포함시키고(#4112), 바인딩 타깃 없이 = default만 오는 구조 분해 패턴에서 나던 세그폴트(#4113), import attribute 중복 키 검사의 use-after-scope로 정상 키를 거부하던 문제(#4114), automatic 런타임에서 spread 하나뿐인 children이 잘못된 JS를 만들던 문제(#4115)를 고쳤습니다. 블로그 저장소에는 오늘의 커밋 누락 날짜 보강과 요약 작성, 맞춤법 교정 커밋이 올라갔습니다.
공개 커밋 23개, 해당일 생성 또는 병합된 PR 22개를 정리했습니다. PR 생성 22개·병합 22개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/ohah.github.io
ohah/zntc
- fix(jsx): automatic 런타임에서 spread-only child 를 배열로 감싸 SyntaxError 수정
- fix(parser): import attribute 중복키 검사의 use-after-scope 수정 (정상 키 오거부)
- fix(parser): destructuring default 직후 invalid 바인딩 타겟에서 파서 세그폴트 수정
- test(parser): zig build test 에 parser 유닛 테스트 포함 (root.zig _ = parser;)
- test(bundler): production cross-chunk same-name 타깃 TDD (todo, #4101 production 범위)
- feat(bundler): dev_split cross-chunk 같은 이름 충돌 해결 — 전역 일관 네이밍 활성화 (Inc-2/3, #4101)
- feat(bundler): cross-chunk 전역 일관 네이밍 인프라 — Inc-1 (비활성, RFC #3940 / 이슈 #4101)
- test(bundler): cross-chunk 심볼 네이밍 방어 스위트 (이슈 #4101 lifecycle 재설계 안전망)
- test(bundler): B(같은 이름 cross-chunk dedup) test.todo 를 추적 이슈 #4101 에 연결
- fix(bundler): dev_split 동적 청크가 cross-chunk export *(star) 재노출을 누락하던 버그 (follow-up #2)
- fix(bundler): cross-chunk default export 의 RHS 예약어 SyntaxError 해결 (follow-up C) + B 한계 문서화
- fix(bundler): dev_split user-entry 청크가 cross-chunk const export 를 init 전 snapshot 하던 버그 (follow-up A)
- test(bundler): cross-chunk 예약어 default 바인딩 해석 회귀 lock (#4096 후속)
- fix(bundler): cross-chunk 예약어 export(default) destructuring SyntaxError — canonical 모듈 기반 바인딩 해석
- fix(bundler): dev_split 의 re-export-from-CJS/export*/side-effect 를 글로벌 레지스트리로 해석
- fix(bundler): dev_split lazy 청크의 import/require() 크로스청크 공유 CJS 를 글로벌 레지스트리로 해석
- fix(bundler): dev_split 동적 청크가 re-export forwarding(export {x} from)을 네임스페이스 getter로 노출
- fix(bundler): dev wrap-all 에서 겹치는 helper import(jsx-runtime)의 hoisted 선언을 canonical 명으로
- fix(dev-server): Zig DevServer serveReactRefresh 가 __ReactRefresh 글로벌 + dev cjs 본문 서빙
- fix(bundler): dev_split 동적 청크가 entry 모듈 export 를 노출 — lazy 라우트 렌더 복구 (#4079 회귀)
- feat(dev): web 네이티브 React Fast Refresh — 컴포넌트 편집 시 리로드 없이 state 보존 (RFC_LAZY_DEV_MODULE_HMR §5)
- feat(bundler): dev+split lazy 모듈을 글로벌 per-module __zntc_modules 에 등록 — cross-chunk hot-replace (RFC_LAZY_DEV_MODULE_HMR PR-2, #4038 재해결)
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.