Technology1 min read

Rune: A native GPU-rendered Rust UI framework for macOS, Windows, Linux and web

By · Published by Everything Blog

In short

Anomaly's cross-platform framework includes dedicated proprietary subsystems for rendering, text layout, and spring animations across desktop and web environments. Applications built with the toolkit can run in headless environments, permitting automated agents to output element trees and generate PNG snapshots for automated inspection. The project currently remains in pre-release, requiring developers to pin specific unrewritten revisions of the development branch. Additionally, the repository bypasses conventional pull requests, relying instead on user agents to file issue proposals for the maintainers' agents.

Key points

  • Software agents can autonomously construct and verify applications by evaluating scripted…: Software agents can autonomously construct and verify applications by evaluating scripted inputs alongside headless image outputs.
  • Users must pin a specific revision on the development branch because the framework remain…: Users must pin a specific revision on the development branch because the framework remains in an active pre-release state.
  • Maintenance is designed around agent-to-agent collaboration, requiring automated tools to…: Maintenance is designed around agent-to-agent collaboration, requiring automated tools to file bug reports directly to maintainers' agents.

Sources checked by our analysis pipeline: 1

A native GPU-rendered Rust UI framework for macOS, Windows, Linux and the web, with its own renderer, text, layout and springs.

Every app can run headless, so an agent can render to PNG, dump the element tree and drive it with scripted input.

fn view(s: &State, _: &mut Cx<State>) -> El {

let t = tok::theme(true);

let label = text(if s.on { "Lights on" } else { "Lights off" })

.font(type_::TITLE).color(t.text);

let knob = el().key("knob").size(18.0, 18.0).radius(9.0).fill(t.knob)

.absolute(if s.on { 18.0 } else { 2.0 }, 2.0);

let switch = el().key("switch").role("switch").label("Lights").checked(s.on)

.focusable(true).size(38.0, 22.0).radius(11.0)

.fill(if s.on { tok::accent(0, true) } else { t.control_off })

.motion(motion::SNAPPY)

.on_press(|s: &mut State| s.on = !s.on)

.child(knob);

col().w_full().h_full().center().gap(16.0).fill(t.bg).child(label).child(switch)

}

Give your coding agent this repo. Have it start from examples/hello

and crates/rune/README.md

, then check its own work headlessly by rendering PNGs and inspecting the element tree.

Build me a with Rune (github.com/anomalyco/rune). Start from examples/hello and check your work headlessly.

rune = { git = "https://github.com/anomalyco/rune", rev = "<dev rev>" }

Rune is pre-release. Pin a rev of dev

; dev

is never rewritten.

Docs ·…

Technology