2026-06-05

요약 (AI 작성)

maru의 PTY 리더·서피스 런타임과 렌더러 계약을 세운 날입니다. PTY reader 생명주기·bounded 큐·self-pipe wake + kqueue NOTE_EXIT, HUP→TERM→KILL 종료 정책, runtime event pump와 surface runtime 라우팅, 헤드리스 PTY 데모를 붙이고, 렌더러는 DrawList·glyph atlas·fake glyph layout 계약과 커서 dirty 계약을 정리했습니다.

suji는 embedded CPython 3.13 백엔드를 1급 시민으로 올려 iOS·Android 실기 e2e 5/5, packaged .app/CLI 번들과 PYTHONHOME 자립 해석, PyPI(suji-stubs) 발행까지 마쳤습니다. zntc는 Persistent Linker RFC(#4176)로 dev HMR link를 증분화해 reuse-hit에서 rename guard·symbol refcount·namespace access를 변경분 한정으로 줄이는 등 링커 단계 성능을 대폭 절감했습니다.

커밋

ohah/maru

ohah/suji

ohah/zntc

PR (해당일 생성/머지)

repo#상태제목
ohah/zntc#4185mergedfix(test): dev HMR new-css-import flake — 재시도마다 fresh diff 강제 (#3813)
ohah/maru#63mergedfeat(platform): add macOS Metal smoke
ohah/maru#62mergedfeat(platform): add macOS window smoke
ohah/maru#61mergedfeat(app): add app host frame smoke
ohah/zntc#4184mergedperf(linker): lNs(populateNamespaceAccesses) 변경∪importer 한정 partial-skip (#4176)
ohah/maru#60mergedfeat(renderer): add cursor overlay dirty contract
ohah/suji#76mergedtest(mobile): 호스트 하니스에 python 추가 — 모바일 python CI 자동 커버리지
ohah/suji#75mergedfix(test): android-e2e.sh e2e.html 체크 pipefail+SIGPIPE false-FAIL
ohah/zntc#4183mergedfix(linker): ns_member_rewrites borrowed 값 deinit double-free 제거 (#4178)
ohah/maru#59mergedfeat(renderer): add glyph atlas cache contract
ohah/suji#74mergedfeat(python): Android embedded CPython 백엔드 (실 에뮬레이터 e2e 5/5)
ohah/maru#58mergedfeat(renderer): add fake glyph layout contract
ohah/zntc#4182mergedperf(linker): reuse-hit injection canonical_names_used dead-write 제거 — lInj −48% (#4176)
ohah/zntc#4181mergedperf(linker): renameReuseGuard 변경-모듈 한정 O(N)→O(changed) — lGuard −60% (#4176)
ohah/maru#57mergedfeat(renderer): add DrawList contract
ohah/maru#56mergedfeat(app): add headless PTY demo
ohah/zntc#4180mergedfix(fmt): preset.test.ts oxfmt drift 해소 — CI Lint & Format 복구
ohah/maru#55mergedrefactor(app): return pump termination data
ohah/zntc#4179mergedperf(linker): injectPreservedRenames 스냅샷 문자열 borrow — dev HMR lInj −95% (#4176)
ohah/suji#73mergedfeat(python): iOS embedded CPython 백엔드 (실 시뮬레이터 e2e 5/5)
ohah/maru#54mergeddocs: add step-7 frame loop drain-termination design memo
ohah/maru#53mergedfeat(pty): add reader stop lifecycle
ohah/maru#52mergedtest(pty): stress bounded queue stdout
ohah/maru#51mergedrefactor(app): drop dead read_error_events counter and align pump docs
ohah/suji#72mergedci(sdk): sdk-publish.yml 에 PyPI(suji-stubs) 발행 잡 추가
ohah/maru#50mergedfeat(app): add runtime event pump
ohah/zntc#4177mergedfeat(profile): dev HMR link sub-phase 측정 인프라 — 분해 bench + other 계측 (#4176)
ohah/maru#49mergedfix(app): drop double deinit and dead reader indirection
ohah/maru#48mergedfeat(app): add pty reader queue
ohah/zntc#4174mergedtest(renumber): identity 멱등 가드 — finalize/renumber skip 선행
ohah/suji#71mergedfeat(python): packaged .app/CLI 번들 + PYTHONHOME 자립 해석 (후속 마감)
ohah/suji#70mergedfeat(python): embedded CPython 3.13 백엔드 (1급 시민, GIL, 번들 stdlib)
ohah/zntc#4173mergedperf(linker): renameReuseGuard 변경-모듈 한정 — dev HMR lnk 절감
ohah/maru#47mergedtest(pty): route controlled output through surface runtime
ohah/zntc#4172mergedperf(emit): HMR 보존-hit unchanged 모듈 source 해시 skip — eMod 절감
ohah/maru#46mergedfix(app): latch surface exited on read_error and key attach by surface.id
ohah/zntc#4171mergedperf(linker): reuse-hit 에서 populateSymbolRefCounts skip — dev HMR lnk 절감
ohah/maru#45mergedfeat(app): add surface runtime routing
ohah/zntc#4170mergedfeat(hmr): plugin 게이트를 결정적 plugin 한정 완화 — RN preset opt-in (#4123)
ohah/maru#44mergedrefactor(pty): drop dead session field and fix exit-status decode
ohah/suji#69mergedrefactor(core): EventBus UAF off-quiescence + embed 폴백 통일 (is_catch_all)
ohah/maru#43mergedfix(pty): preserve exit status and add HUP→TERM→KILL close policy