Skip to main content

frus 0.4.0

· 2 min read
The frus team
frus contributors

Tooling, start-up and pictures. The frus command grows from creating a project into the whole loop, true hot reload on every platform included. Applications start faster and survive a lost GPU, and pictures are decoded at the size they are shown.

The frus command​

frus devices, frus run (with r to reload keeping the state, R to restart, and keys for the widget tree, the performance graphs and screenshots), frus build, frus test, frus analyze, frus doctor, frus emulators, frus daemon for editors, and a VS Code extension. Each command installs what it needs and the machine lacks.

Hot reload​

frus run --hot patches each saved change into the running application and keeps its state, on Windows, Linux, macOS, Android and the web.

Start-up and the GPU​

The first frame's time is logged. Windows starts in 0.6–0.8 s with DXC, down from 1.3–2.0 s. Pipelines are kept between launches where the GPU allows, which takes the test phone to 0.33 s from the second start. A lost GPU device is replaced and the application goes on, and devices without Vulkan draw through OpenGL ES.

Pictures​

Pictures are decoded at the size they are shown: a photograph's thumbnail holds 0.3 MB, not 46 MB. Large ones are decoded off the interface's thread, and memory is given back when the system runs short. SVG pictures draw as vector paths, through the new frus-svg crate.

What breaks​

An Image::memory or Image::network resolves its pixels when it is first laid out, not when it is built. PathGradient is no longer Copy. The changelog has every entry.