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
- refactor(app): tidy headless demo artifact writing per review
- feat(app): add headless pty demo
- docs(font): pin glyph cache key style_flags to raster-affecting only
- fix(renderer): keep underline out of glyph cache key per review
- feat(renderer): add fake glyph layout contract
- docs(renderer): record cursor rendering + cursor-move dirty gap
- fix(renderer): harden draw list ownership and build cost per review
- feat(renderer): add draw list contract
- fix(pty): drop close-path tradeoffs with self-pipe wake + kqueue NOTE_EXIT
- feat(pty): add reader stop lifecycle
- docs: add step-7 frame loop drain-termination design memo
- fix(test): surface read errors in drainRuntimeQueueUntilExit
- refactor(app): return pump termination data
- test(pty): write artifacts before assertions so failures stay diagnosable
- test(pty): route controlled output through surface runtime
- feat(app): add pty reader queue
- fix(pty): preserve exit status and add HUP→TERM→KILL close policy
- fix(app): drop double deinit and dead reader indirection
- feat(app): add runtime event pump
- docs: note drainBlockingUntilExit has no integration consumer yet
- refactor(app): drop unreachable read_error_events drain counter
- test(pty): stress bounded queue stdout
- fix(app): latch surface exited on read_error and key attach by surface.id
- feat(app): add surface runtime routing
- refactor(pty): drop dead session field and fix exit-status decode
ohah/suji
- feat(python): Android embedded CPython 백엔드 — 실 에뮬레이터 e2e 5/5
- feat(python): iOS embedded CPython 백엔드 — 실 시뮬레이터 e2e 5/5
- feat(macos): app.icon 으로 앱 아이콘 설정 (.png→.icns 생성 / .icns 복사)
- ci(sdk): sdk-publish.yml 에 PyPI(suji-stubs) 발행 잡 추가
- refactor(core): EventBus UAF off-quiescence + embed 폴백 통일 (is_catch_all)
- feat(python): packaged .app/CLI 번들 + PYTHONHOME 자립 해석 + 후속 마감
- feat(python): embedded CPython 3.13 백엔드 (1급 시민, GIL, 번들 stdlib)
ohah/zntc
- perf(linker): reuse-hit injection 의 canonical_names_used dead-write 제거 — lInj 절감 (#4176)
- fix(fmt): preset.test.ts oxfmt drift 해소 — CI Lint & Format 복구
- docs(rfc): Persistent Linker — dev HMR link 증분화 RFC 초안 (#4176)
- test(bundler): dev HMR 보존-hit link sub-phase 분해 bench (#4176 측정 인프라)
- perf(profile): link
other분해 계측 — chain_scan/rename_guard/inject_renames (#4176) - perf(linker): injectPreservedRenames 스냅샷 문자열 borrow — dev HMR lInj 절감 (#4176)
- perf(linker): renameReuseGuard 변경-모듈 한정 O(N)→O(changed) — lGuard 절감 (#4176)
- perf(emit): HMR 보존-hit unchanged 모듈 source 해시 skip — eMod 절감
- perf(linker): reuse-hit 에서 populateSymbolRefCounts skip — dev HMR lnk 절감
- perf(linker): renameReuseGuard 변경-모듈 한정 — dev HMR lnk 절감
- test(renumber): identity 멱등 가드 — finalize/renumber skip 선행
- feat(hmr): plugin 게이트를 결정적 plugin 한정 완화 — RN preset opt-in (#4123)