Linebender in July 2025

Daniel McNab, Laurenz Stampfl, August 6, 2025

Linebender is an informal open-source organization working on various projects to advance the state of the art in GUI for the Rust programming language.

Vello

Vello is our GPU vector renderer. It can draw large 2D scenes with high performance, using GPU compute shaders for most of the work.

This month's progress on the sparse strips renderers, a collaborative evolution of Vello, has been centered around adding support for NEON and WASM SIMD, as well as making further improvements to multi-threaded rendering.

Our working roadmap outlines the planned timeline for work on the renderers into next year.

An integration of Vello as the backend for Servo's canvas rendering has landed in servo#36821 (and also Vello CPU in servo#38282). You can follow this work at servo#38345.

Benchmarking

We have performed some benchmarking to understand where Vello CPU's performance lies in the available 2d renderers. We did this by creating a fork of the Blend2D benchmark harness with the addition of Vello CPU. We also added Tiny Skia, which is also stewarded by Linebender and is another popular renderer written in Rust. You can read more about the benchmark methodology on Blend2D's performance page. We wish to thank the Blend2D team for creating this excellent suite of tests.

The benchmark results page shows the results of running this suite on an Apple M1 Pro. This shows the results for Blend2D, Agg, Tiny Skia, Vello CPU, Cairo, Skia, and JUCE. The source for this results page is available on GitHub at https://github.com/LaurenzV/vello_chart.

Some things that should be noted here:

It is clear that vello-cpu has very impressive performance and on track to become the fastest CPU-only renderer in the Rust ecosystem! Blend2D is still the clear winner in these tests, but vello-cpu takes second place in many of the benchmarks, often beating other mature renderers such as Skia and Cairo. This is especially the case as the size of the geometry gets larger. Blend2D and vello-cpu both offer multi-threaded rendering modes (marked by the 2T/4T/8T suffixes, as opposed to ST for single threaded). Vello CPU's multithreading is especially effective when drawing larger geometries with curves or when using complex paints such as gradients or patterns.

Fearless SIMD

Fearless SIMD is our SIMD infrastructure library. We are developing it in concert with the Vello sparse strips renderers, particularly vello_cpu.

To support the significant Vello CPU refactor using SIMD, this month saw the addition of more methods implemented in both Neon and WebAssembly. Thanks to new contributions from Benjamin Saunders we've started on SSE 4.2 support for x86 architectures.

Masonry

Masonry is the widget system developed by Linebender. It provides a non-opinionated retained widget tree, designed as a base layer for high-level GUI frameworks.

A todo list app, with items referring to aspects of the new design language, namely 'New Colours', 'Increased Consistency', and 'More Rounded Corners'. The item labelled 'A full design system' is unchecked.

As of xilem#1096 Masonry's default styles have been improved. This is not a full design system, but is a piecewise improvement.

Xilem

Xilem is our flagship GUI project, inspired by SwiftUI, which uses Masonry for its widgets. It lets you build user interfaces declaratively by composing lightweight views together, and will diff them to provide minimal updates to a retained layer. Our work on Placehero, which is the working name for our Mastodon client example, has inspired several significant architectural improvements in Xilem.

A chess board, with several controls to the left. The white queen is highlighted, and all its valid moves are also highlighted.

For July, we would like to showcase this Chess GUI developed using Xilem by Dr. Salewski. It can be found in its repository at https://github.com/StefanSalewski/xilem-chess.

Anymore

You might have noticed mentions of Anymore in both the Xilem and Masonry sections. This is a new crate which we've created for the AnyDebug trait. This allows creating dynamically typed values which can be inspected, making debugging downcasting failures much easier. This crate is designed for stability, so that it can be used for interoperability between projects (without allocation). We plan to release version 1.0 in early August.

Parley

Parley is a text layout library. It handles text layout, mostly at the level of line breaking and resolving glyph positions.

Kurbo

We released Kurbo 0.11.3, with some ergonomics and performance improvements, calculation of moments using Green's theorem, and other methods.

As mentioned in the Vello section, the new, faster stroke expansion logic (kurbo#427) has landed in main. This will be in the upcoming 0.12 release, which is semver-breaking because of changes to the API to reduce memory allocation.

Raph's job change

Raph Levien has decided to take a voluntary exit offer from Google. He is very grateful for the opportunity and the support from Google Fonts of Linebender and Rust UI projects. His last day there will be October 12. He has a new gig lined up, as well – he plans to join Canva in January, working on rendering and Rust. That also involves a move to Australia, an exciting new adventure. Through all the changes, he intends to continue his work on Linebender and Rust UI, though towards the end of the year he will be taking things a bit easy. The timing of office hours will also need to change, to accommodate the time zone; more updates will be forthcoming.

Get Involved

We welcome collaboration on any of our crates. This can include improving the documentation, implementing new features, improving our test coverage, or using them within your own code.

We host an hour long office hours meeting each week where we discuss what's going on in our projects. We're also running a separate office hours time dedicated to the renderer collaboration, details also available at that link. See #office hours in Zulip for details.

If you wish to discuss the Linebender project individually, Daniel is offering "office hours" appointments, which are free to book. It really helps us to learn what aspects our users care about the most.