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 to ModelRc (#794
  • Model::row_data now returns an Option<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 to InvokeCallbackError 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 new compat-x-y-z feature that is mandatory to have and which is enforced with a compile_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