Skip to main content

frus 0.1.0, the first release

· 2 min read
The frus team
frus contributors

The first tagged release: a point in the history that can be cited, cloned and diffed. 277 milestones went into it. It is not an API commitment: nothing here is stable yet, and the public surface will move.

Platforms​

  • Desktop (Windows, Linux, macOS) on winit and wgpu: the clipboard, screen readers through AccessKit, live reload while developing.
  • Android: a native activity, Vulkan, a real IME with composition and swipe typing, window insets and the full lifecycle, checked on a physical device.
  • Web (wasm and WebGPU): rendering, input, animation, subscriptions, and asynchronous effects, fetch included.

The application model​

An application is update and view. update is pure and synchronous, every effect goes through a Command, and every long-lived stream through a Subscription. That is what lets 717 tests run with no GPU and no window. A single frus::main! declaration generates the desktop, Android and web entry points, and an application declares one dependency, frus.

Rendering, layout and widgets​

A wgpu renderer draws rounded rectangles, borders, shadows, gradients, vector paths, images, clips and layers. Layout is flexbox and grid over taffy, and text is shaped by cosmic-text, bidirectional scripts included. Around 80 widget modules ship: text fields, data tables, an editable grid, charts, date and time pickers, a kanban board, trees, toasts, modals and drawers. Every one is themed from a Material 3 colour scheme, and every style can be overridden.

Around them​

Fluent translations with right-to-left layout, a semantics tree for screen readers, and frus-test for headless rendering and golden images (87 at the time).

Not yet​

Nothing is on crates.io, the web has no clipboard or accessibility yet, and iOS compiles but does not run.