Skip to content

latkit in Rust: one crate, the npm package on WebAssembly, and a CLI - #78

Merged
lukelowry merged 40 commits into
mainfrom
develop
Oct 21, 2026
Merged

lukelowry merged 40 commits into
mainfrom
develop

Conversation

@lukelowry

Copy link
Copy Markdown
Owner

latkit in Rust: one crate drawn with wgpu, the npm package on WebAssembly, and a CLI. The @latkit/* TypeScript packages move to the npm/js branch.

  • Data: columnar Data changed in place by Patches, O(1) snapshots, sampled fields over an axis, time tiles, and one decoder for JSON and bytes.
  • Scenes: vertices, edges, faces, lines, and areas on planes, the earth, plots, and diagrams. Expressions are evaluated on the GPU, and scenes have labels, legends, shadows, comets, and transitions.
  • Views: picks and hover come from what the frame drew. Intents and changes share one queue, fits and budgets always fit, anything large is tiled, and per-frame work follows what changed.
  • Opening: a view asks for every pipeline its scene can use at its first frame, and Chrome compiles them off its GPU thread, largest first. No frame waits on a compile.
  • Diagrams: a sheet with layouts and orthogonal routes run as jobs, ports and nets, and groups.
  • Pictures and video: Shot, Image, and Video, with H.264 through WebCodecs or Media Foundation, and the latkit CLI.
  • Tooling: one pnpm workspace, a browser gate over every example page, and a benchmark that steps its own frames, gated on work and time. Docs build on Read the Docs, and the release publishes the tarball CI tested.

TypeScript packages

The @latkit/* packages stay on npm and are maintained on npm/js, which is main as of #77. The README points there.

Release

This is the first release of npm latkit and of the latkit and latkit-cli crates, at 0.2.0, with notes in .changeset/. Merging this opens the version PR; merging that publishes npm, then both crates, then creates the tags.

Verification

CI on this PR runs:

  • Rust: format, clippy, tests (GPU on lavapipe), docs, and both package targets.
  • Native CLI: Linux, macOS, and Windows.
  • npm: WASM build, lint, typecheck, tests, benchmark work, the browser gate, and the packed tarball in a consumer.
  • Docs: built with warnings as errors.

@lukelowry
lukelowry merged commit 9e476cc into main Oct 21, 2026
8 checks passed
lukelowry added a commit that referenced this pull request Oct 22, 2026
Keeps develop's tree and takes what main changed since #78: the 0.2.0
versions and changelog, and the changesets that release consumed.
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