본문으로 건너뛰기
dopejs
전체 프로젝트

doper

초기 단계 — 프로덕션에는 부적합

처음부터 새로 설계한 웹 Canvas 렌더링 엔진.

고성능 TSX 런타임, 네이티브 가상 스크롤, 버전이 지정된 바이너리 ABI 뒤의 결정론적 Rust/WASM 코어, 완전한 텍스트 렌더링과 Canvas 네이티브 편집. M0–M3 마일스톤이 완료되었고, M4에서 편집·이벤트·히트 테스트·접근성 체인이 들어옵니다.

개요

doper는 아직 제품에 그대로 넣을 수 있는 렌더링 엔진이 아니며, 저장소도 그렇게 분명히 밝히고 있습니다. P0/M0부터 M3까지 완료되었고 다음 단계는 M4 — 편집, 이벤트, 히트 테스트, 접근성 체인입니다. 기술 결정은 `docs/design.md`, 전달 순서와 통과 기준은 `docs/plan.md`를 따릅니다.

오늘 실제로 실행되는 것은 `apps/platform-probe`이며, 데모가 아니라 계측용 조각입니다. 워커 rAF 프레임 간격, SharedArrayBuffer를 통한 메인 스레드→워커 지연, 메인 스레드가 200ms 블로킹된 동안의 워커 자체 구동, Canvas2D 및 scroll-copy 처리량, WASM 크기와 로드 비용, 그리고 Canvas 편집 입력 경로(EditContext 우선, 중앙화된 textarea 프록시로 폴백)를 기록하며, 결정론적으로 재생되는 IME 녹화도 포함합니다.

프로브는 로컬 환경이 성립한다는 것만 보여줍니다(개발 서버가 교차 출처 격리를 위해 COOP/COEP 헤더를 보냅니다). 실제 배포가 그 조건을 충족한다는 뜻은 아닙니다. 실기기 성능과 실제 IME 동작은 별도의 플랫폼 인증으로 다루며, `pnpm platform:qualify`로 인증되기 전에는 해당 수치를 주장하지 않습니다.

무엇을 하나

  • 가상 스크롤을 애드온이 아닌 일급 프리미티브로 갖춘 고성능 TSX 런타임.
  • 버전이 지정된 바이너리 ABI 뒤의 결정론적 Rust/WASM 코어.
  • Canvas 네이티브 텍스트 편집: EditContext 우선 입력, 중앙화된 textarea 프록시 폴백, 결정론적 IME 기록/재생.
  • 플랫폼 인증은 마일스톤 완료와 명확히 분리되어 있으며, 인증되지 않은 플랫폼에서는 성능을 주장하지 않습니다.

시작하기

요구 사항: Node.js 22.12+, pnpm 10.33.2, Rust 1.96.0(wasm32-unknown-unknown 타깃 포함).

저장소 체크아웃에서 프로브 실행

pnpm install --frozen-lockfile && pnpm m0:check && pnpm probe:dev