Skip to content

Pingocanvas 렌더링 엔진

Rust/WASM 코어 + TypeScript 셸 + 교체 가능한 백엔드. 고성능 상호작용, 네이티브 가상 스크롤, canvas 내 텍스트 편집을 위해 설계되었습니다.

PingoPingo

30초 만에 시작하기

sh
pnpm add @dopejs/pingo
ts
import { createElement, createHostedCanvasRoot } from "@dopejs/pingo";

const root = await createHostedCanvasRoot(document.querySelector("canvas")!);

root.render(
  createElement("virtualList", {
    width: 480,
    height: 640,
    itemCount: 1_000_000,
    estimatedItemHeight: 32,
    renderItem: (index) => createElement("text", { value: `${index}번째 행` }),
  }),
);

100만 행은 Shell에서 실체화되지 않고, 스크롤 중에 컴포넌트 트리를 호출하지도 않습니다. 윈도 계산과 보완은 모두 Core 안에서 일어납니다.

하지 않는 것

doper는 렌더링 엔진이지 브라우저가 아닙니다. SSR/HTML 최초 렌더링, 범용 CSS 호환(박스 모델, 캐스케이드, 셀렉터), 미니 프로그램이나 네이티브 어댑터 레이어, 업무 수준의 리치 텍스트 의미론(공동 편집, 수식, Markdown 명령)은 다루지 않습니다.

반면 캐럿, 선택 영역, IME, 클립보드, 실행 취소/다시 실행, 편집 가능한 텍스트 프리미티브는 엔진이 소유합니다. 이를 DOM 컨트롤 조합으로 업무 레이어에 떠넘기지 않습니다.

현재 상태

v0.1.0. P0–M5 엔지니어링 마일스톤을 모두 완료했고 pnpm m5:check 전 구간 자동 게이트를 통과했습니다.

실기기 성능, 실제 입력기, 스크린 리더 매트릭스는 플랫폼 자격 수집으로 따로 추적합니다. bidi 시각적 캐럿 이동과 WebGPU 백엔드 기본 활성화는 기록된 보류 항목입니다.

엔지니어링 문서 언어

기술 설계, 구현 계획, ADR은 현재 간체 중국어로만 제공되며 모든 언어에서 같은 문서로 연결됩니다.

MIT 라이선스로 배포