Linebender in November 2025
Kaur Kuut, Robert Brewitz Borg, December 15, 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.
- vello#1203: Introduced a new clipping algorithm for non-layer based clipping.
- vello#1286: Added image filters to Vello CPU.
- vello#1301: Optimized gradient rendering in Vello CPU.
- vello#1237: Added support for non-isolated masks.
- vello#1309: Added comprehensive examples to Vello CPU.
Masonry and Xilem
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 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.
- xilem#1443: Added text size config to
CheckboxandTextInput. - xilem#1444: Added support for non-contiguous app state.
- xilem#1448: Changed default background and text colors.
- xilem#1461: Refactored
xilem_coremodule structure. - xilem#1455: Reworked
to_do_mvcexample. - xilem#1471: Lifted common
Viewwrappers toxilem_core. - xilem#1470: Renamed
MessageContexttoMessageCtx. - xilem#1440: Added
ResizeObserverfor detecting widget size changes. - xilem#1482: Added
Passthroughwidget for simple widget encapsulation. - xilem#1493, xilem#1494: Added support for efficient child replacement in all widgets.
- xilem#1497, xilem#1502: Standardized widget child management methods.
- xilem#1492: Added
FocusedBorderColorproperty. - xilem#1505: Now accepting
stateinTaskview. - xilem#1499: Split off
WindowViewcode intoMasonryRoot. - xilem#1490: Upgraded to Parley v0.7.0.
Eli Heuer has made significant progress in porting our old Druid hero app, Runebender, to Xilem.
Check out the port's repo or follow the progress on Zulip.
Parley
Parley is a text layout library. It handles text layout, mostly at the level of line breaking and resolving glyph positions.
We released Parley 0.7. 🎉
- parley#449: Optimized line height computation.
- parley#367: Added
TextWrapModestyle. - parley#452: Introduced Unicode data in preparation of migrating to ICU4X.
- parley#468: Added word and letter spacing to text layout based on style properties.
- parley#467, parley#471: Added
fontconfig-dlopenfeature to Fontique to control how to load the fontconfig library. - parley#276: Improved trailing whitespace handling.
We have also won not just one but two grants from NLnet for additional work on Parley in 2026. More updates to follow as we finalize the plans.
Kurbo
Kurbo provides data structures and algorithms for curves and vector paths.
We released Kurbo 0.13. 🎉
- kurbo#493: Converted
CubicBez::nearestto thepoly-coolquintic solver for a nice speedup (3000x for high accuracy!) and better robustness. This just missed the 0.13 release train. - kurbo#521, kurbo#522, kurbo#525, kurbo#524, kurbo#526: Marked a bunch of methods
const. - kurbo#527: Derived
HashforAxis.
Fearless SIMD
Fearless SIMD is our SIMD infrastructure library. It provides a solid way for writing SIMD operations portably across WASM, Aarch64, x86, and x86_64.
- fearless_simd#115: Updated x86 codegen to use AVX2 intrinsics.
- fearless_simd#123: Widened AVX2's associated types to 256 bits.
- fearless_simd#120: Implemented the reinterpret operations without
bytemuck. - fearless_simd#130: Implemented
core::ops::Notfor integer types. - fearless_simd#134: All float-to-integer and integer-to-float conversions are implemented properly on x86. They should now handle all values correctly, including
NaN. - fearless_simd#136: The floating-point
min_preciseandmax_preciseoperations now behave the same way on x86 and WebAssembly as they do on AArch64, returning the non-NaNoperand if one operand isNaNand the other is not. Previously, they returned the second operand if either wasNaN. - fearless_simd#140: The
load_interleavedandstore_interleavedoperations now use native intrinsics on x86, instead of using the fallback implementations. - fearless_simd#143: Now using WebAssembly's relaxed SIMD intrinsics if available.
- fearless_simd#145: Added the
ceilandround_ties_evenoperations to floating-point vector types.
Velato
Velato is our Lottie render library. The goal is to provide coverage of the large Lottie spec, up to what Vello can render, for use in interactive graphics.
An assortment of fixes and improvements to Velato's Lottie support to render more complex animations correctly, see the linked PRs for details.
- velato#78: Restructured schema to reflect the specification types.
- velato#79: Now allowing any skew value.
- velato#80: Replaced
keyframewithkurbofor tweening. - velato#81: Now tweening with a cubic bezier curve.
- velato#82: Fixed flickering issues for certain Lottie configurations.
- velato#83: Added support for trimmed paths.
- velato#84: Fixed matte layers.
- velato#85: Fixed easing handles, by only use the first two components.
Bevy Vello
Bevy Vello is our Bevy integration for Vello. The goal is to provide support for rendering scenes, text, SVGs, and Lotties in the Bevy game engine.
A lot of work was done to update Bevy Vello for Bevy 0.17.
- bevy_vello#180: Updated to Bevy 0.17, plus other dependency updates.
- bevy_vello#182: Fixed resize render targets on camera viewport change.
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. Note that office hours are on a break for the remainder of the year. They are expected to continue in January, keep an eye on 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.