Posted on November 10, 2020 by Olivier Goffart and Simon Hausmann
What is SixtyFPS?
A fresh, new graphical toolkit for desktop apps and embedded devices
We're building a product to make UI development faster and easier, no matter what programming language, platform, or form-factor. Our toolkit consists of the following key components:
- A design-friendly markup language for UI elements
- An optimizing compiler to compile designs to native C++/Rust
Express user interface constraints and relations
Designing a user interface starts with primitive graphical elements, such as shapes or images. The design you
envision requires placing these elements on a display surface, based on a coordinate system, to produce a visual
hierarchy. We use our
.60 markup language to define these elements, where and how they are placed,
how they exchange data. Let’s have a look at an example:
This snippet of code describes a rectangle and a text element that render a button. It looks like a blend of
CSS, which is intentional. We took the structural aspect of
added the nice aspects of
CSS, such as numbers with absolute or relative lengths, named colors, and
layouts. We also added an automatic property binding system.
There’s a lot more to unpack here. Our constantly-evolving markup language reference documentation is a good starting point for a deeper dive. You can also play with the example above in our experimental online editor.
As chipsets become faster and RAM becomes cheaper, the scale at which computing devices are produced for our appliances grows. In our experience, software that uses less CPU and memory will always have an edge. An optimized software stack means that save money on the per-unit hardware cost.
We are committed to providing that edge through:
.60markup compiler generates a carefully designed memory layout. All the components and properties are in one flat memory allocation that is compact and requires minimal
- Our lightweight property system evaluates binding expressions lazily.
- Our rendered uses GPU acceleration by default.
Check out our demos online to get a feeling for how smooth UIs can be, even when compiled to run in a web browser simulation.
Integrate into different languages
One particular aspect of software development that we enjoy is the diverse landscape. Different teams use different programming languages, with their unique constraints and talent pools. We embrace this diversity and believe that a good UI toolkit should support this by making every language feel as if it’s the native toolkit. It’s crucial to provide idiomatic APIs, so that teams can feel right at home. We do this by making sure that:
- Our C++ integration uses modern C++ 17 and comes with built-in CMake support.
- For Rust developers, we offer a convenient crate,
build.rsintegration, and even a proc-macro.
- Our NodeJS integration is available via
Check out our API documentation for the different languages.
We choose to first support this set of langages because it is the implementation language, another low level language, and a dynamic language. We believe that it will be easy to extend the integration into more programming languages later.
Our project is still in an alpha state. We would love to get your feedback; give it a try. You can provide feedback or join our discussions on our GitHub site.
In the next few months we're looking forward to completing an off-the-shelf version 1.0. SixtyFPS in its current shape is a highly customizable, compelling starting point for new UI product developments and prototypes.
We're be happy to engage in contracting work to explore custom UI development projects with SixtyFPS.
Get in touch with us via email.