Перейти к содержимому
dopejs
Все проекты

doper

Ранняя стадия — не для продакшена

Движок рендеринга Web Canvas, спроектированный с нуля.

Высокопроизводительная среда выполнения TSX с нативной виртуальной прокруткой, детерминированное ядро на Rust/WASM за версионированным бинарным ABI, полноценный рендеринг текста и редактирование средствами Canvas. Этапы M0–M3 завершены; M4 добавит цепочку редактирования, событий, hit-testing и доступности.

Обзор

doper пока не тот движок рендеринга, который можно взять в продукт, и репозиторий говорит об этом прямо. P0/M0 — M3 сделаны, следующий этап — M4: редактирование, события, hit-testing и доступность. Технические решения зафиксированы в `docs/design.md`, порядок поставки и критерии выхода — в `docs/plan.md`.

Сегодня запускается `apps/platform-probe` — срез для измерений, а не демонстрация. Он фиксирует интервалы кадров rAF в воркере, задержку от основного потока к воркеру через SharedArrayBuffer, самостоятельность воркера при блокировке основного потока на 200 мс, пропускную способность Canvas2D и scroll-copy, размер и стоимость загрузки WASM, а также путь ввода при редактировании на Canvas — сначала EditContext, с централизованным textarea-прокси как запасным вариантом — включая записи сессий IME, воспроизводимые детерминированно.

Проба доказывает лишь пригодность локального окружения — dev-сервер отправляет заголовки COOP/COEP для кросс-доменной изоляции — но не то, что боевое развёртывание удовлетворяет этим условиям. Производительность на реальных устройствах и реальное поведение IME вынесены в отдельную квалификацию платформы: пока платформа не прошла `pnpm platform:qualify`, проект не заявляет её показателей.

Что он делает

  • Производительная среда выполнения TSX, где виртуальная прокрутка — примитив первого класса, а не надстройка.
  • Детерминированное ядро на Rust/WASM за версионированным бинарным ABI.
  • Редактирование текста средствами 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