Ampandheaust 7070799862 Add Go CDN and playground server
Build Core and Handles into in-memory CDN modules, add the marketing site and tutorial docs, and provide a SQLite-backed WebGPU playground with TypeScript tooling and profiling.

Amp-Thread-ID: https://ampcode.com/threads/T-01a02485-5574-707c-bff4-5668d83bee8a
Co-authored-by: Heaust Azure <heaust.azure@gmail.com>
2026-08-21 16:42:02 +00:00
2026-08-21 16:42:02 +00:00
2026-08-21 16:42:02 +00:00
2026-08-21 11:56:42 +00:00
2026-08-21 16:42:02 +00:00
2026-08-21 16:42:02 +00:00
2026-08-21 16:42:02 +00:00
2026-08-21 16:42:02 +00:00
2026-08-21 16:42:02 +00:00
2026-08-21 16:42:02 +00:00

Yawn

Yawn Core is two things: a generic structure-of-arrays arena in a SharedArrayBuffer, and a Rust render graph that turns externally supplied WGSL into an up-front WebGPU loadout.

JSO or FXNode → AST → S-expression → worker messages → Rust/WebGPU
                                                   ↑
any thread → direct shared row writes ─────────────┘

The arena starts with only one eight-float signals row for frame timing and render invalidation. Messages create or delete other { name, rows, stride, format } arrays, allocate named slots, compile graphs, switch loadouts, and control render pacing. Existing render data is changed by writing f32, u32, or i32 rows directly, then setting the shared-data dirty signal. Allocations are 64-byte aligned, row strides are multiples of 16 bytes, and compatible non-overlapping transient textures share physical allocations.

WGSL, pipelines, glTF import, and conventional mesh/camera/material handles live in addons/; core contains no shader or scene model.

Run the Go website, in-memory package server, SQLite-backed playground, and tutorial:

npm run server

The server rebuilds @yawn/core and @yawn/handles at startup and serves the public CDN modules at https://yawn.heaust.org/pkg/core.js and https://yawn.heaust.org/pkg/handles.js. Their workers and WASM stay on the CDN automatically, so applications only import the module URLs. The complete editor is at /playground; saved revisions use /playground/{id}/{revision} URLs. Set PORT or YAWN_DATABASE to override the default port and server/data/yawn.db database path.

Run the previous VitePress documentation site with npm start.

Run npm run coredocs for the raw worker-message, shared-memory, and render-graph reference intended for custom handles, editors, and direct SAB clients.

S
Description
a blazing fast gpu rendering core for high performance or resource constrained web applications
Readme
528 MiB
Languages
TypeScript 34.2%
Rust 26%
CSS 12.1%
JavaScript 11.1%
HTML 10.4%
Other 6.2%