Skip to content

docs(architecture): GPU-first renderer paradigms — one wgpu renderer, "web ≠ DOM"#6

Merged
joelteply merged 2 commits into
mainfrom
docs/gpu-first-renderers
Jul 3, 2026
Merged

docs(architecture): GPU-first renderer paradigms — one wgpu renderer, "web ≠ DOM"#6
joelteply merged 2 commits into
mainfrom
docs/gpu-first-renderers

Conversation

@joelteply

Copy link
Copy Markdown
Contributor

Folds Joel's directive — "positron does Rust-rendered GPU for web and all paradigms" — into the docs/ARCHITECTURE.md contract before O3/O4 renderers are written, so they build against the right target. Doc-only, no code.

What changed

  • Role table: the primary Renderer surface is ONE Rust wgpu renderer compiling to native (Metal/Vulkan/DX12) + web (WebGPU/WASM) + AR/VR (Bevy is wgpu underneath). ratatui (cells) and Lit (DOM) become peer paradigms — "web" ≠ "the DOM."
  • New subsection "Renderer paradigms are GPU-first": because Renderer<S>'s type Output is renderer-specific, the contract carries no CPU-tree assumption; a GPU frame is just another Output. Records the convergence with continuum's existing Bevy/wgpu RgbaFrame/RenderBackend seam — reconcile at O5, don't reinvent.
  • Roadmap reshape: O3 = positron-ratatui (outlier A), O4 = positron-wgpu (outlier B, the strong outlier that proves the trait), O4b = positron-lit (optional a11y), O5 gains a "reconcile with RenderBackend/RgbaFrame" clause.
  • Stale closer "O2 is next" → "O1+O2 landed, O3 next"; README Next list mirrors the reshape.

Why

counter-cli's String vs Vec<String> is a weak outlier pair (both CPU text). A GPU draw-list/frame is maximally different — the real outlier-B that proves Renderer<S> doesn't secretly assume a CPU tree. And positron doesn't invent a new GPU path: continuum already emits backend-neutral RgbaFrames over a crossbeam channel that LiveKit/PNG consume without knowing Bevy. Same shape.

Continues the O1..O6 push→review→merge cadence (O1 #4, O2 #5 landed).

🤖 Generated with Claude Code

joelteply and others added 2 commits July 2, 2026 21:50
… "web ≠ DOM"

Folds Joel's directive ("positron does Rust-rendered GPU for web and all
paradigms") into the contract before any renderer is written, so O3/O4 build
against the right target:

- Role table: the primary Renderer surface is ONE Rust wgpu renderer compiling to
  native (Metal/Vulkan/DX12) + web (WebGPU/WASM) + AR/VR (Bevy is wgpu underneath);
  ratatui (cells) and Lit (DOM, optional a11y) become peer paradigms.
- New "Renderer paradigms are GPU-first" subsection: because Renderer<S>'s
  type Output is renderer-specific, the contract carries no CPU-tree assumption —
  a GPU frame is just another Output. Records the convergence with continuum's
  existing Bevy/wgpu RgbaFrame RenderBackend seam (reconcile at O5, don't reinvent).
- Roadmap reshape: O3 = positron-ratatui (outlier A, real stateful Renderer + Host
  loop); O4 = positron-wgpu (outlier B, run-everywhere GPU — the strong outlier
  that proves the trait); O4b = positron-lit (optional a11y surface); O5 gains the
  "reconcile with RenderBackend/RgbaFrame" clause.
- Stale "O2 is next" closer → "O1+O2 landed, O3 next".
- README Next list mirrors the reshape.

Doc-only; no code. Rationale mirrored in memory positron-renderers-gpu-first-wgpu.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo
…ebGL-fallback wording, role-diagram note

Review (APPROVE WITH NITS):
- NIT 1 (real stale ref): the @positron/core + positron-lit vs continuum
  sdk/typescript reconcile was moved O4→O4b by the reshape; the Constraints
  bullet still said 'decided at O4'. Now O4b, with a note that O4 (wgpu) has
  no bearing on the npm/SDK question.
- NIT 3: role-table web cell now 'WebGPU, WebGL fallback, via WASM' to match
  the paradigm table's precise framing (WebGL is the fallback, not a co-target).
- NIT 2: added a note under the role ASCII diagram — the boxes show the role
  (every surface is a Renderer<S> projection), not the primary-renderer choice;
  points forward to the GPU-first section so the reader isn't whiplashed by a
  'DOM (web)' box right before 'web ≠ DOM'.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LoTjvf5j3Ez13g6k8mRkFo
@joelteply joelteply merged commit 25ee2f6 into main Jul 3, 2026
2 checks passed
@joelteply joelteply deleted the docs/gpu-first-renderers branch July 3, 2026 02:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant