24th of January 2022 to 30th of January 2022
SixtyFPS UI Library
This week we were working towards the upcoming 0.2.0
release.
This is a opportunity for us to fix things that were named poorly, to shuffle some code around, to remove deprecated APIs as well as turn some warnings into errors and to update our required tooling.
So many of the changes this week do break API, and we hope that these changes will make for a library that is easier to code for and easier for us to extend and maintain.
API Changes for Version 0.2.0
- Update required rust compiler version to
1.56
and use C++ 20 for the C++ integration (#867)Make use of
std::span
in C++ whenever we take a slice. - Use edition 2021 for all crates (#871)
- Turn warnings into errors (#887)
Warnings about deprecated use of the
.60
language were turned into errors. - Model API was improved:
ModelHandle
was renamed toModelRc
(#794 Model::row_data
now returns anOption<T>
(#873)Similarly the C++ API now returns an
std::optional<T>
.- Remove default implementation of
Model::model_tracker
(#874)This avoids models being constant due to the model author forgetting to implement the
model_tracker
function. - Remove
Value::Array
from interpreter (#880)This is a change invisible to most users, but removes special casing in our code as all array access works through the Model API now.
- Make our image API more in line with widely used image crates (#885)
Use
u32
for pixel positions, just like all the rust crates do. - Rename
CallCallbackError
toInvokeCallbackError
in the interpreter (#886)
More work was done in preparation to renaming the project as well as its crates.
New Features
- Add support for font-size to LineEdit and Text-Edit widgets. (#872)
(38bd19)
closes #435
This change was contributed by @besok. Thank you for your work!
Documentation
Migration guides from version 0.1.x
to 0.2.0
were added. You can find preliminary versions of these guides here:
These guides describe all the major API incompatible changes and will of course be part of the documentation of version 0.2
.
Janitor work
Changes: afb3f2, 6ce9a6, 2e10b4, 84a62c
Work in progress
- Add compatibility feature to our public crates (#867)
We want to be able to put existing functionality behind a feature flag in future versions while keeping the semver compatibility. This is only possible if that new feature flag is enabled by default, but this is not working if the users have done
default-features = false
in their Cargo.toml. So we add newcompat-x-y-z
feature that is mandatory to have and which is enforced with acompile_error!
Statistics
65 patches were committed by 7 authors.
← Next : 31st of January 2022 to 6th of February 2022 | Previous : 17th of January 2022 to 23rd of January 2022 →
Slint is a declarative GUI toolkit to build native user interfaces for desktop and embedded applications written in Rust, C++, JavaScript, and Python. Find more information at https://slint.dev/ or check out the source code at https://github.com/slint-ui/slint