2026-04-08
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
zntc는 React Native HMR을 실제로 동작시키는 데 먼저 힘을 쏟았습니다. 모듈별 HMR 코드를 IIFE와 init 호출로 감싸고(#899), 캐시 블록 중복으로 생긴 use-after-free와 빈 변경 시 reload를 막았으며(#900), React Refresh 런타임을 호출 시점에 찾도록 바꾸고(#901) --dev에서 __DEV__를 true로 두었습니다(#902). HMR 평가는 new Function에 헬퍼를 인자로 넘기는 방식으로 바꿨고(#903), 초기 로드 때 모듈 ID가 비어 컴포넌트가 교체되지 않던 문제를 고쳤습니다(#905). react-refresh 초기화 순서는 폴리필 주입과 entry 전 early init을 시도했다가 RN 런타임과 충돌해 되돌리고(#907~#911), 롤리팝 방식으로 InitializeCore를 prelude로 자동 주입하는 것으로 정리했습니다(#912). watch 재빌드 때 소스맵도 다시 쓰게 했습니다(#914).
성능 작업도 있었습니다. tree-shake·link·emit 최적화(#917)와 resolve 캐시 계층(#918)에 이어, import/binding 스캐너를 파서에 합쳐 AST 재순회를 없애고(#919), 문장별 심볼 정보를 시맨틱 분석 시점에 미리 만들어 PR 기준 tree-shake 81%, 전체 31% 개선을 기록했습니다(#920). ES5 변환은 for-of를 배열 인덱스 대신 Symbol.iterator 프로토콜로 다시 쓰고 static private field를 descriptor 객체로 바꿨으며(#931), private field 화살표 함수의 _this 누락(#932)과 Flow import typeof·export type 때문에 CJS 모듈을 ESM으로 오판하던 문제(#930)를 고쳤습니다. ANSI 색과 코드 프레임, 에러 코드, "Did you mean?" 제안을 갖춘 rustc 수준 진단 렌더러와 top-level await 타깃 검증(#933)도 병합됐고, 에러 코드 120개를 등록하는 #934는 이날 PR이 열렸습니다.
문서 쪽은 Playground 모바일 반응형과 번들러 비교 벤치마크(#915), 코드 블록·표 스타일(#916), 프로덕션 로드맵(#923), esbuild·Vite·webpack 마이그레이션 가이드와 플러그인 레시피(#925)가 추가됐고, TOC 사이드바와 본문 폭 레이아웃을 여러 차례 손봤습니다.
bungae는 dev 서버의 watchFolders가 매번 full reload를 보내 HMR을 덮던 문제를 막았고(#43), ZTS HMR 클라이언트 파일을 빌드 산출물에 복사했습니다. InitializeCore 전달 방식은 --polyfill, --inject를 시도한 뒤 --run-before-main으로 되돌렸고, Chrome DevTools의 Components 탭을 위한 enableStandaloneFuseboxShell, 소스맵 CORS 헤더와 /symbolicate 엔드포인트를 붙였습니다.
공개 커밋 51개, 해당일 생성 또는 병합된 PR 37개를 정리했습니다. PR 생성 37개·병합 36개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/bungae
- fix(server): symbolicate JSON 파싱 실패 시 graceful fallback
- fix(server): 소스맵 CORS 헤더 + symbolicate 엔드포인트 추가
- fix(server): enableStandaloneFuseboxShell 활성화 — DevTools Components 탭 지원
- revert: InitializeCore --run-before-main 복원
- fix(zts-bundler): InitializeCore를 --inject로 전달
- revert: InitializeCore를 --run-before-main으로 복원 (polyfill은 require 불가)
- fix(zts-bundler): InitializeCore를 --polyfill로 전달 (--run-before-main → --polyfill)
- fix(build): zts-hmr-client.js를 dist/runtime/에 복사 추가
- debug: HMR 클라이언트 디버그 로그 추가 (임시)
- fix(zts-bundler): CLI watchFolders 비활성화 — HMR과 충돌 방지 (#43)
ohah/zntc
- style: zig fmt 적용
- feat(diagnostic): rustc 수준 진단 렌더러 + top-level await 타겟 검증
- fix(transformer): private field arrow _this 누락 + 중첩 for-of 수정
- test(transformer): for-of iterator + static private field 테스트 추가
- fix(transformer): static private field를 descriptor 객체로 변환
- fix(transformer): for-of를 Symbol.iterator 프로토콜로 변환
- fix(parser): export type also incorrectly sets has_module_syntax — CJS misdetection
- refactor(test): simplify regression tests — use absPath helper, remove redundant comments
- fix(parser): Flow import typeof incorrectly sets has_module_syntax — CJS misdetection
- fix(docs): 본문 오른쪽 치우침 수정
- fix(docs): 본문 넓힘 + TOC 사이드바 정상 표시
- fix(docs): 전체 폭 복원 + TOC 텍스트 길이 자동 확장
- fix(docs): TOC 사이드바 밀림 수정 — 전체 폭을 Playground에만 적용
- docs: 마이그레이션 가이드 + 플러그인 레시피 추가
- docs: CSS 번들링 상태 명확화 — 플러그인으로 사용 가능
- docs: 프로덕션 로드맵 추가 (안정성/CSS+배포/생태계)
- docs: ROADMAP.md 구현 상태 업데이트
- refactor: /simplify 코드 리뷰 수정
- perf(bundler): StmtInfo를 semantic analysis 시점에 사전 구축 — tree-shake 81% 개선
- refactor(parser): import/binding scanner를 파서에 통합 — AST 재순회 제거
- perf(bundler): resolveExportChain 메모이제이션 + resolve_cache 스택 버퍼
- perf(bundler): tree-shake/link/emit 최적화 — 200모듈 82.7→78.9ms (-4.6%)
- feat(docs): 코드 블록/표 스타일 개선
- feat(docs): Playground 모바일 반응형 + 벤치마크 번들러 비교 추가
- fix(core): watch rebuild 시 소스맵 파일도 갱신
- fix(core): root_dir 메모리 릭 수정 + RN dev mode --rn-platform 미지정 경고
- fix(test): lint 경고 수정 — 미사용 import/변수 제거
- feat(core): RN dev mode에서 InitializeCore prelude 자동 주입
- revert(core): react-refresh early init 제거 — RN 런타임 충돌
- fix(core): react-refresh early init — hook 안전 초기화 + entry 전 실행
- fix(core): react-refresh polyfill을 RN에서도 주입
- fix(core): react-refresh polyfill을 RN에서도 주입
- fix(core): react-refresh/runtime을 모든 플랫폼에서 polyfill 주입
- debug: performReactRefresh 상세 로그 (임시)
- fix(core): HMR 모듈 ID 불일치 수정 — __zts_currentModuleId 초기 로드 시 설정
- debug: HMR React Refresh 디버그 로그 추가 (임시)
- fix(core): HMR eval을 new Function + 헬퍼 파라미터 전달로 변경
- fix(core): --dev 플래그에서 DEV=true, process.env.NODE_ENV="development" 설정
- fix(core): React Refresh 런타임을 호출 시점에 조회 (로드 시점 → lazy)
- fix(core): HMR 캐시 중복 업데이트 + 빈 변경 시 reload 방지
- fix(core): HMR per-module code를 IIFE + init 호출로 래핑
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.