This Month in Xilem, August 2024
Daniel McNab, September 11, 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.
Linebender has a new logo, which was contributed by Markus Siglreithmaier. We're seeking feedback on Zulip in #linebender>logo.
Xilem
Xilem is our flagship GUI project, inspired by SwiftUI.
- We integrated basic animated variable font rendering (xilem#507).
- Philipp Mildenberger moved us back to using
ViewMarkerin xilem#472. This restores the ability to returnViewSequences, by making a tradeoff to work around Rust's faulty trait ambiguity rules. - We added Views for some existing and new widgets:
Xilem Web is a community managed experimental DOM implementation of the Xilem pattern. This month, the updates include:
- Support for returning multiple views from the main logic (xilem#482).
- Support for DOM templating, for efficient repeated creation of similar views (xilem#495).
Jared O'Connell additionally contributed a stopwatch example in xilem#492.
Masonry
Masonry is the widget system used by Xilem. This month has been dominated by Olivier's implementation of pass specification (rfcs#7):
- xilem#512: The new compose pass, which is used to minimise redraw when scrolling.
- xilem#510: Adds the mutate pass, which allows later passes to assume the tree structure is stable by limiting when tree mutation can occur.
- xilem#522: Implements paint and accessibility as passes, with follow-up by Tom Churchman in xilem#557.
- xilem#488 and xilem#540: updated event and pointer handling, and disabled handling respectively.
- In progress work includes layout in xilem#529, focus in xilem#538, animation in xilem#539 and scroll requests in xilem#550.
We also had some great community contributions, such as:
- Richard Dodd added a new progress Bar widget (xilem#513).
- Fixes for Portal scrolling, by Tom Churchman (xilem#563).
The progress bar widget was contributed by Richard Dodd in xilem#513.
We continue to make progress on other key features.
- Snapshot tests now are cross-platform and run in CI (xilem#233).
- Pan/flick gestures are being developed in xilem#562.
- Progress continues on text input for Android. This involves creating our own
Activity, with support for both text input and accessibility. This newActivitywill useSurfaceViewlike other modern native code based activities (GameActivity,MakepadActivity, etc.), and our aim is that it won't require a Java toolchain to build a simple application. - Progress continues on the Accessibility integration for Android. You can try this in xilem#575, or see it in the below video.
The Xilem to_do_mvc example running with TalkBack integration.
Video provided by Matt Campbell.
Vello
Vello is our GPU vector renderer. We have made some really great progress in August.
- We now support blurred rounded rectangles, contributed by Markus Siglreithmaier (vello#665)
- Blend stack spilling was implemented, which allows blends more than four layers deep (vello#661).
- Fixes for some visual artifacts in vello#651, vello#659 and vello#673.
- Embedding existing wgpu textures is now supported (vello#636).
- We now support bitmap glyphs (i.e. emoji), in addition to our previous COLR support (vello#641).
- Work has begun on sparse strips, which is tracked in vello#670.
- Frame pacing for Android is being investigated and developed in vello#674.
- Thomas Smith has been doing some deep-dives into parallel scan, which is the core operation in Vello. This work can be found in #gpu>Progress for GPU's Without Forward Progress Guarantees.
Vello now supports blurred rounded rectangles, based on the maths from Raph's blog.
Left: Vello's blurred rounded rectangles test scene.
Right: Blitz's servo example which renders box shadows using this feature.
Parley
Parley is a text layout library.
- Primitives required for robust text editing were added in parley#106.
Others
- Bruce Mitchener has started work on Interpoli, an animation support library.
- We have performed a retrospective on our last roadmap.
- Daniel and Olivier's "office hours" appointments can still be booked by anyone for open-ended time-limited discussion of the ecosystem.