xilem/xilem
Daniel McNab 455b614769
Improve tracing for use of Android GPU Inspector (#534)
- Adds tracing_android_trace
- Correct the span for VariableLabel
- Make the created apps "debuggable"
- Enable spans for `wgpu`'s `profiling` results
- Add a span around the Vello rendering to show when that is
2024-08-22 14:36:07 +00:00
..
examples Rename async_repeat into task (#528) 2024-08-20 08:50:47 +00:00
resources/fonts/roboto_flex Label with animated variable font parameters (#507) 2024-08-16 14:06:42 +00:00
src Add trace span to AnyView (#531) 2024-08-21 13:59:12 +00:00
Cargo.toml Improve tracing for use of Android GPU Inspector (#534) 2024-08-22 14:36:07 +00:00
LICENSE Move crates to the repository root (#302) 2024-05-11 21:59:03 +00:00
README.md Label with animated variable font parameters (#507) 2024-08-16 14:06:42 +00:00

README.md

Xilem

An experimental Rust architecture for reactive UI

Latest published version. Documentation build status. Apache 2.0 license.

Linebender Zulip chat. GitHub Actions CI status. Dependency staleness status.

Xilem is a UI toolkit. It combines ideas from Flutter, SwiftUI, and Elm. Like all of these, it uses lightweight view objects, diffing them to provide minimal updates to a retained UI. Like SwiftUI, it is strongly typed. For more details on Xilem's reactive architecture see Xilem: an architecture for UI in Rust.

Xilem's reactive layer is built on top of a wide array of foundational Rust UI projects, e.g.:

  • Widgets are provided by Masonry, which is a fork of the now discontinued Druid UI toolkit.
  • Rendering is provided by Vello, a high performance GPU compute-centric 2D renderer.
  • GPU compute infrastructure is provided by wgpu.
  • Text support is provided by Parley, Fontique, Swash, and Skrifa.
  • Accessibility is provided by AccessKit.
  • Window handling is provided by winit.

Xilem can currently be considered to be in an alpha state. Lots of things need improvements.

Minimum supported Rust Version (MSRV)

This version of Xilem has been verified to compile with Rust 1.79 and later.

Future versions of Xilem might increase the Rust version requirement. It will not be treated as a breaking change and as such can even happen with small patch releases.

Click here if compiling fails.

As time has passed, some of Xilem's dependencies could have released versions with a higher Rust requirement. If you encounter a compilation issue due to a dependency and don't want to upgrade your Rust toolchain, then you could downgrade the dependency.

# Use the problematic dependency's name and version
cargo update -p package_name --precise 0.1.1

Community

Discussion of Xilem development happens in the Linebender Zulip, specifically the #xilem channel. All public content can be read without logging in.

Contributions are welcome by pull request. The Rust code of conduct applies.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache 2.0 license, shall be licensed as noted in the License section, without any additional terms or conditions.

License

Licensed under the Apache License, Version 2.0 (LICENSE or http://www.apache.org/licenses/LICENSE-2.0)

The font file (RobotoFlex-Subset.ttf) in resources/fonts/roboto_flex/ is licensed solely as documented in that folder, (and is not licensed under the Apache License, Version 2.0). Note that this file is not distributed with the.