v0.26.0
Everything must ripen before it is ready.
— Rainer Maria Rilke
This release expands devela's foundational surface with new runtime, time,
parsing, storage, and drawing abstractions, while refining geometry, text,
and system interfaces toward clearer typed contracts and deeper coherence.
Key changes:
- runtime foundations: new runtime, cycle, pacing, and presentation abstractions.
- typed time overhaul: reworked time sources around clearer point and elapsed models.
- geometry refinement: clearer metric organization and a more expressive region model.
- text parsing groundwork: new scanner, range, and reusable parsing error infrastructure.
- storage and drawing expansion: new storage roots and canvas-oriented drawing traits.
- system cleanup: improved X11 handling, refined FFI gating, and Linux clock fixes.
- data layout improvements: expanded buffer utilities for alloc and non-alloc use.
- msrv bump: minimum supported rust version increased to 1.94.1.
Project
infra
cargo
- bump MSRV to 1.94.1.
CI
- bump
actions/checkoutto v6. - bump
upload-artifactto v7. - bump
docker/setup-qemu-actionto v4.
workspace
examples
- fix examples:
web_api,web_worker.
tools
- update
tools/check.rs:- bump
develato 0.25.0.
- bump
- update
xcommand wrapper to apply cfg flags in rustdoc.
dependencies
- bump dependencies:
portable-atomic-utilto 0.2.6.wideto 1.2.
features & flags
- make
x11feature auto-enable:allocandevent.
Modules
code::ops
- re-export
punroll!from devela.
data::access::iter
- add
is_emptymethods toiter_strided!items.
data::layout
- update
buffer_linear!:- derive
Defaultfor impls:option,uninit. - new methods:
push_slice,remaining_capacity,remaining_capacity_prim. - new methods for non-alloc backends:
push_slice_copy,push_slice_copy_exact. - update
vecbackend methods:- update
is_fullsemantics. - fix
lenimplementation.
- update
- derive
data::store
- new module.
- move
data::id::keytodata::store::key.
geom
- remove all
*_refand*_mutaccessor methods fordirandmetrictypes.
geom::dir
- new aliases:
Orientation[1|2|3].
geom::metric
- make the module public.
- fix re-export of
RegionStrided. - new aliases:
Distance[1|2|3],Extent[1|2|3],Position[1|2|3],Region[S][1|2|3]. - update
Extent:- move the accesor methods from being macro implemented to generic for
T: Copy. - add the doc-alias
Size.
- move the accesor methods from being macro implemented to generic for
- update
Region:- change the single
Tgeneric into twoPandEgenerics. - remove methods:
extent,position. - rename
sizefield toext. - add tuple constructors.
- change the single
lang::disc
- new submodules:
move,narr.
media::visual::draw
- new traits:
Canvas,CanvasRead,CanvasTextel.
num::dom::int
- update
Int:- use rust's implementations in
midpointmethods. - rename old signed
midpointmethod tomidpoint_floor.
- use rust's implementations in
num::dom::real::float
- fix
Float::ln_seriesalgorithm.
phys::time::source
- new trait:
TimePoint. - update TimeSurce and TimeSourceCfg:
- make them generic over
TimePoint. - replace required
time_now_millis*trait surface with:time_now,time_point_value,time_elapsed_value. - add shared default helpers for point/elapsed conversion and elapsed-since queries.
- make them generic over
- rework source impls to typed point forms:
SystemTime:SystemTime,u64,u32.SystemInstant:SystemInstant,u64,u32.JsInstant:u64,u32.LinuxInstant:u64,u32.LinuxTime:TimeSourceCfg<u64>.TimeFakeRef:TimeSourceCfg<u64>.
run
- new traits:
RunApp,RunBackend,RunRender,RunPresent.
run::cycle
- new items:
RunControl,RunCycle,RunPhase.
run::time
- move
RuntimeTickto [base]. - new items:
RunPacer,RunStep,Runtime.
sys::device::display::x11
- change
unsafe_syscallfeature-gate tounsafe_ffi. - update
XWindow:- new methods:
destroy,extent,position,clear_redraw,needs_redraw. - remove method
size. - method
newnow requires an exclusive reference toXDisplay. - move the inner state to a new
XDisplay's window registry.
- new methods:
- update
XDisplay:- only emit window move and resize events when they're actually different.
- emit events with the right window target.
- add a managed window registry.
- new raw fns:
xcb_free_gc,xcb_destroy_window.
sys::os::c
- change
unsafe_syscallfeature-gate tounsafe_ffi.
sys::os::linux
- update
LinuxClock::is_monotonicto includeProcessCpuTimeIdandThreadCpuTimeId.
text
- new type
TextRange. - new private module
text::unit. - move
TextCursor,TextIndexandTextUnitout oftext::layout.
text::layout
- rename
TextSpantoTextLayoutSpan.- refactor to include
TextRange. - new methods:
from_prim,with_range,start,end.
- refactor to include
text::parse
- new items:
TextParseError,TextParseErrorKind,TextScanner.
ui::event
- update
EventWindowvariants:Resizednow containsExtent.Movednow containsPosition.
- update
Event:- new methods:
from_window,from_device.
- new methods:
- update
EventTarget:- new methods:
some_window,some_device.
- new methods:
- impl
From<u32>forWindowIdandDeviceId.
vita::play::game
- new submodule.
- new structs:
GameAction,GameCycle,GameLegacy,GameOutcome,GamePhase,GameRole,GameSession,GameTurn.
Full Changelog: v0.25.0...v0.26.0