This week in SixtyFPS

15th of November 2021 to 21st of November 2021

Posted on November 22, 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

SixtyFPS UI Library

Our infrastructure on GitHub was a big piece of work this week. We re-organized our GitHub actions. We now separate the "CI" step, run for every commit, with a snapshot step that creates artifact and packages.

We worked on binary C++ packages that do not require the programmers using SixtyFPS to have Rust installed.

This week we also started our work on adding support for micro controllers. This requires shrinking down the overall resource usage, which will benefit all platforms in the long run. The first commit towards MCU support was abb423.

Finally the CMake support on the C++ side saw a lot of polish this week, e.g. in commit 8a3b06.

New Features

  • preprocess the images at compile time ( d1cae7 )

    For the MCU port, we need to process the image to save them in the binary in a convenient format. This patch start this work by trying to analyze what format should an image be using, and saving it as a texture in the binary.

    The current graphical backend and the C++ frontend are not yet supported

  • Compiler: Add a --style option ( c3baef )

    So we will be able to set the style from the command line args in addition to the env variable

Fixes

  • Fix C++ examples not launching out of the box on Windows when using multi-config generator ( 7f61d9 )

    We copy the sixtyfps_cpp.dll into the bin directory where the examples are, but that needs to be a Debug/ or Release/ sub-directory in case of a multi-config generator.

  • Fix native widgets with C++ on windows ( 1bde79 )

    The function that expose the vtable was not exported because the declare_item_vtable expanded to a #[cfg(feature = "ffi")] with the intention to be the ffi feature of the corelib crate. But when this macro is used from the qt backend, the ffi feature was not set

  • Set MSVC to use UTF-8 character sets on c++ source files, so it won't throw error on u"string" when running in other codepage, for example cp936. Ref: https://docs.microsoft.com/en-us/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8 ( 54ae34 )

    Thanks to @UnderCooled for the patch!

  • Polish the Native Spinbox: There is a line edit that need to be drawn inside ( 40a6f3 )

Janitor work

  • Start fuzzing the parser of the .60 language
  • Some small problems were uncovered by cargo fuzz and were promptly fixed.

    Changes: a488a7, 46f291, bd1d82, 36c7aa

  • Bump version of strum ( 6bf224 )

Applications

cargo-ui

  • On release builds on Windows, don't show the console for debug output ( b8619e )

    Use the windows subsystem instead, we don't strictly need a console.

Statistics

50 patches were committed by 4 authors.