This week in SixtyFPS

29th of November 2021 to 5th of December 2021

Posted on December 6, 2021

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

Development Summary

MCU Support

We continued the work started last week on bringing SixtyFPS to micro controller units (MCU). These units do not offer support for the rust standard library, so we made SixtyFPS itself and its generated code run in a #![no_std] setup: 691d43, 6b60e8, 6004c4, bf84bb, 855ef6, 5a5e87, 9a7387, 414956, e8271b, dc2f4c, a5ea6d, 0e174b.

We have been testing using a Raspberry Pi Pico, a $4 ARM Cortex M0 micro controller with 264KiB of RAM and 2MiB of flash storage. Our unit has an extra 15$ LCD screen attached.

In addition to the limited memory and CPU speed, this hardware does not support atomic CAS (Compare and Swap). This required additional patches to dependencies such as once_cell#165.

Here's a photo of a very early version of the printer demo running on the Pico: Picture of the early printer demo running on the Raspberry pi Pico

As you can see, there is still a lot to do: The demo needs to be resized to fit in the small screen, and we do not even render text yet! Performance also needs to be improved: We can not guess at the frame rate we can reach on the device yet.

Follow @sixtyfpsui on Twitter to follow the MCU work more closely.

SixtyFPS UI Library

New Features

  • Cut text using Ctrl+x ( #691)

    Thanks to RustemB for the work!

Fixes

  • Native style: respond to the StyleChange event ( e4bd6b)

    So that color scheme is updated when switching to the dark style, for example

    Fixes #687

  • Compiler: keep const-ness information of native property in the NativeClass ( bc8d55)
  • Mark properties that we know are never modified as constant, ( cd47ef)

    so that we don't need to register dependencies when accessing them

  • Mark properties being set by the ListView and Flickable as set externally ( 524a9b)

    As we will do more optimization on constant properties, it is important to detect the ones that aren't

  • Fix components being inadvertently shown when using Qt ( 8f4b25)

    Remove a spurious show() call, only an explicit show() should bring up the widget on the screen.

Janitor work

  • Use SharedVector internally in SharedString ( ffe561)

    Get rid of the triomphe dependency

Statistics

35 patches were committed by 3 authors.