v0.25.0
A place for everything, and everything in its place.
This release changes the library's structure from a single crate to multiple crates,
in order to try to improve compile times while maintaining most of the cohesiveness.
Many feature gates have been removed in order to make the features always available.
Key changes:
- core extraction: separate foundational types, traits, and macros into base crates.
- feature consolidation: removed feature gates, make functionality always available.
- text system overhaul: major improvements to scalar, string, and grapheme handling.
- const evolution: many methods made const across numeric, text, and system modules.
- build system enhancements: improved build configuration and post-build processing
- memory & system improvements: enhanced slice operations and system arches support.
- error system refinement: updated error macros and type organization.
- msrv bump: minimum supported rust version increased to 1.93.0.
Project
infra
build
- define
CRATE_NAMEconstant. - move
/meta/buildto/build/main. - move build fn utils as
Buildmethods. - new
Buildnamespace indevela_base_std. - make
devela_base_stdoptional for builds. - add rerun instructions for changed env vars.
- new internal env vars
__DEVELA_MEMBER,__DEVELA_MEMBER_NAME. - make sure
CARGO_TARGET_DIRandCARGO_WORKSPACE_DIRare always defined. - add new
devela_postbuildcrate tobuild/post. - add build config flag aliases:
any_target_arch_linux,any_target_arch_riscv. - add [base] symlinks to
devela/main/[alias|environment|features].rs. - move
/config/dep_all.rsto/build/main/dep_all.
cargo
- bump MSRV to 1.93.0.
- add new cargo env var
CARGO_WORKSPACE_DIR. - fix updated syntax for unstable cargo-include in
.cargo/config.toml.
config
- remove
./cargo/nightly.toml. - add cargo aliases:
L0r,w*(workspace).
manifest
- add workspace hierarchy diagram.
- add binaries and metrics sections.
- add lints:
missing_debug_implementations,unused_features. - make keys parts of the workspace: edition, version, authors, license, documentation.
- simplify debugging info in
devprofile. - add
debuggingprofile.
tools
- new
xworkspace command wrapper. - new files in
tools:x.fish,x.sh,x-env-common.sh,x-env-native.sh,x-env-nightly.sh. - remove
tools/cargo-native. - update
tools/check.rs:- bump
develato 0.24.0. - test all workspace crates.
- start testing without dependencies.
- switch rust-script for cargo-script.
- simplify and homogenize toolchain selection syntax.
- configure the exact nightly version to install and use.
- bump
CI
- bump
actions/checkoutto v5. - add more
no_stdtargets, retry downloads and disable fail-fast.
workspace
- new
/crates/directory. - add
devela_sentinelcrate. - remove the
gameroot module. - declare the
stdexternal crate. - add
_reexportsstructural modules. - remove
_alwaysstructural modules. - add new root modules:
org,vita. - refactor all structural access modules.
- enable
_docsrsfor workspace dependencies. - support having external optional dependencies.
- new workspace library crates:
devela_base_alloc,devela_base_core,devela_base_macros,devela_base_std. - prepare future workspace library crates related to root modules.
- use a single version, changelog and readme for all workspace libs.
- move
devela_macroschangelog intodevelaarchived changelog history. - replace
pastedependency withpasteyand move to [base].
- move
- add flat re-exports of root modules to
zall_& re-export hidden asall_. - rename
alltozall& re-export hidden asall. - rename all
lib.rstoindex.rs. - rename
_infoto_doc.- move
config/rustdoc-header.htmltosrc/_doc/header.html. - update
src/_doc/header.htmlto support multiple crates with custom whitelists.
- move
[base]
- add
_workspace_internalstructural module (replacing_internal).
devela_base_macros
- move devela_macros macros:
devela_macros:cif!,compile!,compile_attr!,ident_total!,ident_total_unique!,ident_unique!,coalesce!,field_of!. - new macro:
repeat!. - new compiler predicates:
env,env_eq,env_ne,env_empty,env_nonempty,nota.
devela_macros
- use workspace's crate version.
- make it an optional dependency.
- add
devela_base_coreas a dependency. - enable
doc_cfgvianightly_docflag. - remove dependency
hashbrown. - remove features:
alloc,std,nightly,nightly_doc.
dependencies
- make all optional external optional dependencies part of the workspace.
- move
core,alloc&stdre-exports tosrc/yard/_dep. - remove
_coreand_depre-exports from public docs. - move
_deptoyard/_dep& re-export from the root. - re-export hidden workspace dependencies from
_dep. - re-export
allocfrom devela and [base_alloc]. - bump dependencies:
hashbrownto 0.16.memchrto 2.8.rand_coreto 0.10.- [macros]:
proc-macro2to 1.0.101.quoteto 1.0.45.
- remove dependencies:
const-str, and relatedstr!macro.crosstermandminiquad; move to revela.libmand relatedFloatandExtFloatfunctionality.- itertools and related re-exports.
- remove:
allocator-api2,bumpalo,fontdue,ffmpeg-the-third,flume,fontdue,gilrs,image,kira,midir,rayon,regex-lite,rodio,sdl2,sdl3,stringzilla,symphonia,sysinfo,toml_edit,tokio,unicode-segmentation,unicode-width,ureq,winnow.
- add optional dependencies to [base]:
memchr,rand_core,simdutf8.
features & flags
- new features:
__publish,__std,__docs_internal,_docs_examples,_docs_max,event,grapheme,int,org,safe_build,safe_org,safe_vita,translit,vita,x11. - remove features:
_bit*,_char*,_cmp*,_float_*,_int_*,_num?_all,_sort*,_str_*,_str_nonul,_str_u*,_text_all,ascii,cast,desk,error,fmt,join,metric,nightly_bigint,prim,safe_layout,split,str. - remove flags:
bit··,char··,cmp··,_float··,_int*··,_nums··,prim··,sort··,str··,str_u··. - add an additional
nightly_stable_1_??flag for the 3rd next version. - rename:
_docsto _docs_min._docsrsto_docs._docsrs_nodepto_docs_nodep.__no_testto__exclude_test.lineartolinand move fromgeomtonum.
- add default feature
allocto [base_alloc]. - add default feature
stdto [base_std].
metrics
- rename directory
/benchesto/metrics.
Modules
code
- rename
ExtAnytoAnyExt. - new trait:
ConstInitCore. - new types:
CodeLocation,CodeSpan.- implement for
NonZero*and many other types.
- implement for
- move to [base]:
- all
ConstInit*impls. impl_cdef!workspace-internal macro.- modify it to receive the trait as an argument.
- all
- move
ScopeGuardto [base_core].
code::error
- update
define_error!macro.- move to
code::error. - update docs, add example.
- allow accepting multiple tags.
- do not automatically derive
Default. - make conversion method optional const.
- move to
- remove items:
AllError,AllResult,DataError,DataResult,ExtError. - update
ArrayFmtto support the rest of the core formatting traits.
code::marker
- make
TypeResourceandtype_marker!constructors const. - new traits:
Prim,PrimFitPtr,PrimIndex.
code::ops
- new macro:
punroll!. - new types:
CallSemantics,CallBindTime,CallContext,CallDispatch,CallOpenness,CallStorage.
code::panic
- move to [base]:
Panic.
code::result
- move to [base]:
- functions:
serr,sok. - macros:
unwrap!. - traits:
Morph,Hook,OptionExt,OptResExt,ResultExt. - types:
Mismatch,OptRes,OptionFmt,OptionFmtOr,OptionFmtOrElse,Own.
- functions:
- new macros:
hook!,morph!. - rename:
ChaintoMorph.ExtOptiontoOptionExt.ExtOptRestoOptResExt.ExtResulttoResultExt.
- update
unwrap!:- add arms:
err?,err_map*,ok_err_map,ok_if*,ok_map*,ok_some_map,some_if*,some_map*,some_ok_map*. - receive expect
$msgargs asexprinstead ofliteral, to be compatible withconcat!. - make const the arms that call
unreachable. - rename arms:
ok_map_err? took_err_map?.ok_if_map_err? took_if_err_map?.
- add arms:
code::utils
- new macros:
compile_warn!,doc_location!,doclink!,fn_name!,lets!,mod_path!,repeat!,type_count!,whilst!,write_at!. - move to [base]:
- public macros:
CONST!,assert_eq_all!,assert_approx_eq_all!,capture_first!,capture_last!,capture_tail_tuple!,cfg_if!,const_assert!,define_error!,deprecate!,enumset!,ident_const_index!,impl_trait!,include_from!,is!,items!,maybe!,methods_as_fns!,mod_from!,sf!, ,structural_mods!,type_marker!. - internal macros:
__crate_name!,__dbg!,__std!,_EMOJI_*,_TAG_*,_doc!,_doc_availability!,_doc_miri_warn!,_reexport!,_tags!,_use!.
- public macros:
- add tags:
_DOC_*,_TAG_[ALG|APPLE|ASSERT|AUDIO|BIT|CODE|CODEC|CODEGEN_BUILD|CONSTRUCTION|COLOR|CONCURRENCY|DATA|DEBUG|EVENT|EXAMPLE|EXEC|FS|GEOM_DIR|GUARD|HASH|ID|IMAGE|INIT|INTERACTION|INTERNAL|INTROSPECT|IO|LAYOUT|LIFETIME|LIN|LINUX|LIST|LOGIC|MAYBE|MEM|PLATFORM|PROC_MACRO|RUNTIME|SYMB|TERM|UNIX|VALUE|WAVE|WINDOWS|WIP]. - change the emoji for
_TAG_DATA_STRUCTURE. - new re-exports:
select_unpredictable. - new functions:
cold_path,likely,unlikely. - rename
reexport!internal macro to_reexport!.- mark as
doc(no_inline). - allow accepting multiple tags.
- fix rendering of std path links.
- mark as
- prefix internal constants
TAG_*&EMOJI_*with_. - define
_std_coreseparately and privately per crate. - update
CONST!macro with new arms:hidden macro_export,inline macro_export. - update
impl_traits!macro:- add new arms for:
Display+Error,FromStr,PartialEq. - change syntax from a single group to a double [decl][args] group, to support const generics.
- add new arms for:
- update
const_assert!macro:- add new arms:
ne_buf,ne_str. - add support for comparing slices of primitives and slices of slices of primitives.
- add new arms:
- update
is!macro.- change expr separators from
;to,, to reduce potential ambiguity. - remove temporary value binding functionality unnecessary after rust v1.89.
- change expr separators from
- remove vendored macro
cfor!, replace withwhilst!. - remove deprecated
iif!macro.
data
- move to [base]:
- macros:
bitfield!,init_array!. - traits:
BitOps. - types:
ArrayFrom,Bitwise,Oneof,Sort.
- macros:
- remove module
data::list. - new macro:
define_handle!. - new type:
HandleExample. - new
SortAllocwrapper forSort. - make
Sortmethods take&mut selfinstead ofself. - make
Sortpublicquick_*methods take&mut selfas well.
data::access
- new module
data::access. - move here
address&iter.
data::access::iter
- new traits:
IteratorLending,IteratorLendingDoubleEnded,IteratorLendingExactSize,IteratorLendingPeek,IteratorLendingPeekDoubleEnded. - new macro:
iter_strided!. - new types:
StridedIter,StridedIterMut.
data::codec
- move here:
bit/. - rename
serde/todeser/.
data::codec::bit
- move
BitOps&Bitwisetonum::bit. - make all
bitfield!methods consts. - make the module private.
data::codec::hash
- move to [base]:
HasherFx,HasherBuildFx. - new module
data::codec::hash::check. - new type
Adler32.
data::codec::radix
- move
Baseto [base]. - remove methods that allocate.
data::error
- recreate the type
MismatchedCapacity. - remove type:
DataOverflow. - update
MismatchedBounds.
data::id
- new module
data::id. - move here
key/anduid/.
data::id::key
- update
define_static_map!:- support custom attributes and visibility.
- add example items:
StaticMapConstU8Example,StaticMapTypeIdExample,StaticMapU16Example. - improve docs.
data::id::uid
- move
IdPinto [base]. - new type
IdRegistry.
data::layout
- new module
data::layout. - move here:
DataCollection,dst/,pool/,sort/,table/. - move here:
list/submodules:array/,buf/→buffer/,queue/,stack/.
data::layout::array
- move to [base]:
- traits:
ArrayExt. - types:
ArrayFmt,ConstList.
- traits:
- rename:
ExtArraytoArrayExt.ExtVectoVecExt.
- update
init_array!:- rename
array_init!toinit_array!. - require
ConstInitandVecin scope if needed. - rename
const_initarm related to traits toINIT in. - rename
const_init*arms unrelated to traits toconst_fn*.
- rename
data::layout::buffer
- new macros:
buffer_linear!. - new example types:
BufferExample,BuffeAllocExample,BufferViewExample.
data::topol
- new module
data::topol. - move here:
listlink/→linked/.
data::value
- move here:
NoData,of/,tuple/. - update
Oneof:- new methods:
copy_*. - remove methods:
variant_name,is_variant_name,first_non_unit. - make methods const:
as_mut_*,as_ref_*,as_tuple_ref_options.
- new methods:
geom
- make
num::geoma newgeomroot module. - new modules:
affine/,rel/,space/. - rename
shapetofig, as well as the related feature.
geom::dir
- new module.
- move here
Orientation,Angle,AngleDirection&AngleKind. - new types:
Boundary1d,Boundary2d,Boundary3d.
geom::metric
- move to [base]:
- internal macro
_impl_metric!. - types:
Distance,Extent,Orientation,Position,Region,RegionStrided,Stride.
- internal macro
- remove
metricfeature gate forOrientation,Region&Stride. - update
_impl_metric!helper macro.- implement 2d|3d common methods.
- implement
ConstInit*.
- update
Extent:- add methods for 2|3d:
length[_ref|_mut],width[_ref|_mut],height[_ref|_mut],depth[_ref|_mut],breadth[_ref|_mut].
- add methods for 2|3d:
- remove
c_prefix from int methods.
lang
- rename
lang::lingtolang::hum. - rename
lang::ling::grammartolang::hum::gram. - move
lang::i18ntolang::hum::i18n. - new modules:
disc,gram,prog,repr,sem. - move
ffitoprog::ffi.
lang::prog
- new module:
dsl.
lang::prog::ffi
lang::prg::ffi::c
- new type aliases:
c_mode_t,c_off_t.
lang::prg::ffi::js
- update
JsInstant:- make method const:
delta_since. - remove methods:
const_delta_since.
- make method const:
media
- new modules:
compo,doc,visual.
media::audio
- new types:
AudioChannel,AudioChannels.
media::font
- new type:
FontArt. - new const:
FONT_ART_3_4. - rename:
BitmapFonttoFontBitmap.FONT_3_3toFONT_BIT_3_3.FONT_3_5toFONT_BIT_3_5.FONT_5_6toFONT_BIT_5_6.
media::visual
media::visual::color
- move to [base]:
- types:
Gamma,Lum,Rgb,Rgba. - aliases:
Lightness,LinearLightness,Luma,Luminance,Rgb8,Rgba8,RgbaPre8,Rgb16,Rgba16,RgbaPre16,RgbF32,RgbaF32,RgbaPreF32,RgbF64,RgbaF64,RgbaPreF64,RgbLinF32,RgbaLinF32,RgbaLinPreF32,RgbLinF64,RgbaLinF64,RgbaLinPreF64.
- types:
- new type
GammaConst.
media::visual::image
- add a new sixel implementation:
- new types:
SixelChar,SixelColor,SixelEncoder,SixelPalette,SixelPaletteIter.
- new types:
- remove legacy vendored sixel implementation.
num
- move to [base]:
- all data, numeric, text & time error types.
- types:
Cast,Int,True. - traits:
NumConst.
- make
Num*traits depend on thenumfeature. - move
num::unittophys::unit. - make
num::errorpublic.
num::dom
- new module
num::dom. - move here
num::float,num::frac,num::int,num::traits.
num::dom::real
num::dom::real::float
- rename:
ExtFloattoFloatExt. - new types:
f32bits,f32bits_niche,f64bits,f64bits_niche. - update
Float:- new methods:
poly_eval_const,sin_minimax,cos_minimax,sin_cos_minimax. - remove deprecated methods:
const_signum,const_copysign,const_clamp,const_max,const_min. - make std methods const:
fract,normalize,set_normalized,split,trunc. - split out std-enabled implementation as internal
FloatStd.
- new methods:
- Change
ExtFloatto use*_minimaxmethods by default. - move to [base]:
- aliases:
fsize. - traits:
FloatConst. - types:
Float. - float shared docs prefixed with
_FLOAT_.
- aliases:
num::dom::int
- move to [base]:
Int,[iu]size_*. - prefix int shared docs with
_INT_. - new macros:
define_divisor!. - new types:
DivisorExample,IntAlloc,IntError,IntResult. - remove type:
Divisor. - make all
Intmethods const.
num::fin
- new module
num::fin. - move here
num::bit,num::logicandnum::ord.
num::fin::bit
- new module
num::bit. - update
BitOps&Bitwise.- rearrange methods in thematic impl blocks.
- new methods:
[is_][un]set[_checked][_range],[un]set_all,flip[_checked],flip[_checked]_range_if,[is_][un]set_mask.
- separate documentations for
BitOpsandBitwiseas individual constants.
num::fin::logic
- move to [base]:
ConstBool,False,True,const_bool!,[iu]size_*.
num::fin::ord
- rename
ComparetoCmp. - new macro
cmp!. - update
Cmp:- move to [base].
- new impl for
Ordering. - new methods:
minmax,pminmax,total_cmp. - un-gate impls and many dependent const methods.
num::grain
- new module
num::grain. - new macro
cast!. - new traits
PrimScalar,PrimInt,PrimSint,PrimUint,PrimFloat. - move inside:
num::cast,num::niche,num::wide. - fix
Castwrapping methods performance, and correctness for negative integers.
num::grain::niche
- new macros:
niche_prim!,nv!. - new types:
MaybeNiche,NonNiche,NicheValueError. - move to [base]:
NonExtreme*,NonValue*,ne!,nz!. - update macros:
ne,nv,nz, adding lossy constructors.
num::grain::wide
- new module
num::grain::wide. - new macro:
define_lane!. - new internal helper macros.
- new example type
Lane4_i32Example. - support
nightly_simd&dep_widein [base_core]. - re-export some of
core::simdtypes and traits.
num::lin
- new module:
num::lin. - move here
geom::linear::{matrix, vector}.
num::prob
- new module
num::prob. - move here
num::rand.
num::prob::rand
- move
num::prob::randto [base]. - rename
Lgc16toLcg16. - rename
xorshift_custom!todefine_xorshift!. - new macro:
define_pcg!. - new traits:
Rand,RandAlloc,RandStd. - new type:
Pcg32.
num::quant
- move to [base]:
Cycle,CycleCount,Interval,Sign. - update
Interval:- use individual
IncompatibleBoundserror. - add methods:
bound,bound_mut,bound_as_ref.
- use individual
- update
Sign:- make part of
quant. - rename variant
NonetoZero. - add methods:
eq,is_negative,is_positive,is_zero,is_nonzero,invert,same_direction,combine,pow,abs,neg_abs,fold,fold_slice.
- make part of
- move
ValueQuantfromcode::resulttonum::quant.
num::symb
- new module
num::symb.
org
- new
orgmodule.
phys
- new modules:
phys::astro
phys::time
- new public module:
phys::time::source. - new types:
TimeFake,TimeFakeRef. - remove
TimeErroralias. - remove
timefeature gate forNoTime,Timecode,TimeDelta,TimeSplit. - rename
TimeGranularitytoTimeScale.- add
Ratiovariant. - add new variant aliases:
Mins,Secs. - add new methods:
convert[_simulated],is_fixed,new_ratio,some_ratio,to_ratio[_simulated].
- add
- update
TimeSource:- rename
granularitymethod totime_sourceand returnTimeSource. - change
MONOTONICfrom a const generic to thetime_is_monotonicmethod. - new method:
time_is_absolute. - rename methods:
now_*totime_now*. - remove methods:
epoch_*. - fix impl for
SystemInstant.
- rename
- update
TimeDelta:- make method const:
from_js,[div|mul]_f[32|64],[try_]from_[millis|secs]_f[32|64]. - remove methods:
const_from_js, const_try_from_millis_f64.
- make method const:
- update
TimeSplitMilliNanoNorm:- add method
from_duration. - rename
from_durationmethod tofrom_duration_subsec.
- add method
- update
WeekDay: make all methods const. - rename
UnixTimeI64toTimeUnixI64,UnixTimeU32toTimeUnixU32.- make their
newmethod const.
- make their
run
- new
runroot module.
run::regime
- renme
UiServicetoRunServiceand move here. - move capabilities from
ui::back::captorun::setup::cap.- rename
UiCap*toRunCap*.
- rename
run::time
- new items:
RunTick.
sys
sys::arch
- new
Archmethods:cntvct,cycles,rdcycle,rdtsc,rdtscp. - new internal macro
ARCH!.
sys::device
- new module:
sys::device. - move
media::miditosys::device::midi. - move
sys::soundtosys::device::audio.
sys::device::display
- new module:
sys::device::display::x11. - new types:
XDisplay,XError,XEvent,XWindow.
sys::env
- vendor
argvasIterArgSOsRefstruct andEnvmethodargs_os_ref.
sys::fs
- rename
ExtPathtoPathExt.
sys::hw
- new module
sys::hw.
sys::io
- new
IoDuplextrait. - refactor the
sys::iomodule. - update
Io: addpipemethod. - re-export
IoPipeReader,IoPipeWriter.
sys::log
- new type
LoggerStatic. - new macro
slog!. - rename
ExtLoggertoLoggerExt.
sys::mem
- new alias:
MaybeByte. - new types:
ArenaExample,ArenaHandleExample,ArenaMarkExample. - new macros:
define_arena. - new submodules:
alloc,bound,layout,view. - move previous submodules:
align,pin,ptrinsidebound.alloc,arena,storageinsidealloc.borrow,sliceinsideview.
- move to [base]:
- macros:
cswap!. - traits:
MemAligned. - types:
CacheAlign,Mem,Ptr.
- macros:
- rename
ExtMemtoMemExt. - update
Mem:- rename method
bytes_from_bitstobytes_from_bits_saturating. - new method:
bytes_from_bitswith a faster impl.
- rename method
sys::mem::cell
- rename
ExtCellOptiontoCellOptionExt.
sys::mem::size
- move
ByteSizedandsize_of_expr!to [base].
sys::mem::slice
- new macro
slice!. - new types:
SliceIter,SliceIterMut. - move to [base]:
- macros:
const_join!. - types:
Slice.
- macros:
- rename:
join!toconst_join!.ExtSlicetoSliceExt.
- update
Slice:- rename methods:
copy_from_slicetocopy.trim_leading_bytestotrim_leading.replace_leading_bytestoreplace_leading.
- add new methods:
range_to_inclusive*.chunk[_mut],chunks_exact[_mut].clone,copy_into,copy_str_into,copy_utf8_into.trim_leading_keep,trim_leading_min_len,trim_trailing,trim_trailing_keep,trim_trailing_min_len,trim_edges_keep,trim_edges_min_len_left,trim_edges_min_len_right.
- add new
eqmethods for slices of slices of primitives and string slices.
- rename methods:
sys::os
- repurpose module to include operating supervisors.
- new
Libcnamespace. - new modules:
sys::os::browser,sys::os::fd.
sys::os::browser
- move
lang::ffi::js::webtosys::os::browser::web. - move
examples::lang::js_web*toexamples::sys::web*.
sys::os::linux
- new types
LinuxClock,LinuxTime,LinuxInstant. - new
Linuxmethods:clock_getres,clock_gettime,exit. - new
Linuxsyscalls:sys_clock_getres,sys_clock_gettime. - fix
Linux-related warnings & avoid use oftransmute. - rename syscalls doc constants, prefix with
_DOC_. - update
LinuxError:- new
Othervariant. - impl
Error.
- new
- improve
LinuxTimespec.- impl
DisplayandConstInit. - rename method
withtotry_with_durationand make fallible. - add corresponding method
try_to_duration. - add saturating methods to convert from/to
Duration. - add corresponding conversions and methods from/to
TimeDelta.
- impl
sys::os::term
- new module
sys::os::term. - feature-gate with
term. - rename
AnsiColor3btoAnsiColor3andAnsiColor8bAnsiColor8. - move to [base]:
- types:
Ansi,AnsiColor3,AnsiColor8,TermSize.
- types:
- change
Ansi::print*methods toansi_print*functions. - new type:
AnsiColor. - update
Ansi:- reverse the order of arguments in
CURSOR_MOVE*to be columns first. - add methods:
COLOR_[BG|FG]_BRIGHT,CURSOR_MOVE,DEFAULT_[BG|FG],MOUSE_X10_[ENABLE|DISABLE],MOUSE_[NORMAL|TRACKING|UTF8],MOUSE_SGR[_PIXELS],strip_codes. - rename current associated const items with a
_Bsuffix. - add duplicated items with the old name returning a string slice or a
StringNonul. - update digits formatting methods to use
Digits::write_digits10. - modify
CURSOR_*methods takingu32to takeu16. - make all escape-sequence methods const.
- fix codes related to alternate screen.
- reverse the order of arguments in
- update
ansi!:- add new arms
p!and@p!that auto-unwrap. - fix macro visibility.
- add new arms
text
- new struct:
TextLut. - move to [base]:
- traits:
NumToStr. - types:
ByteSearch,Digits,GraphemeNonul,GraphemeU*,Str,StringNonul,StringU*,char7,char8,char16.
- traits:
text::char
- new macro:
ch!. - new fn:
scalar_as_ascii_translit. - new types:
CharIter,charu,charu_niche. - new
char7methods:to_byte,to_str,try_from_u8_array,from_u8_array_unchecked,read_u8_slice,read_u8_slice_trunc,write_u8_slice,write_str,to_ascii_lowercase_array,eq_ignore_ascii_case. - new
char[7|8|16]methods:to_charu,try_from_charu. - new
TextLutconsts:ASCII_BASE36_OFFSET,DIGITS_BASE36,DECIMAL_PAIRS,POWERS10. - mark
char[7|8|16]as must_use. - impl
ConstInitforchar*. - rename
AsciiChartoCharAscii. - rename
char*methods:to_u32toto_scalar.*ascii_char*to*char_ascii*.
- make
text::charmodule public. - move
text::asciitotext::char::ascii. - remove previously re-exported
IterChars. - update
Char:- change
to_ascii_foldto convertÆ|ŒtoE&æ|œtoe. - remove deprecated methods:
len_to_utf8,utf8_?bytes_len. - make it a tuple struct with a single a generic parameter.
- add methods:
decode_surrogate_pair,has_overlong_encoding,has_valid_continuation,is_combining,is_combining_common,is_control,is_control_common,is_fullwidth,is_fullwidth_common,is_surrogate*,is_utf8_boundary,is_valid_code,to_char,to_char_lenient,to_char_unchecked,len_utf8_match,len_utf8_match_naive. - rename methods:
is_7bittois_ascii.is_validtois_valid_scalar.to_ascii_strtoas_ascii.to_ascii_str_uncheckedtoas_ascii_unchecked.to_code*toto_scalar*.utf8_lentolen_utf8_unchecked.utf8_len_checkedtolen_utf8.
- remove
utf8_bytes_prefix fromChar<&[u8]>methods. - add private consts:
CONT_MASKUTF8_CHAR_LEN. - remove
code_prefix fromChar<u32>methods. - rename method
byte_lentolen_bytes. - modify all methods to take
self. - return lengths as usize.
- change
- update
UnicodeScalar:- new methods:
as_ascii_translit,is_combining,is_combining_common,is_control,is_control_common,is_fullwidth,is_fullwidth_common,to_char,to_scalar. - rename method
byte_lentolen_bytes. - reorder methods.
- new methods:
text::char::ascii
- rename
ASCII_TABLEtoLUT_ASCII_CHARSand make it a public const. - rename
AsciitoDigits. - update
Digits:- new const:
MAX_DIGITS_16. - new methods:
count_digits16,digit_at_index10[_checked],digit_at_index16[_checked],digit_value_at_index10[_checked],digit_value_at_index16[_checked],digits16,write_digits10,write_digits10_fast,write_digits10_omit0,write_digits16,write_digits16_omit0. - new private method:
digit_at_power16. - rename const:
MAX_DIGITStoMAX_DIGITS_10and make them of typeu8. - rename methods:
calc_digittodigit_at_power10and make private.count_digitstocount_digits10.digits_*todigits10_*.digitstodigits10.
- new const:
text::error
- re-export std's
FromUtf8Error.
text::fmt
- new macro:
fmtcat. - new trait:
DebugExt. - new types:
FmtNum,FmtNumConf,FmtNumGroup,FmtNumShape,FmtNumSign,FmtWriter. - re-export
FromFnasFmtFromFn. - move to [base]:
- macros:
format_buf!.
- macros:
- remove vendored
numtoacrate,NumToStrtrait replaced withDigitsstruct. - add method
Fmt::from_fn.
text::grapheme
- new types:
GraphemeKind,GraphemeScanner. - feature-bound all grapheme-related items.
- vendor
grapheme_machineas items:GraphemeBoundary,GraphemeMachine,GraphemePropCb,GraphemePropInCb,GraphemeProps. - impl
Graphemefor scalar types. - update the
Graphemetrait:- add new methods:
grapheme_chars,grapheme_is_kind,grapheme_kind,grapheme_len_bytes,grapheme_len_chars,grapheme_len_utf8.
- add new methods:
- update
Grapheme[Nonul|U*]:- remove methods:
to_cstring. - make
newmethod panic. - add new methods:
eq,[as|into]_string_[nonul|u8],from_charu[_unchecked],from_str,new_checked. - make methods unsafe:
as_bytes_mut,as_str_mut. - implement
PartialEqandHashmanually. - implement
PartialEqbetween string and grapheme types. - make all methods const.
- remove methods:
text::layout
- new module
text::layout. - new types:
TextCohesion,TextCursor,TextFit,TextIndex,TextLayout,TextLayoutStep,TextSpan,TextSymbol,TextUnit.
text::str
- remove methods:
to_cstring, fromString*. - make
charsmethods const when possible. - add more impls of
PartialEqagainst string slices. - update
Str:- add methods for returning substrings in compile time:
range*take*,*split*. - remove method
from_boxed_utf8_unchecked.
- add methods for returning substrings in compile time:
- common updates for
StringNonulandStringU:- new methods:
eq,from_charu,from_charu_unchecked,from_str,from_str_truncate,from_str_unchecked,new_checked. - impl
AsRef<&str>,Deref,Extend,FmtWrite,FromIterator. - make methods unsafe:
as_bytes_mut,as_str_mut. - make all methods const.
- make
newmethod panic. - rename methods
from_bytes*tofrom_array*.
- new methods:
- update
StringNonul:- new methods:
chars,char_count. - rename methods
from_byte_array*tofrom_array*. - impl
PartialEq.
- new methods:
- update
StringU*:- new methods:
pop_unchecked,push_charu,sanitize. - modify methods:
as_mut_str: make safe.push_str, make const, improve efficiency, update docs & examples.try_push_str*, make const, returnResult<usize, usize>, update docs & examples.- remove
AsMut&DerefMutimpls. - fix
TryFrom<&str>impl. - impl
PartialEq. - improve docs.
- new methods:
- add new method
repeat_into_slicetoStr&StrExt. - improve method
repeat_intoforStr&StrExt. - improve method
new_counterforStr,StrExt&StringExt.
ui
- remove modules:
ui::back,ui::front. - new modules:
ui::intent,ui::view.
ui::event
- new types:
DeviceId,Event,EventKind,EventQueue,EventTag,EventTarget,EventTimestampMode,EventWindow,KeyDead,WindowId. - change
EventPointer.pressurefield to bef32bits_niche. - rename
time_stampfields totimestamp. - derive
Eq&Hashfor all event types. - implement
ConstInitfor all types. - update Event:
- new fields
count,processed,target. - new methods:
mark_processed,mark_count,clear_count,finalize,count,tag.
- new fields
- update
Key&KeyFfi:- rename
Periodvariant toDot. - add new
Deadvariant.
- rename
- update
KeyState: add variantRepeat. - update
EventTimestamp:- manually impl
DebugandDebugExt. - remove all inner unsafe.
- make it support timestamps of 0 ms.
- change inner representation to
f32bits_niche. - add methods:
as_millis_f32_to_u32,as_millis_u32,from_millis_u32_as_f32. - remove methods:
try_from_js,try_from_millis_f32,try_from_millis_u32,try_from_secs_f32.
- manually impl
- change
EventKeyFfi.timestampfield to bef32bits. - update
EventWindow:- fix
Movedvariant to usei32. - new methods
is_[geometry|resize|move|focus|close|redraw|visibility|pointer_crossing|text_input|stream_signal],[resize|move]_coords. - new variants:
Entered,Left,Minimized,Maximized,Restored,FullscreenEntered,FullscreenExited.
- fix
ui::event::key
- update
KeyPad, add variantComma. - update
KeyMod:- rename variant
IsoLevel3ShifttoAltGr. - remove variants:
LeftMeta,RightMeta,LeftHyper,RightHyper.
- rename variant
- update
KeyMods:- rename
ctrlin methods tocontrol. - rename method
has_metatohas_super. - add bits and methods for
IsoLevel5Shift. - add getter and setter methods:
set_*,unset_*. - remove old obsolete variants.
- rename
- remove
KeyAlpha. - update
Key&KeyFfi:- rename
F(u8)variant toFn(u8). - integrate
KeyAlpha's variants. - add new punctuation variants.
- add new
Scancode(u16)variant.
- rename
vita
- new
vitamodule.
work
work::future
- rename:
ExtFuturetoFutureExt.ExtProcesstoProcessExt.ProcessExt::idtoself_pid.
work::process
- new macro:
cmd!. - new trait:
OutputExt. - new types:
CommandFlow,ExitStatusError. - rename re-exported types back by removing the
Processprefix, except forChild*→Process*renames andProcessTermination.
work::sync
- move
portable-atomic-utildependent re-exports to [base_alloc]:Arc,ArkWeak.
yard
- new internal root module
yard. - new workspace-internal macro
_devela_policy!. - move here most private macros from
code::util.
Full Changelog: v0.24.0...v0.25.0