This week in SixtyFPS

3rd of January 2022 to 9th of January 2022

Posted on January 10, 2022

SixtyFPS is a toolkit to efficiently develop fluid graphical user interfaces for any display: embedded devices and desktop applications. We support multiple programming languages, such as Rust, C++, and JavaScript. Find more information at https://sixtyfps.io/ or go straight to github at https://github.com/sixtyfpsui/sixtyfps

Outlook

In the coming weeks we are planning to release version 0.1.6 version of SixtyFPS.

Afterwards we would like to announce a new name for SixtyFPS! We will release version 0.2 using the new name -- and with a few source incompatible changes on top.

SixtyFPS UI Library

New Features

  • Add key_code for BackTab (d13067)
  • Allow to animate angles (7d1266)
  • callback/handler test: capture mutable var in Rust (ba4754)
  • allow FnMut as argument for on_callback (ab7403)

    Thanks to @Be-ing for the PR!

  • Complete the C++ Timer API (f557a2, 083ae5)

    With this patch it matches the Rust API, with start(), restart(), running() and a default constructor.

Microcontroller Support (MCU)

  • Make the mcu backend compile for the pico with the st7789 driven screen (93a0c5)

    This bundles all the board specific code in the mcu crate. There's much to do though, so this is just a rough start and when it's all done we should probably squash this.

    Since the mcu crate dependencies require nightly and our CI builds with stable, this removes the mcu backend from the default build and the ci.

  • Make it possible to depend on a no-std corelib (dc90c5)

    The default backend was the last crate that's in the MCU build that would still depend default features, so remove that.

  • MCU: handle the scale factor (d7911f)

    Handle the scale factor in the micro controller implementation just as we do on the desktop.

Changes to the .60 language

  • Implement Math.log and Math.pow (c5c139)

    Thanks to @jrmoulton for the implementation.

Fixes

  • Fix wrong count of sub components in the item tree (c69c58)

    Fixes #781

  • Fix fluent Slider when the minimum value is set (34cc89)

    Fixes #787

  • Fix panic in LSP preview when there is a diagnostic not attached to a source file (83ee83)

    Can happen for example when there are binding loop that involved properties that don't have associated source file

  • Don't panic in the compiler when encountering a Path element with for-in (89df78)

    Instead, produce a diagnostic message.

    cc #754

  • Fix parallel test execution on Linux (ee3d51)

    Apparently the Qt backend does not like being used in tests that are run in multiple threads, so force the fluent style instead.

Documentation

  • Remove some duplication in the documentation of API that's shared between Rust and C++ (174fd2)

    This change makes the start of sharing the docs for the TimerMode enum between Rust and C++. The reference to Timer::start in there works as both doxygen and rustdoc find the right reference, but this needs careful editing in the future and double-checking!

    Another "caveat" is that the docs for the TimerMode enum say that the enum is defined in the file "sixtyfps_generated_public.h", which is correct as-is but not as pretty as "sixtyfps.h". I tried various ways with \file and \includedoc, but couldn't get it working differently.

    To implement this, the cppdocs steps now also runs cbindgen and cbindgen generates a new sixtyfps_generated_public.h file that contains types we do want to have in the public sixtyfps namespace.

  • Add a paragraph about when property are re-evaluated (5891d0)

    As discussed in #769

Janitor work

Small cleanups all over the code base and clippy fixes, too. Changes: 4c331f, 43e4b2, 500dab, 2d2c56, ac8f7b, 2b2224, 11d468, 3e448f, e99c1a, 06346a, 23badd, 767704, c89fa4, f7bba2, 2401ee, c55081, 1b1fae, 8d799f, 4e2276, d54e2a, 423cc4, 75e97a, e3eebf, 11b673

Statistics

68 patches were committed by 5 authors.