September 4, 2023 by Slint Team
Slint 1.2 Released with Enhanced Platform Abstraction
We're excited to introduce Slint version 1.2, which includes a wide range of new features while maintaining full backwards compatibility. This release continues our commitment to empowering developers with efficient tools for UI development. Let's take a look at the highlights.
Improved Platform API
Slint's platform API is a low-level interface that provides abstractions for window surfaces and the event loop. We initially created this API to make it possible to integrate Slint with Rust on any microcontroller with software rendering. Our built-in backends use it to make applications run on Wayland or Windows out of the box. In version 1.2, we've significantly extended the public API for Rust as well as C++ to enable new use-cases:
- Embed a Slint UI as a plugin in foreign applications, such as digital audio workstations (DAW).
- Implement your own backend for custom windowing systems.
- Develop C++ applications with Slint on MCUs, as the majority of microcontrollers SDKs are based on C/C++.
Support for Espressif
The Espressif IDF framework is a C-based SDK that makes it easy to target MCUs from the ESP32 family. The SDK modularizes software development using components and provides clean hardware abstractions. ESP-IDF is a great fit for us and our customers, so we went straight ahead and built a Slint ESP-IDF component that implements our new C++ platform layer. Add this component to your project with just one command and you're all set to implement a graphical user interface:
idf.py add-dependency slint/slint
LinuxKMS Backend
Often the user interface on an embedded device is implemented via a single full-screen application. In such a device, a windowing system like X11 or Wayland adds no value and slows down the device startup. In Slint 1.2 we solve this with our new lightweight, experimental LinuxKMS backend. This backend provides the following benefits:
- Renders directly to the screen with OpenGL or Vulkan using Linux's KMS/DRI infrastructure, for maximum performance.
- Reads directly from a touch pad, touch screen, mouse, or keyboard using
libinput
. - Uses
libseat
to eliminate the need to run the application as root.
Other Features and Bug Fixes
- Added
ReverseModel
(Rust/C++) to display a model in reverse order. Thank you Guilhem Vallat for the Rust contribution. - Added
edited
callback toSpinBox
. - Introduced
row-pointer-event
callback toStandardTableView
. - Enhanced
StandardListView
withcurrent-item-changed
anditem-pointer-event
callbacks. - Added
orientation
property toSlider
. - Added a new walkthrough to the Slint VS code extension for a better on-boarding experience.
For a complete list of all changes, check out the Changelog.
Upgrading
Updating to Slint 1.2 is effortless. Rust users can run cargo update
to bring their application up to date. For those using the CMake integration with
FetchContent
, update the GIT_TAG
entry
in CMakeLists.txt
to v1.2.0
or
release/1.2
for automatic tracking of 1.2.x releases.
#MadeWithSlint
We received new submissions on the Slint showcase website https://madewithslint.com. Thank you Danil Gulin and Vinegret43.
If you'd like to submit your Slint application, please create a PR in the https://github.com/slint-ui/madewithslint repo or submit the form on https://madewithslint.com.
Conclusion
Thank you to everyone who contributed, especially the numerous external contributors. Slint 1.2 marks a significant update that underlines our mission to empower developers to create innovative user interfaces, by targeting more platforms and devices, lowering system requirements, and continuously enhancing our widgets.
We invite you to explore these new features and enhancements by trying out Slint 1.2. Dive into our documentation for guides, tutorials, and examples to make the most of these exciting updates.
If you run into any issues or notice missing functionality, please don't hesitate to let us know. We'd love to get your feedback. You can get in touch with us via our GitHub site, email, or via chat on our Mattermost instance. Thank you for being a part of the Slint community ❤️.
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.