-
Notifications
You must be signed in to change notification settings - Fork 8
This Month in Linebender, October 2025 #130
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Also added a screenshot from Laurenz Stampfl's thesis.
DJMcNab
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some first-pass comments.
Overall this looks good. It's a reminder that brevity in these isn't a bad thing!
| </figure> | ||
|
|
||
| We released version [0.0.4 of the sparse strips][sparse strips 0.0.4] versions of the renderer. | ||
| It should be a solid version of vello_cpu, suitable for a wider range of applications where CPU-only rendering is appropriate. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| It should be a solid version of vello_cpu, suitable for a wider range of applications where CPU-only rendering is appropriate. | |
| It should be a solid version of Vello CPU, suitable for a wider range of applications where CPU-only rendering is appropriate. |
We could also consider linking to Vello CPU on crates.io here, although I'm more hesitant to do the same for Vello Hybrid...
| It should be a solid version of vello_cpu, suitable for a wider range of applications where CPU-only rendering is appropriate. | |
| It should be a solid version of [Vello CPU](https://crates.io/crates/vello_cpu), suitable for a wider range of applications where CPU-only rendering is appropriate. |
|
|
||
| Thomas Smith has been making excellent progress on rendering sparse strip alpha values in GPU compute shaders. | ||
| This was the original motivation for the sparse strip work. | ||
| You can follow the progress in the Zulip thread [Thoughts on GPU sparse strips]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you think about:
| You can follow the progress in the Zulip thread [Thoughts on GPU sparse strips]. | |
| You can follow the progress in the Zulip thread [#vello > Thoughts on GPU sparse strips]. |
or even
| You can follow the progress in the Zulip thread [Thoughts on GPU sparse strips]. | |
| You can follow the progress in [#vello > Thoughts on GPU sparse strips]. |
| Work on Vello Classic focused on support for web standard compatibility, motivated by Servo integration. | ||
| Those features include support for non-premultiplied alpha ([vello#1173][], [vello#1262][], [vello#1145][]). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We probably need something like:
This has been released in Vello v0.6.0, which also upgraded to wgpu v26 for compatibility with Bevy v0.17.
|
|
||
| Work on Vello Classic focused on support for web standard compatibility, motivated by Servo integration. | ||
| Those features include support for non-premultiplied alpha ([vello#1173][], [vello#1262][], [vello#1145][]). | ||
|
|
||
| Vello CPU now supports non-isolated blending ([vello#1159][] among others), which is important for HTML5 canvas compatibility. | ||
| SVG and COLRv1 emoji, by contrast, which has set priorities for Vello in the past, only support isolated blending. | ||
| There are also promising early results for supporting image filters including blurs. | ||
|
|
||
| A major development in Vello Hybrid is support for multiple image atlases ([vello#1252][]), which improves performance for image rendering. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think that the order of paragraphs in this section might not be optimal. I bounced off it bit reading it because it jumps from Sparse Strips to Vello Classic back to sparse strips.
| It lets you build user interfaces declaratively by composing lightweight views together, and will diff them to provide minimal updates to a retained layer. | ||
|
|
||
| We released [version 0.4][Xilem 0.4.0] of both Masonry and Xilem in October. | ||
| This release comprises 7 crates, including xilem_web. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| This release comprises 7 crates, including xilem_web. | |
| This release comprises 7 crates, including Xilem Web. |
maybe?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here I was going for the crate name, but I'll make this change, it makes sense to be consistent.
| A major development in Vello Hybrid is support for multiple image atlases ([vello#1252][]), which improves performance for image rendering. | ||
|
|
||
|
|
||
| ## Masonry and Xilem |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't mind having this be fairly short, especially as the GitHub release has all of the highlights.
We could say something about Masonry having greatly improved documentation, but I also think that's a hard message to land coherently alongside "Xilem's documentation is still awful".
| Linebender is thrilled to have other UI toolkits in the ecosystem adopt our crates. | ||
|
|
||
| Much of the development work on Parley is directed toward supporting HTML floats, particularly in Blitz. | ||
| [parley#421][] is the main PR tracking this work, and references several other PRs. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missed link reference definition (we really should get markdownlint set up)
| ## 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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| It provides a solid way for writing SIMD operations portably across WASM, Aarch64, x86, and x86_64. | |
| It provides a solid way for writing SIMD operations portably across Wasm, AArch64, x86, and x86_64. |
I don't particularly like that capitalisation for WebAssembly, but it seems to be how it's stylised.
Also bump publication date.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nits around crate names, and a missing link to the Vello release.
There is something to be said about how our proliferation of two-word crate names impacts how clear it is that they're an atomic unit, but that's neither here nor there. That is, it's our current policy to refer to crates with their capitalised name except in code or when using a shorthand like xilem#513 to refer to an issue.
Otherwise, this looks good to me (pending the rename to fix the date)
| Vello is our GPU vector renderer. | ||
| It can draw large 2D scenes with high performance, using GPU compute shaders for most of the work. | ||
|
|
||
| Laurenz Stampl has done his Masters degree at ETH Zurich on high performance CPU rendering of 2D graphics, particularly the techniques used in vello_cpu. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Laurenz Stampl has done his Masters degree at ETH Zurich on high performance CPU rendering of 2D graphics, particularly the techniques used in vello_cpu. | |
| Laurenz Stampl has done his Masters degree at ETH Zurich on high performance CPU rendering of 2D graphics, particularly the techniques used in Vello CPU. |
|
|
||
| We released version [0.0.4 of the sparse strips][sparse strips 0.0.4] versions of the renderer. | ||
| It should be a solid version of [Vello CPU](https://crates.io/crates/vello_cpu), suitable for a wider range of applications where CPU-only rendering is appropriate. | ||
| In addition, it is the initial release of vello_hybrid, a newer approach that uses the GPU to do pixel compositing, but SIMD-accelerated geometry processing on the CPU. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| In addition, it is the initial release of vello_hybrid, a newer approach that uses the GPU to do pixel compositing, but SIMD-accelerated geometry processing on the CPU. | |
| In addition, it is the initial release of Vello Hybrid, a newer approach that uses the GPU to do pixel compositing, but SIMD-accelerated geometry processing on the CPU. |
|
|
||
| Work on Vello Classic focused on support for web standard compatibility, motivated by Servo integration. | ||
| Those features include support for non-premultiplied alpha ([vello#1173][], [vello#1262][], [vello#1145][]). | ||
| This has been released in Vello v0.6.0, which also upgraded to wgpu v26 for compatibility with Bevy v0.17. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| This has been released in Vello v0.6.0, which also upgraded to wgpu v26 for compatibility with Bevy v0.17. | |
| This has been released in Vello [v0.6.0](https://github.com/linebender/vello/releases/tag/v0.6.0), which also upgraded to wgpu v26 for compatibility with Bevy v0.17. |
(You might want to make that be a link reference definition)
| [parley#421][] is the main PR tracking this work, and references several other PRs. | ||
|
|
||
| There has also been some performance work, which especially impacts larger paragraphs. | ||
| This work continues, and we hope to publish quantitative benchmark results in November. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is this referring to? Is this the addition of Parley to Cosmic Text's benchmarks?
|
|
||
| As development work, we are pursuing a new approach to using intrinsics safely inside `#[target_feature]` blocks: [fearless_simd#108]. | ||
| [Safe SIMD intrinsics](https://blog.rust-lang.org/2025/05/15/Rust-1.87.0/#safe-architecture-intrinsics) were added in Rust 1.87, and we encourage using them when writing architecture-specific code. | ||
| An explicit design goal of fearless_simd is to allow portable code in cases where the functionality is reasonably common across architectures, but also facilitate "downcasting" to a specific SIMD level when those intrinsics offer higher performance than the portable choice. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| An explicit design goal of fearless_simd is to allow portable code in cases where the functionality is reasonably common across architectures, but also facilitate "downcasting" to a specific SIMD level when those intrinsics offer higher performance than the portable choice. | |
| An explicit design goal of Fearless SIMD is to allow portable code in cases where the functionality is reasonably common across architectures, but also facilitate "downcasting" to a specific SIMD level when those intrinsics offer higher performance than the portable choice. |
No description provided.