|
| 1 | ++++ |
| 2 | +title = "Linebender in February 2025" |
| 3 | +authors = ["Daniel McNab"] |
| 4 | ++++ |
| 5 | + |
| 6 | +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](https://rust-lang.org). |
| 7 | + |
| 8 | +## Xilem |
| 9 | + |
| 10 | +Xilem is our flagship GUI project, inspired by SwiftUI. |
| 11 | +It lets you build user interfaces declaratively by composing lightweight views together, and will diff them to provide minimal updates to a retained layer. |
| 12 | +February was a slow month for Xilem specific changes, although many changes further down the stack will be relevant to Xilem users. |
| 13 | + |
| 14 | +- [xilem#861][]: makes a method on `Pod` public to make creating widgets easier, by Evgeny. |
| 15 | + |
| 16 | +## Masonry |
| 17 | + |
| 18 | +Masonry is the widget system used by Xilem. |
| 19 | +It provides a non-opinionated retained widget tree, designed as a base layer for high-level GUI frameworks. |
| 20 | + |
| 21 | +- [xilem#872][]: Exported the scale factor for limited use cases (such as single-pixel lines). |
| 22 | + |
| 23 | +There is some important work upcoming: |
| 24 | + |
| 25 | +- [xilem#873][]: Olivier started to develop their "arbitrary properties" feature, which is intended for styling. |
| 26 | +- [xilem#875][]: Adds an image widget containing arbitrary vector graphics content, by Richard Dodd. |
| 27 | + |
| 28 | +As Parley has now been released to crates.io (discussed later in this update), we're hoping to release a new alpha of Xilem and Masonry to crates.io in March. |
| 29 | + |
| 30 | +## Vello |
| 31 | + |
| 32 | +Vello is our GPU vector renderer. |
| 33 | +It can draw large 2D scenes with high performance, using GPU compute shaders for most of the work. |
| 34 | + |
| 35 | +<!-- TODO: ... --> |
| 36 | + |
| 37 | +## Parley |
| 38 | + |
| 39 | +Parley is a text layout library. |
| 40 | +It handles text layout, mostly at the level of line breaking and resolving glyph positions. |
| 41 | + |
| 42 | +We released [Parley 0.3][] and [Fontique 0.3][] to crates.io. |
| 43 | +These contain many of the features we have discussed over the previous months, including <!-- TODO -->. |
| 44 | + |
| 45 | +## Resvg |
| 46 | + |
| 47 | +<!-- TODO: Talk about resvg 0.45 release --> |
| 48 | + |
| 49 | +## Kurbo |
| 50 | + |
| 51 | +Kurbo provides data structures and algorithms for curves and vector paths. |
| 52 | + |
| 53 | +- [kurbo#412][], [kurbo#413][]: Added utility methods to `Size`, by [@nils-mathieu][]. |
| 54 | + |
| 55 | +## Color |
| 56 | + |
| 57 | +[Color][] provides functionality for representing, converting, parsing, serializing, and manipulating colors in a variety of color spaces. |
| 58 | +It closely follows the [CSS Color Module Level 4][] draft spec. |
| 59 | + |
| 60 | +The biggest update to Color in February was the addition of absolute color conversions, in [color#139][]. |
| 61 | +This won't be visible for most users, but will be useful for those who need to convert between color spaces without changing the white point. |
| 62 | +This will also be used in [color#137][], which allows creating a theoretical black-body color from a temperature in Kelvin. |
| 63 | + |
| 64 | +## Velato |
| 65 | + |
| 66 | +We released [Velato 0.5.0][], bringing compatibility with Vello 0.4.0. |
| 67 | + |
| 68 | +## Kompari |
| 69 | + |
| 70 | +[Kompari][] is a tool for visual inspection of snapshot tests. |
| 71 | + |
| 72 | +<!-- TODO --> |
| 73 | + |
| 74 | +## Research and Future Directions |
| 75 | + |
| 76 | +Linebender has an origin story in being a very research oriented group, looking to break new ground. |
| 77 | +While we are focused on shipping code today, we still have an eye on the future and how to be prepared for the new opportunities and technologies that are coming. |
| 78 | + |
| 79 | +<!-- TODO --> |
| 80 | + |
| 81 | +## Get Involved |
| 82 | + |
| 83 | +We welcome collaboration on any of our crates. |
| 84 | +This can include improving the documentation, implementing new features, improving our test coverage, or using them within your own code. |
| 85 | + |
| 86 | +We host an hour long office hours meeting each week where we discuss what's going on in our projects. |
| 87 | +See [#office hours in Zulip](https://xi.zulipchat.com/#narrow/channel/359642-office-hours) for details. |
| 88 | +<!-- TODO: Mention renderer office hours? --> |
| 89 | + |
| 90 | +* Daniel and Olivier's "office hours" appointments can still be booked by anyone for open-ended discussion of the ecosystem. |
| 91 | + * [See Daniel's schedule here](https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ32eQYJ9DtZ_wJaYNtT36YioETiloZDIdImFpBFRo5-XsqGzpikgkg47LPsiHhpiwiQ1orOwwW2). |
| 92 | + * [See Olivier's schedule here](https://calendar.google.com/calendar/u/0/appointments/schedules/AcZssZ2t767ZRETD_TkRI_VxK2ZTG0VrO9OZ4l7HvTxefhtJcg85iK0ZN7zWNnAEZtH0Dn7C1GKxrmYM). |
| 93 | + |
| 94 | +[Color]: https://docs.rs/color/ |
| 95 | +[CSS Color Module Level 4]: https://www.w3.org/TR/css-color-4/ |
0 commit comments