Skip to content

Pingocanvas 渲染引擎

Rust/WASM 核心 + TypeScript 外壳 + 可插拔后端。为高性能交互、原生虚拟滚动与 canvas 内文本编辑而设计。

30 秒上手

sh
pnpm add @dopejs/doper

品牌名已切换为 Pingo。公开 npm 包将在兼容迁移完成后切换到 @dopejs/pingo;当前安装命令仍保持为 @dopejs/doper

ts
import { createElement, createHostedCanvasRoot } from "@dopejs/doper";

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} 行` }),
  }),
);

一百万行不会在 Shell 侧物化,滚动过程也不回调组件树——窗口计算与补建都发生在 Core 内。

它不做什么

Pingo 是渲染引擎,不是浏览器。不做 SSR/HTML 首屏、通用 CSS 兼容(盒模型、层叠、选择器)、 小程序或原生适配层,也不做业务级富文本语义(协同、公式、Markdown 命令)。

引擎确实拥有 caret、选区、IME、剪贴板、撤销重做与可编辑文本原语——这些不会被推回业务层用 DOM 控件拼凑。

当前状态

v0.1.0,P0–M5 全部工程里程碑完成,pnpm m5:check 全链自动门禁通过。

真机性能、真实输入法与屏幕阅读器矩阵属于平台资格采集,单独跟踪; bidi 视觉导航与 WebGPU 后端默认启用是已记录的延后项

MIT 许可发布