Repository navigation
SUI 0.4.1
This release adds observable background tasks, makes reactive updates and text
rendering cheaper, improves platform font rendering, and adds touch scroll
inertia.
Highlights
- Added
Task,TaskState, andTaskHandlefor background work with progress,
results, errors, and stale-worker protection.refreshkeeps the previous
result visible while loading, cancellation restores it, andTaskHandle::run
completes the task from a future on the application's executor. - Added
batchto coalesce notifications,combineandcombine_namedto
derive values from two to four observables, andchanged().awaitto wait for
a signal, task, or other observable to change. - Added borrowed signal reads and in-place updates with
with,modify, and
mark_changed, plus pointer-compared and copy-on-writeArcupdates with
set_arcandmodify_arc. Selector clones share one source subscription
and a cached result, avoiding repeated work for multiple observers. - Skipped clipped glyphs before rasterization and split grayscale masks from
color and LCD glyphs. A grayscale atlas page now uses 4 MiB of GPU memory
instead of 16 MiB each on the CPU and GPU; only pending uploads keep CPU
pixels. Clipping also preserves tall marks and bitmap emoji at line edges. - Followed Windows ClearType and Linux fontconfig/Xft smoothing preferences,
improved Linux and Android slight hinting and coverage, and loaded Android
system fonts with bundled fallbacks. Runtime text-policy changes now update
retained text correctly. - Added coasting touch scrolling to
ScrollViewandVirtualScrollView.
Both exposeon_offset_changeandon_offset_change_with_ctxfor wheel,
keyboard, touch, fling, scroll bar, and programmatic moves. The widget book's
navigation follows flings and keeps the selected entry after a jump.
Other changes
- Fixed open contours rendering as fans on Adreno 740 under Chrome's Vulkan
WebGPU backend and made tooltip borders continuous around their tails. - Kept menu and context-menu keyboard shortcuts on one line so long
combinations stay aligned and vertically centered. - Added download progress while the web demo loads its Wasm module and fonts,
with startup errors displayed on the loading screen. - Made Chrome text comparisons match the requested grayscale or LCD mode,
added aggregate ink and alignment diagnostics, and added a light/dark,
scale, and antialiasing comparison matrix. - Fixed concurrent selector updates losing changes and reactive diagnostics
recording older versions when notifications arrive out of order. - Updated accessibility, Python, Node, Wasm, and Linux dependencies.
Compatibility and release notes
- Update the SUI crates together to
0.4.1.sinomo-ui-lucideremains at
1.47.1, with the same bundled Lucide 1.47.0 icons. - Selector closures now read signal values while the source is locked; they
must not write to that signal. Debug builds report same-signal reentrant
writes with a named panic instead of deadlocking. Observers still run
synchronously on the writing thread; batching defers them until the batch
ends on that thread. - Rust 1.90 remains the minimum supported version. Browser support remains
alpha, Android remains experimental, and Python and JavaScript bindings
remain source-built and are not part of the registry release.