Copied to clipboard
Demos · From crates.io

Proof, not promises.

Each project here depends on the published crates by version — not a path into a checkout, not a git revision — and exercises one swappable boundary from outside the tree. A boundary that only works from inside is not a boundary.

Shipped

All three build today against published crates, by version, resolved from crates.io. Each card links to the repository that is public; the usage suite they are gathered in is not published yet, so where a copy under it differs from its upstream — or from a repository of its own — the card says which part is which.

parley-demo

Category 1

A second TextSystem

A text system written outside the tree, selected at startup and drawing real text. It was extracted from the example that still ships in gpui_parley, and now depends on the published bite-gp-parley — library gpui_parley — from crates.io rather than on a vendored copy.

  • Runs the shipped Linux default against ParleyTextSystem, both behind &dyn TextSystem
  • Every number on the Using gpui_parley page comes from its text_system bench
Example source · bite-gpui/gpui_parley

scroll-demo

Category 1 + 4

Paint modes over one document

An app that renders one document in several paint modes with motion effects, and reports the frame cost of each. It was repointed off a fork checkout and onto the published crates: no logic changed, and the TextSystem it had written against the fork injects into the published facade and draws with it.

  • cargo check --all-targets finishes warning-free
  • 13 tests pass, and 28 with the test-support feature (1 ignored)
  • All three cost examples build and run against the published crates

The copy that builds on the published crates is the usage suite's. That repository is the app's upstream and still points at a fork checkout.

Upstream · bite-gpui/bite_gpui_scroll_demo

gpui_morphorm

Category 1

A second LayoutEngine

A layout solver written outside the tree: morphorm, behind the same six-method trait the default engine implements. Two engines that disagree are not two columns, so the bounds are compared before anything is timed — and then a real frame is drawn, because agreeing node for node turned out not to be the same as filling a window. It publishes as bite-gp-morphorm from a repository of its own.

  • 0.00 px from the default engine, on 12 nodes and on 176–3501 changing buttons
  • 3.4–3.8× cheaper for 50–1000 buttons with changing content
  • At 1000 buttons: 44% of a 16.7 ms frame against 12%

The layout swap is no longer only something to measure with: bite-gp-morphorm 1.21.2 is on crates.io, so a second LayoutEngine is a dependency line.

Crate source · bite-gpui/gpui_morphorm
The one API gap the repoint found

The published bite-gp-engine 1.21.0 carries PathVertex::content_mask, which a later fork commit dropped — a real difference between the published artefact and the fork a consumer may have vendored. It is inert: the published renderer clips by Path::clipped_bounds() and never reads the field, so a consumer fills it with Default::default(). It is written down here rather than smoothed over because that is what installing instead of vendoring is supposed to surface.

Four kinds of project

A project here is not a showcase. It is the proof of a claim, or a bug report against one — so each is filed by which boundary it tests.

# category what it does the knobs
1 New flavour of a swappable A second implementation of an SPI that already exists. TextSystem, LayoutEngine, SceneRenderer, FramePipeline, Platform
2 Decorating a swappable Wraps an existing implementation, adding a capability. A FramePipeline or Platform wrapper — pacing, tracing
3 New authoring surface Adds to the DSL rather than to a backend. A new element or builder above div
4 Combined More than one of the above in one project. —

Planned

Named so the gaps are visible, not so they can be counted. None of these has results yet, and none is listed with any.

pipeline-decorator

Cat 2

An out-of-tree FramePipeline wrapper, and what its per-frame overhead is.

headless-platform

Cat 1

A Platform that needs no display, so a CI job can render.

scene-renderer

Cat 1

A SceneRenderer out of tree, which is what a raw render-pass blit would have to be.

authoring-widget

Cat 3

A new element built on the public authoring surface alone.

What makes a number here trustworthy

A benchmark has two columns, or it says why it does not: two implementations of one trait, the same inputs through each, and the difference is the finding. One implementation measured alone is a property of that library; only two, run through the same boundary, is a property of the architecture.

Anything measured is measured by a committed benchmark, and the run is recorded with the exact command, the toolchain and the machine next to the project it belongs to. A number without a record is a claim, and the site cites the record rather than the number.