frus 0.4.0
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.
