This Month in Xilem, July 2024
Daniel McNab, Olivier Faure, August 8, 2024
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.
This month saw a lot of community contributions to Linebender projects.
Philipp Mildenberger especially is a major driver for progress on Xilem and especially the xilem_web
crate.
Bruce Mitchener has been very active reviewing pull requests, which is an under-appreciated but essential task for any open-source project.
Xilem
Xilem is our flagship GUI project, inspired by SwiftUI.
- xilem#423 integrates Tokio into Xilem, showing how the Xilem model can interact with async work.
- xilem#428 by Philipp adds explicit support for Flex parameters.
- Philipp ported the async work to Xilem Web, and experimented with some extensions:
- xilem#467 by Jared O'Connell adds a calculator example. This example can also be run on Android (xilem#474).
Masonry
Masonry is the widget system used by Xilem. The most impactful change was the implementation of the "Widgets in arenas" RFC in xilem#396. Widgets are now stored in a global arena, which has little impact on the public APIs but make future changes a lot easier to implement.
- xilem#417 exposes an unstable API for embedding Masonry and Xilem into an existing Winit application.
- xilem#418, xilem#421 improved our unofficial support for iOS.
- rfcs#7 specifies a clearer architecture for passes, including simplifications necessary for compositor use. Actually integrating with the compositor is still out of scope for reasons Raph has laid out before, but the new pass specification gives us a starting point when we get there.
Vello
Vello is our GPU vector renderer.
- The GPU-friendly Stroke Expansion paper has been released.
Follow the link for the outline, the full paper, demos, and a talk at the HPG 2024 conference.
Note that the interactive demo is built with
xilem_web
. - Vello 0.2.1 has been released. This patch version resolves a longstanding crash around empty scenes.
- vello#643, vello#647 switch to Git LFS for storing snapshot test files. Git LFS is an open-source Git extension supported by Github, that lets users commit large files to a repository without permanently bloating it. Using it has trade-offs around bandwidth usage in CI, but otherwise matches our use-case perfectly.
Parley
Parley is a text layout library. Nico Burns contributed quite a few improvements to Parley this month:
- parley#67 implements inline box layout, which lets us mix textual and non-textual content and have the non-textual content laid out in flow with the text.
- parley#76, parley#84 gets style types closer to CSS engines.
Others
- The Glazier repository has been archived. This is in continuity with our direction so far, as we've dropped support for it and committed to building our crates on top of Winit.
- We are at the end of our documented May-July 2024 roadmap. We expect to do a full retrospective on it soon, including the items we shipped and those that slipped.
- Daniel and Olivier are now accepting "office hours" style appointments, for open-ended discussion of the ecosystem.