January 25, 2023 by Tobias Hunger
Slint 0.3.4 Released
Today we published version 0.3.4 of Slint following semver as usual. We do patch level releases all the time, but only announce those in our weekly updates. This release is special to us as it this will be the last release before Slint 1.0.
Slint is a GUI toolkit to develop user interfaces for desktop and embedded applications. It is implemented in Rust and can be used from different languages such as Rust, C++, or Javascript.
Slint Language Evolution
As the language grew more expressive, and as more people started to use it, we noticed some potential to improve both, language maintainability and discoverability. Olivier shared his thoughts about improvements in two blog posts (part 1, part 2) . A big thank you to everybody for getting involved in these discussions, we appreciate your feedback and it has made Slint better for all of us.
In this release we've implemented various changes at the syntax level. The main difference
between the old and new syntax is how we declare components. Instead of using
MyComponent :=
, we now use the component
keyword.
component MyComponent {
in property <int> text;
out property <bool> pressed;
Text { text: root.text; }
TouchArea { pressed <=> root.pressed; }
}
For now, both syntaxes co-exist, all your existing files continue to work.
When using the new syntax, you can access features to make UI code more maintainable:
- Non-local properties must be explicitly qualified with
self
orroot
. - Declared properties are now private by default. If you want to create a public property, they must be annotated with
in
,out
orin-out
- Elements are now centered within their parent by default.
- Calling impure functions and callback is now a hard error.
To try it out, update your existing .slint files to the new syntax using our slint-updater
tool:
cargo install slint-updater
slint-updater -i /path/to/my/app/ui/**/*.slint
Table Widget
Slint gained a new widget: StandardTableView
.
It comes with all the popular nifty features: displaying resizable column headers, and sorting columns in ascending or descending order.
Tooling Improvements
Our VSCode extension supports Slint code embedded into Rust files
using the slint!
macro. That means you get code completion, syntax highlighting,
and live-preview.
Slint 1.0 in the Works
Our next release will be 🥁 Slint 1.0.
We're in the midst of clean up, improving the documentation, and quality assurance.
You can help us by upgrading to Slint 0.3.4 and testing it with your project. We welcome all feedback. We look forward to hearing from you. You can get in touch with us via our GitHub site, email, or via chat on our Mattermost instance.
Slint is a Rust-based toolkit for creating reactive and fluent user interfaces across a range of targets, from embedded devices with limited resources to powerful mobile devices and desktop machines. Supporting Android, Windows, Mac, Linux, and bare-metal systems, Slint features an easy-to-learn domain-specific language (DSL) that compiles into native code, optimizing for the target device's capabilities. It facilitates collaboration between designers and developers on shared projects and supports business logic development in Rust, C++, JavaScript, or Python.