docs(architecture): GPU-first renderer paradigms — one wgpu renderer, "web ≠ DOM"#6
Merged
Merged
Conversation
… "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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Folds Joel's directive — "positron does Rust-rendered GPU for web and all paradigms" — into the
docs/ARCHITECTURE.mdcontract before O3/O4 renderers are written, so they build against the right target. Doc-only, no code.What changed
Renderersurface 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."Renderer<S>'stype Outputis renderer-specific, the contract carries no CPU-tree assumption; a GPU frame is just anotherOutput. Records the convergence with continuum's existing Bevy/wgpuRgbaFrame/RenderBackendseam — reconcile at O5, don't reinvent.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 withRenderBackend/RgbaFrame" clause.Nextlist mirrors the reshape.Why
counter-cli'sStringvsVec<String>is a weak outlier pair (both CPU text). A GPU draw-list/frame is maximally different — the real outlier-B that provesRenderer<S>doesn't secretly assume a CPU tree. And positron doesn't invent a new GPU path: continuum already emits backend-neutralRgbaFrames 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