Linebender in August 2025

Daniel McNab, September 12, 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.

Parley

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

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.

The biggest updates to the sparse strip renderers this month are the support for blending and caching in Vello Hybrid. We have also had continued SIMD improvements, including x86 support.

A series of overlapping shapes of various colours, variously composited.

Blending is now supported by Vello Hybrid.

We have additionally been doing further work on Vello's imaging model. This is partly in service of the integrations of Vello in Graphite and Servo.

As of servo#38962, Vello and Vello CPU are the only canvas backends used in Servo.

Fearless SIMD

Fearless SIMD is our SIMD infrastructure library. We are developing it in concert with the Vello sparse strips renderers, particularly vello_cpu. We released Fearless SIMD v0.2.0, the first Fearless SIMD release since 2018. This included the following changes from August:

With this release, Fearless SIMD is now ready for experimental use outside of Linebender. It now provides a solid way for writing portable SIMD operations across WASM, Aarch64, x86, and x86_64. Note however that the library is still in a quite early state - in particular, our documentation is currently only cursory. Contributions to improve this would be welcome!

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.

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.

Placehero:

Two screenshots of a Mastodon app. Left shows the post announcing Matt Campbell's RustWeek 2025 talk, including a very low detail image with alt text shown below. The right screen shows posts from googlefonts@typo.social, which was entered in a box in the left sidebar of the app.

Placehero can now load content from anywhere in a user's timeline, and preview images (left). It can also jump directly to a specific user's timeline by username (right). Note that full image loading is not yet supported, only the preview based on the blurhash.

Anymore

On 4 August, we released Anymore v1.0.0. This is our crate for the fundamental AnyDebug trait, which greatly aids debugging when using dynamically typed values. Anymore is designed to be used in public APIs; it has a minimal API surface so that it can be extremely stable. We recommend considering it for use cases where you would otherwise be returning (potentially wrapped) Box<dyn Any> values from your libraries.

Kurbo

Kurbo provides data structures and algorithms for curves and vector paths. We've been preparing for the 0.12 release:

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. See #office hours in Zulip for details. We're also running a separate office hours time dedicated to the renderer collaboration, details also available at that link.

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.