This Month in Xilem, February 2024

Raph Levien, March 4, 2024

Early this year, we made a decision to use the winit crate for window creation, as opposed to rolling our own. That work has now landed in main (xilem#176 was the main PR, with a number of followups). A major motivation was to enable more platforms, with Android being a major goal. That work is in progress; a major subtask is enumerating the system fonts. As expected, this move has uncovered rough edges in winit and some regressions in behavior. We plan to address those, with the improvements hopefully benefiting the entire Rust UI ecosystem.

The Vello crate has been published as version 0.1, with significant documentation improvements and a friendly example. We consider this an alpha-quality release, as there are known issues. Even so, we want to get a release out to facilitate integrations and shake out problems.

Another major area of work on Vello is investigation of startup time, which can take multiple seconds when the platform's GPU drivers are slow at compiling the compute shaders. A number of techniques mitigate that. One is to compile shaders in parallel, using multiple cores, and that has landed (vello#455). An even bigger improvement will be caching compiled shaders. Daniel McNab has made an encouraging prototype (vello#459), and the ultimate goal is to land that in wgpu so projects across the ecosystem can benefit from it (wgpu#5292).

The work to compute strokes on the GPU using Euler spirals continues, but has not yet landed. The current state is a draft PR that implements the logic in Rust code, which now needs to be translated to WGSL for GPU evaluation (vello#496, draft PR).

There has been progress at higher levels of Xilem. Among other things, Nico Burns landed a scroll view implementation (xilem#155), and Philipp Mildenberger has been steadily refining xilem_core and xilem_web, including fine grained tree structure tracking and minimal/efficient DOM-tree-updates (xilem#160).