2026-05-14
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
zntc는 전날 열린 RN 런타임 회귀 수정 #3156을 병합했습니다. 비동기 다운레벨에서 지연 분기를 보존하고, 루프 클로저 호출의 this를 지키며, module.exports에 defineProperty를 쓰는 모듈을 CJS로 감지하고, RN 로그 전달을 Metro와 맞추고, RN codegen의 nullable 이벤트 핸들러 분류와 이벤트 속성 감싸기를 고친 내용입니다. Rozenite serializer 폴리필 지원(#3172)과 Rozenite·Metro 설정 문서, RN 런타임 지원 범위 문서(#3188, #3191), Metro resolver.platforms를 검증하는 extra.platforms(#3183)도 들어왔고, 콜드 빌드 성능 측정용 react-native-large 예제를 추가했습니다(#3160).
하루의 대부분은 TypeScript·Flow 파서 정합성 작업이었습니다. 문맥 키워드를 Flow 함수 타입·TS 매개변수 프로퍼티·타입 서술어 이름으로 받아들이고, 기본값이나 끝 쉼표가 있는 화살표 함수의 타입 판별, 인터페이스 getter/setter 시그니처, non-null 단언 대입 대상, 모든 숫자 리터럴 타입, 타입 없는 this 매개변수, get·set·async라는 이름의 메서드를 처리하게 했습니다. .d.ts와 declare global을 ambient로 다루고 .d.ts 변환 결과를 빈 출력으로 내며(#3176, #3182), TS 파일을 암묵적 strict 모듈로 취급하되 script 모드에서는 await를 식별자로 허용했습니다(#3180, #3186). 자동 type-only export 제거는 선언 병합과 최상위 declare 바인딩을 존중하게 됐습니다(#3173, #3177). 리터럴 왼쪽 피연산자에서 제네릭 인자 추측이 지수적으로 늘어나 멈추던 문제도 고쳤습니다(#3192, #3193).
이런 수정을 체계적으로 찾기 위해 TSC conformance 감사 스크립트를 추가하고(#3187), 판정 오라클이 TSC matrix baseline과 TS18xxx·TS17xxx 같은 구문 오류 코드, @strict:false 지시를 인식하도록 이어서 다듬었습니다. tsc 통합 테스트에서 실패를 조용히 건너뛰던 expectPass 경로도 없앴습니다(#3181). 그 밖에 linker는 namespace 멤버 초기화 감싸기를 dev 모드로 한정하고 export마다 반복하던 작업을 루프 밖으로 옮겼으며(#3163, #3169), resolver의 preserveSymlinks는 esbuild 방식의 식별과 새 resolveSymlinkSiblings 대체 경로로 나눴습니다(#3174).
블로그 저장소 ohah.github.io의 커밋 19개는 대부분 크론이 남긴 CRON_CRD_WRITE.md 점검 기록이고, zts 개발기 development-1.mdx 문구 수정과 요약 갱신이 섞여 있습니다.
공개 커밋 73개, 해당일 생성 또는 병합된 PR 42개를 정리했습니다. PR 생성 41개·병합 42개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/ohah.github.io
- chore: add 2026-05-16 08:30 KST CRON task completed entry
- docs: cron write task completed (2026-05-15 07:00 KST)
- docs(cron): record CRD write task completion for 2026-05-15 20:30 KST
- docs: cron check completed - electron-mcp-server/development-1.mdx
- docs: log CRON_CRD_WRITE.md spelling check (docs/index.mdx)
- docs: update CRON_CRD_WRITE.md (2026-05-15 20:00 KST)
- cron: complete CRD doc spell check (2026-05-15 01:30 KST)
- docs: update 2026-05-14 commit summary (AI-written)
- docs: fix duplicate entry in CRON_CRD_WRITE.md
- docs: update CRON_CRD_WRITE.md (2026-05-14 20:00 KST)
- chore(cron): complete 2026-05-14 19:30 KST CRD write task
- docs: mark CRON task complete for 2026-05-14 18:00
- docs: correct Korean wording in development-1.mdx
- chore: cron blog-crd-write - verify docs/monthly-opensource/zts/development-1.mdx
- docs: add cron entry for 2026-05-15 17:30 KST CRD write task
- fix(cron): docs/monthly-opensource/hwpjs/development-8.mdx spelling verified (2026-05-15 16:30 KST)
- chore(cron): verify spelling of docs/index.mdx
- chore(cron): mark CRON_CRD_WRITE.md task completed (2026-05-15 06:00 KST)
- docs: CRON task completed - 2026-05-15 01:00 KST
ohah/zntc
- chore(scripts): audit adds TS2369/TS2462 + Duplicate parameter keyword
- fix(parser): accept TS bare
thisparameter without type annotation - chore(scripts): audit oracle adds OK_spec_strict outcome
- chore(scripts): audit oracle adds TS2466/2523/2528 + TS17xxx syntax codes
- chore(scripts): audit detects @strict:false directive as policy divergence
- chore(scripts): audit oracle treats syntax-equivalent TS2xxx as reject
- chore(scripts): audit oracle treats syntax-level TS18xxx as reject
- chore(scripts): audit oracle picks up TSC matrix-baselines
- refactor(parser): isolate type-args speculation from expression-mode re-entry
- fix(parser): bail generic-args speculation for literal LHS to stop O(2^N) blowup
- docs: clarify react native runtime support
- fix(parser): handle computed property key in stage3 decorator transform
- docs: document rozenite metro config
- feat(scripts): add TSC conformance audit (parser D-series infra)
- fix(parser): allow await as identifier in script-mode TS files (D16.1)
- fix(parser): allow object/class method named get/set/async + generic params
- test(tsc): flip readonlyInConstructorParameters to expectPass
- feat(rn): extra.platforms validation sugar for Metro resolver.platforms
- fix(transpile): emit empty output for .d.ts declaration files (D12.5)
- chore(integration): remove tsc expectPass silent-skip, migrate sloppy fixtures
- fix(parser): treat TS files as implicit strict module (5-tool consensus)
- fix(parser): accept all numeric kinds as TS literal type
- fix(parser): accept contextual keyword as type predicate subject
- fix(parser): auto type-only export elision for top-level declare bindings
- fix(parser): treat .d.ts files and declare global blocks as ambient
- refactor(codegen): collapse emitExpressionNodeList into comptime branch
- fix(parser): detect typed arrow when params end with trailing comma
- fix(resolver): split preserveSymlinks into esbuild-style identity + new resolveSymlinkSiblings fallback
- fix(transpile): auto type-only export elision honors declaration merging
- refactor(linker): share esm init expr body between writer & alloc paths
- fix(parser): accept TS non-null assertion as assignment target
- perf(linker): memoize source_init in registerNamespaceRewrites
- refactor(parser): promote canBeBindingName helper to Token.Kind, dedup 9 sites
- refactor(linker): dedupe allocEsmInitExpr into shared_namespace
- fix(parser): accept contextual keywords as TS parameter property names
- perf(linker): hoist namespace member init wrap out of per-export loop
- fix(parser): preserve type-only import AST so semantic export check sees bindings
- fix(linker): gate namespace member init wrap to dev_mode
- test: fix RN codegen snapshot parser escapes
- fix: wrap RN codegen event attributes
- fix: detect module exports defineProperty as CJS
- fix: align RN log forwarding with Metro
- fix: preserve this in loop closure calls
- fix: classify nullable RN event handlers
- test: format async lazy branch regression
- fix: preserve lazy branches in async lowering
- fix: decode string literals before folding equality
- fix(parser): recognize TS interface getter/setter signatures
- test(tsc): update parameter property snapshots
- fix(parser): detect typed arrow when first param has default value
- chore(examples): sort react-native-large dependencies alphabetically (sherif)
- chore(examples): add react-native-large fixture for cold-build perf testing
- refactor(parser): extract canBeFnTypeParamName helper + extra test coverage
- fix(parser): accept contextual keywords as Flow function-type param names
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.