This week in SixtyFPS

30th of August to 5th of September 2021

Posted on September 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 or go straight to github at


  • New Features
    • Allow selecting features in the CMake integration ( 5a8197 )

      Provide the same features as in the Rust API crate, as CMake options.

      This involved also contributing cargo feature flag selection in the upstream Corrosion project (#108).
    • Basic support for Multi-line TextInput ( b2392c )
    • C++: Make it possible for threads to fetch values from the ui ( 092d5d )

      sixtyfps::blocking_invoke_from_event_loop() allows invoking a functor in the ui event loop and return a value safely, while the calling thread blocks and waits. This is useful for reading properties or invoking callbacks.

  • Changes to the .60 language
    • Add support for aliasing global singleton ( 0d19e2 )

      When exporting an global multiple times under different names, make sure that they alias in the generated code.

      As a consequence, the compiler maintains the original unique name and in Rust and C++ makes only the exported names public. In the interpreter the internal name is theoretically still accessible from the outside.

    • Print an warning in stderr when modifying read-only model ( e1be59 )

      ... and improve the documentation of Model

    • Produce errors when exporting the same name multiple times ( ab522e )
  • Fixes
    • LineEdit is now able to scroll to keep the cursor visible ( 4f1eac )
    • Only emit click when clicking and releasing the mouse within the TouchArea ( ed2449 )

      Closes #455

    • Fix key events the control modifier on Windows, X11 and Wayland ( 6db89e )

      Under these windowing systems, we receive a QString text from Qt that contains a terminal control character (like \u{3} for ctrl+c). We decided to supply the character for the key (for example 'c' for Ctrl+C) to the application, so activate the conversion from the key code when control characters are present.

      With winit, we receive first a key down input event with the virtual key code (for example C for Ctrl+C), followed by a ReceivedCharacter event with a terminal control character. We choose to ignore that and instead take the previously received key code and try to use that instead.

      Fixes #441

    • Refactor the way the builtin files are loaded ( a28bc7 )

      So that we can share some code across styles

    • Fix panic on mouse wheel on a NativeSlider ( b04581 )

      move the handle instead of panicking

  • Janitor work
    • Update resvg version ( b075b4 )
    • Update rowan version ( f69ad5 )
    • Split in several modules ( 50ca8a )

      It was the bigger rust file in the repository


40 patches were committed by 3 authors.