Skip to content

v0.0.6 - 브라우저 OS 프리미티브 + 정확성 라운드

Choose a tag to compare

@eddmpython eddmpython released this 12 Jul 12:50

v0.0.5 이후 발명 라운드 5~10과 외부 리뷰 대응을 묶은 릴리즈. 브레이킹 1건(.pymachine 포맷 v2). 공개 API 표면은 추가만.

브라우저 OS 프리미티브

  • 진짜 OS 표면: DeviceFs(모든 것은 파일), Init(rc.local/cron), %pip, requests 배선.
  • forkLive = fork(2): 살아있는 프로세스의 변수·배열·계산 결과를 자식으로 복제한다(델타 수확 43.6ms, 적용 1.4ms, 주소공간 독립).
  • 시그널 표: PyProc.signal(pid, signum) + SIGINT/SIGTERM/SIGUSR1/SIGUSR2. SAB 채널에 번호를 쓰면 CPython eval 루프가 그 번호의 파이썬 핸들러를 부른다.
  • 체크포인트 나무: reactive.parents + tree(). 분기 노드 스위치 시 형제 분기 델타를 집어 힙이 깨지던 결함을 부모 체인 walk로 수정했다.
  • MachineJournal(WAL): 유휴 자동 커밋으로 강제종료 후에도 마지막 커밋으로 부활한다(8.8MB, 2330ms). churn 바닥을 규명해(no-op 문장도 90106페이지를 더럽히고 그 집합이 9798% 고정) 커밋 단위를 문장이 아닌 유휴로 확정했다.

셀프호스팅

/home에서 FastAPI + sqlite + HTML을 개발해 서빙한다. GET p50 2.1ms, 재부팅 후 재서빙 3.4s(코드·DB 디스크 생존), 수정 반영 7ms. 가상 오리진 충실화로 요청 헤더 전달, 바이너리 바디, 커널 클라이언트 라우팅, 504 타임아웃, COI 헤더를 넣어 서빙된 iframe의 fetch가 커널에 20ms로 도달한다.

정확성 (외부 리뷰 수용)

RPC reqId 상관 + 워커 사망 시 대기 요청 전량 reject, ASGI 동시 요청 격리, 저널 HEAD/PREV 2세대 복구, 복제 고유성 random 재시드, 부팅 직렬화, 성장 세션 fork, PyProxy destroy 계약.

구조

EngineContract seam으로 엔진 접점 8파일 40지점을 pyodideEngine.js 한 파일 뒤로 격리했다(동작 무변경).

브레이킹

.pymachine 포맷 v2. 봉투 전체(헤더+델타)를 해시 인증해 manifest.setup 변조를 막는다. v1 이미지는 더 이상 로드되지 않는다.

라이선스

MPL-2.0(0.0.5까지는 Apache-2.0). 엔진 Pyodide와 같은 조건이다. 임베드는 자유고, pyproc 자체 파일의 수정분은 소스 공개다.

게이트

구조 298검사 + 브라우저 38검사 GREEN.