Skip to content

Pingocanvas-Rendering-Engine

Rust/WASM-Kern + TypeScript-Schale + austauschbares Backend. Entwickelt für hochperformante Interaktion, natives virtuelles Scrollen und Texteingabe direkt im canvas.

PingoPingo

In 30 Sekunden starten

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: `Zeile ${index}` }),
  }),
);

Die eine Million Zeilen wird in der TypeScript-Schale nie materialisiert, und Scrollen ruft den Komponentenbaum nicht zurück: Fensterberechnung und Nachfüllen passieren im Core.

Was es nicht tut

doper ist eine Rendering-Engine, kein Browser. Nicht abgedeckt sind SSR und HTML-Erstdarstellung, allgemeine CSS-Kompatibilität (Boxmodell, Kaskade, Selektoren), Adapterschichten für Mini-Programme oder Native sowie fachliche Rich-Text-Semantik (Kollaboration, Formeln, Markdown-Befehle).

Umgekehrt gehören Cursor, Auswahl, IME, Zwischenablage, Rückgängig/Wiederherstellen und die Primitiven für editierbaren Text zur Engine. Nichts davon wird der Anwendung zurückgegeben, damit sie es aus DOM-Steuerelementen zusammenstückelt.

Aktueller Stand

v0.1.0. Alle Engineering-Meilensteine P0–M5 sind abgeschlossen, und die vollautomatische Kette pnpm m5:check läuft durch.

Leistung auf echten Geräten, echte Eingabemethoden und die Screenreader-Matrix gehören zur Plattformqualifizierung und werden getrennt verfolgt. Visuelle bidi-Navigation und das standardmäßige Aktivieren des WebGPU-Backends sind dokumentierte Zurückstellungen.

Sprache der technischen Dokumente

Technischer Entwurf, Umsetzungsplan und ADRs liegen derzeit nur auf vereinfachtem Chinesisch vor; alle Sprachen verlinken auf dasselbe Dokument.

Veröffentlicht unter der MIT-Lizenz