Skip to content

Releases: andamira/devela

v0.21.2

08 Aug 23:20
Compare
Choose a tag to compare

Added

  • add convenience fns: out_dir and out_dir_path to the build script.
  • add new build::utils module.

Changed

  • move build codegen output from /build/out/ to {OUT_DIR}/build/.
  • show debug information about OUT_DIR and the code-generated files.
  • move println to the utils module.
  • update .gitignore.

Fixed

  • this should fix compilation in docs.rs.

Full Changelog: v0.21.1...v0.21.2

v0.21.1

08 Aug 21:54
Compare
Choose a tag to compare

Changed

  • rename build script's construct folder to build.
  • update .gitignore.

Fixed

  • include build folder.
  • fix docs.

Full Changelog: v0.21.0...v0.21.1

v0.21.0

08 Aug 20:48
Compare
Choose a tag to compare

Added

  • add features: num_geom, num_float, num_int, num_rand, sys, safe_sys, unsafe_thread.
  • add features: _num_all, _float_all, _float_f[32|64], _int_all, _int_[iu][all|8|16|32|64|128|size].
  • add features: _bit_all, _bit_[iu][8|16|32|64|128|size].
  • add features: _ascii_all, _ascii_u[8|16|32|64|128|size].
  • add features: _non_value_all, _non_value_[iu][8|16|32|64|128|size].
  • add features: _non_range_all, _non_range_[iu][8|16|32|64|128|size].
  • add features: _range_all, _non_range_[iu][8|16|32|64|128|size].
  • add features: _sort_all, _sort_[iu][8|16|32|64|128|size].
  • add features: _cmp_all, _cmp_[iu][8|16|32|64|128|size].
  • add features: _default, _min_docs, _max_docs, _max, _docsrs_stable,__dbg, __no_test nightly_stabilized.
  • add features: _node_all, _node_u[8|16|32|64|128|size].
  • add compilation flags for reflection purposes, named _some_*.
  • enable doc_notable_trait unstable feature with nightly_doc.
  • add traits: ExtFuture, ExtFloatConst, ExtLog, NumVector.
  • add functions: future_block, hash_pengy.
  • add type: Prompt.
  • add type: Pinned.
  • add type: Timecode.
  • add types: NodeU*, EdgeU* GraphU*.
  • add types: LoggerConfig, LoggerPrint, Logging.
  • add types: Divisor, GcdExt, ValueQuant.
  • add types: Extent, Extent2d, Extent3d.
  • add types: Angle, AngleDirection, AngleKind
  • add types: Vector, Vector2d, Vector3d, VecVector.
  • add types: Point, Point2d, Point3d, Points, VecPoints.
  • add types: HasherFnv, HasherFx, HasherFx32, HasherFx64, HasherBuildFnv, HasherBuildFx.
  • add types: TupleIter, TupleIterRef, TupleIterMut, TupleElement, TupleElementRef, TupleElementMut.
  • add ByteSized constants: PTR_BITS, LITTLE_ENDIAN, BIG_ENDIAN.
  • add unsigned gcd_ext and gcd_ext_euc methods to Int.
  • add Floating and ExtFloat method: neg_abs.
  • add *_assign methods to Num and NumRef.
  • add NumError variant: NoInverse.
  • add DataError variants: NodeLinkNotSet, NodeLinkNotUnique.
  • add new arms to array_init: init, init_heap.
  • add methods to BareBox: as_ref.
  • add methods to Array: as_bare_slice.
  • add methods to Int: midpoint, modulo*.
  • add methods to Int, NumInt, NumRefInt: midpoint.
  • add methods to ExtAny: downcast_ref, downcast_mut.
  • add methods to Tuple:: nth_ref, nth_mut, into_iter, iter_ref, iter_mut.
  • add methods to Cast and PrimitiveCast: wrapping_cast_*, for [iu]size_[up|down].
  • re-export more items from: std::io, core::ptr.
  • re-export: String, ToString, Rc, RcWeak.
  • add build script for debugging purposes.
  • add lints table in manifest.

Removed

  • remove features: num_all, ui, ui_all, num_float, num_int, num_niche_impls, num_niche_range, result, safe_result, fig, safe_fig, io, io_safe, os, os_safe, rend, safe_rend, safe_ui, safe_ui_term.
  • remove dependencies: either, crossterm, miniquad.
  • remove deprecated ident_total_count macro.
  • remove repr(C) attribute from niche types.
  • remove Mem trait bound from ByteSized.
  • remove gfx module.

Changed

  • bump rust version to 1.80.1.
  • move result module inside code.
  • move io moule and os submodules to sys.
  • move rustdoc-header.html file to /DOCS/.
  • move _deps::{code, alloc, std} to ::{_libcore, _liballoc, _libstd}.
  • rename Range to InRange.
  • rename Biting to Bitwise.
  • rename Mem trait to ExtMem.
  • rename Text trait to StrOwn.
  • rename _docs module to _info.
  • rename ExtTuple trait to Tuple.
  • rename copy function to io_copy.
  • rename StringEgc to EgcString.
  • rename NonSpecific* to NonValue*.
  • rename mem::BitSize to mem::BitSized.
  • rename mem::ByteSize to mem::ByteSized.
  • rename NonEdge* aliases to NonExtreme*.
  • rename ByteSized::PTR_SIZE constant to PTR_BYTES.
  • rename os module to sys, make submodules private.
  • rename work module to exec, make submodules private.
  • rename Floating wrapper to Float and make it own self.
  • rename is_aarch64_feature_detected to detect_aarch64.
  • rename is_x86_feature_detected to detect_x86.
  • rename DataError variant: EmptyNode to NodeEmpty.
  • rename private feature _exclude_example to __excluded.
  • rename methods: into_array_const to into_array_copy, into_inner_const to into_inner_copy, from_array_const to from_array_copy, as_array_const to as_array_copy, as_tuple_const to as_tuple_copy.
  • improve cdbg, allow to customize the location path and print fmt.
  • improve enumset, allow to specify the visibility and attributes of the set.
  • make Compare methods: pmin, pmax and pclamp return Option.
  • change TaskWakerNoop struct into task_waker_noop fn.
  • add more consts to Float and ExtFloat.
  • add the ?Sized trait bound for ExtAny auto-impls.
  • change From<float> for Sign to return the zero sign.
  • change default Tuple arity to 12.
  • change tuple capability features to: _tuple_arity_24, _tuple_arity_36, _tuple_arity_48, _tuple_arity_60, _tuple_arity_72, _tuple_arity_96.
  • add bounds for color_gamma_* functions.
  • make some methods const: Slice::<u8>::trim_leading_bytes, StringU*::from_bytes_n[left|right], Timecode::split_nanos_u[32|64].
  • make some methods optionally const: Slice::{lsplit, msplit_[left|right]}, Ascii::digits_str, StringU*::from_bytes_n[left|right][_unchecked].
  • feature-gate Compare impls for primitives.
  • feature-gate StackU* method own_resize_default_truncate.
  • feature-gate Float methods: clamp_total, max_total, min_total.
  • feature-gate ExtFloat methods: clamp_total, max_total, min_total.
  • make optionally const Int methods: is_prime, prime_nth, prime_pi,
  • move the enabling of all module's sub-features to the root module feature.
  • update CI actions/checkout@v3 -> v4.
  • update devela_macros.

Fixed

  • fix exec re-exports.
  • fix Bitsized impl for niche types.
  • fix feature-gating of Compare methods: is_normal, is_subnormal.
  • make _info/examples parseable by rustfmt.
  • add missing NumInt sqrt implementations.
  • make no-std io memrchr function private.

Full Changelog: v0.20.0...v0.21.0

v0.20.0

12 Mar 10:21
Compare
Choose a tag to compare

Added

  • add traits: NumToStr, ConstDefault, DataQueue, DataDeque, DataStack, DataDesta, ExtTuple, ExtArray.
  • add types: Destaque, DestaqueIter, Stack, StackIter, Mismatch, Own, GfxError, GfxResult, Pnm, Array2d, OptRes, TupleFmt, ArrayFmt, UninitArray, Ascii, MilliToHour, NanoToSec, SecToYear.
  • add features: fig, num_all, safe_code, safe_data, safe_fig, safe_gfx, safe_mem, safe_num, safe_os, safe_result, safe_text, safe_time, safe_ui, safe_ui_term, safe_work, unsafe_array, unsafe_async, unsafe_const, unsafe_dyn, unsafe_niche, unsafe_slice, unsafe_str, nightly_coro, nightly_doc, _exclude_example, ui_window, ui_events, num_niche_range.
  • add capability features: _capability_max, _tuple_arity_31, _tuple_arity_63, _tuple_arity_95, _tuple_arity_127.
  • add RNGS: Xabc, XorShift8, XorShift8Custom, XorShift16, XorShift32, XorShift64, XorShift128, XorShift128p, Xyza8a, Xyza8b.
  • add Floating constants: FRAC_1_PHI, NEG_FRAC_1_PHI, SQ_PHI, FRAC_NEG_1_PHI.
  • add no_std reimplementations of std::error and std::io types and traits.
  • add non-optional dependency either and re-export its items.
  • add optional dependencies: memchr, wide, crossterm, miniquad, rand_core.
  • add macros: assert_eq_all, assert_approx_eq_all, unwrap.
  • add Array methods: new_boxed, into_slice, into_vec.
  • add examples: cargo-script, bitfield, enumset.
  • add fns: mem_copy, serr and sok.
  • add type aliases: isize_down, usize_down.
  • add niche number aliases: NonEdge*.
  • add Bare type alias of unit.
  • add module: fig.
  • add script tools/rustfmt and rustfmt_excluded_files list.
  • add new DataError variants: MismatchedLength, `InvalidAxisLength.
  • add new TextError variants: CharConversion, OutOfBounds.
  • add new Floating and ExtFloat methods: sign, is_zero, is_sign_positive_nonzero, is_sign_negative_nonzero.
  • re-export proc-macros: ident_total, ident_unique, ident_total_unique.
  • re-export crate-defined result-related types from result.
  • re-export core types from data::iter.
  • re-export core tpes from num::cmp.
  • re-export Default from code.

Removed

  • remove devela_depend, simplify system for optional dependencies.
  • remove features: fullest, safest, unsafest, full_unsafe, data_unsafe, mem_unsafe, num_unsafe, os_unsafe, text_unsafe, ui_unsafe, ui_term_unsafe, work_unsafe, dep, dep_interop.
  • remove IntBuf type and IntBufAble trait.
  • remove re-exported macro: option_unwrap.
  • remove type aliases: NonMax* `NonMin*, DirectArray, BoxedArray.
  • remove file .gitattributes.
  • remove CharConversionError.
  • remove asci_ standalone fns.
  • deprecateident_total_count macro.

Changed

  • bump rust version to 1.76.0.
  • make num::cmp non-public.
  • move cmp from data to num.
  • move ops from num to code.
  • move any from data to code.
  • move docs html header to src/_doc.
  • move .git_hooks to tools/git_hooks.
  • move traits: Apply, Also to result.
  • make bytemuck a non-optional dependency.
  • rename src/Doc.md to src/_doc/features.md.
  • rename ::{_alloc, _core, _std} to ::_deps::{alloc, core, std}.
  • rename the __doc module to _docs and the _dep module to _deps.
  • rename the error module to result, and the render module to gfx.
  • rename AnyExt, OptionExt, ResultExt, SliceExt, SliceExtMut, StrExt and StringExt to ExtAny, ExtOption, ExtResult, ExtSlice, ExtSliceMut, ExtStr and ExtString and ExtVec respectively.
  • rename LiteCoroutine, LiteCoroutineExecutor, LiteCoroutineWaiter and LiteCoroutineWaker to Coro, CoroRun CoroYield and TaskWakerNoop, respectively.
  • rename ArrayStringError to TextError, ArrayU*String to StringU*, ArrayU8NonNulString to StringNonul, ArrayU8NonNulEgc to EgcNonul.
  • rename DataErrors to DataError and NumErrors to NumError.
  • rename num_int_niche feature to num_niche_impls.
  • rename *fence functions to atomic_*fence.
  • rename ascii_ re-exported macros to str_.
  • prefix allocated collections with Alloc.
  • rename aliases: Dst*U to Dst*Usize.
  • rename mem::Size to mem::ByteSize.
  • rename feature docsrs to _docsrs.
  • rename FloatOps to ExtFloat.
  • rename feature full to all.
  • rename Direct to BareBox.
  • rename Slicing to Slice.
  • rename Sorting to Sort.
  • rename Primiting to Cast.
  • rename Comparing to Compare.
  • document selected examples from _docs.
  • derive common traits for Boxed, Cast.
  • always compile num submodules in general.
  • always compile text::fmt, work::async::coro.
  • make text chars methods not depend on alloc.
  • make bitfield and enumset examples standalone.
  • recreate the pre-commit script to leverage rustfmt.
  • update enumset: rename LEN associated constant to ENUM_VARIANTS, and add enum_variants method.
  • update the cdbg macro with column number.
  • update and improve the array_init macro.
  • update the cswap macro with xor swap.
  • improve the pre-commit git hook.

Fixed

  • refactor root modules, simplify and dissassociate root-level feature-gating.
  • update and add more tests for macros: cfor, mem_size_of_expr.
  • allow to forbid unsafe at the individual module level.
  • fix data::dst feature-gates.

Full Changelog: v0.19.0...v0.20.0

v0.19.0

24 Jan 14:52
Compare
Choose a tag to compare

Added

  • new features: docsrs, num_int_niche.
  • add optional dependency unicode-width.
  • new root modules: io, render, ui.
  • new fns mem::ptr_in_stack, factorial_*, bytes_from_bits.
  • new structs Priming, Comparing, Slicing, Sorting, Biting, Int, Frac.
  • new traits: DataArray, PrimitiveCast, BitOps, NumInt, NumRefInt, VecExt.
  • new macros: bitfield, enumset, ident_const_index, ident_total_count, init_array.
  • new NumErrors variants: MismatchedSizes, NonNegativeRequired, PositiveRequired.
  • new color constants: COLOR_LUMINANCE_[RED|GREEN|BLUE].
  • complete Floating and FloatOps methods and constants.
  • reexport panic from error, and hint from code.
  • new type aliases: isize_up, usize_up.
  • new enums: DataErrors, Sign.

Removed

  • remove os::linux functionality.
  • remove features: linux, linux_unsafe, unsafe_linux, unsafe_os, ops, ops_unsafe, unsafe_ops, unsafe_code, unsafe_color, unsafe_result, unsafe_time, code_usafe, color_unsafe, result_unsafe, time_unsafe.
  • remove standalone fns from: num::ops, mem::slice, data::convert::collection.
  • remove linux specific tools and github actions.
  • remove the Underflow variant from NumErrors.
  • remove the prelude.

Changed

  • bump rust version to 1.75.0.
  • move term module to ui.
  • move any module to data.
  • move color module to render.
  • move num and ops modules to num.
  • move data::slice to mem::slice.
  • move error::{Also, Apply} to code.
  • move num::convert module to code.
  • move niche number types to num::niche.
  • move data::array to data::collections::array.
  • move corresponding standalone fns to Sorting, Comparing and Casting.
  • move cmp fns to Comparing methods: clamp*, max*, min*, pclamp, pmax, pmin.
  • rename meta module to code.
  • rename task module to work.
  • rename result module to error.
  • rename NumError and NumResult to NumErrors and NumResult, respectively, and move them to the num module.
  • rename AnsiColor3 to AnsiColor3b and AnsiColor8 to AnsiColor8b.
  • rename fns: div_half_* to div_ties_*.
  • rename term features to ui_term features.
  • rename Fp to Floating and FloatExt to FloatOps.
  • rename Floating and FloatOps float parameters to x, y z.
  • rename Floating and FloatOps method: round to round_ties_away.
  • rename FromPrimitives to PrimitiveJoin and IntoPrimitives to PrimitiveSplit.
  • rename fn mem_ptr_ratio and method Size::ptr_ratio to ptr_size_ratio.
  • rename reexported time types: Duration to SystemDuration, Instant to SystemInstant.
  • reexport BitwisePrimitives and CastPrimitives traits from prelude.
  • change Ansi::print method and ansip macro to depend on std.
  • improve Floating type and FloatOps trait to be partially available without std or libm features, reverting to the taylor versions when there's no better option.
  • impl DataCollection for array, Vec, VecDeque, OrderedMap, OrderedSet, UnorderedMap, UnorderedSet.
  • impl Error and Display for NumErrors.
  • make ascii_calc_digit_* functions public.
  • make DataCollection always available.
  • make prime_number_theorem compilable without libm nor std.
  • make devela_macros a non-optional dependency, and update it.
  • update color gamma fns, rename to color_gamma_[apply|remove]_f*, add f64 versions.
  • update DataCollection methods to return DataResult; add new methods collection_contains, collection_count.
  • update IntoPrimitives related method to take self, remove one generic argument.
  • update CastPrimitives with missing usize and isize methods.
  • update Collection trait.
  • update crate description.
  • update devela_depend.

Fixed

  • fix bytemuck dependency when data is enabled.
  • update and improve CI tests.
  • add many missing attributes.
  • fix and update many docs.

Full Changelog: v0.18.1...v0.19.0

v0.18.1

08 Nov 11:35
Compare
Choose a tag to compare

Fixed

  • fix FloatExt reexport.
  • fix DERIVED.md links.

Full Changelog: v0.18.0...v0.18.1

v0.18.0

03 Nov 18:38
Compare
Choose a tag to compare

Added

  • new ops gcd fns: gcd_*, gcd_ext_* and gcd_ext_euc_*, lcm_*.
  • new ops base fns: count_digits, count_digits_sign, count_digits_base, count_digits_base_sign, digital_root, digital_root_base.
  • new ops factor fns: factors_*, factors_proper_*, factors_prime_*, factors_prime_unique_*, factors_prime_buf_*, factors_prime_unique_buf_*, factors_prime_unique_plus_buf_*.
  • new ops sort fns: sort_bubble, sort_insertion, sort_merge, sort_quick_lomuto, sort_quick_hoare, sort_quick_3way, sort_selection, sort_shaker, sort_counting, sort_counting_buf.
  • new mem macro: cswap.
  • add new fn to LinuxTerminal size: pixels_per_cell.
  • new trait FloatExt and struct Fp.

Changed

  • changed result of LinuxTerminalSize fns: cells and pixels to [u16; 2].
  • rename const_for to cfor and make it always available.
  • make ops::cmp float fns always available.
  • add libm feature to docs.rs compilation.

Fixed

  • add missing rustdoc header file.
  • fix reversed order of LinuxTerminalSize::cells.

Full Changelog: v.0.17.0...v0.18.0

v.0.17.0

28 Oct 09:01
Compare
Choose a tag to compare

Added

  • new types: DstArray, DstValue, DstStack, DstQueue, DstQueueIter, DstQueueIterMut, DstQueuePopHandle, DstStackIter, DstStackIterMut.
  • new ops fns: div_rem_*, div_ceil_*, div_floor_*, div_half_away_*, div_half_towards_*, div_half_even_*, div_half_odd_*, sqrt_*, sqrt_ceil_*, sqrt_floor_*, scale_*, lerp_*.
  • new aliases: DstQueueU, DstStackU, DstValueU, DstVecU.
  • new trait: DstBuf.
  • impl more traits for Array: PartialOrd, Ord, AsRef, AsMut, Borrow, BorrowMut, Hash.
  • new features: color, color_unsafe, unsafe_color, ops, ops_unsafe, unsafe_ops.
  • add katex docs header to support mathematical notation.
  • new optional dependency: libm.
  • new modules: color, ops.

Removed

  • remove features: nightly_docs, cmp, cmp_unsafe, unsafe_cmp, convert, convert_unsafe, unsafe_convert.
  • remove az optional dependency.

Changed

  • rename Collection to DataCollection.
  • make Array private field public to the crate.
  • rename depend feature to dep and depend module to _dep.
  • allow warnings for broken intra-doc links when dep is disabled.
  • move to ops the modules: cmp, convert.
  • update cargo aliases for docs.
  • bump devela_depend.

Fixed

  • fix test for mem_size_of_expr.
  • remove redundant re-exports of optional dependencies.
  • update cargo aliases.

Full Changelog: v0.16.0...v.0.17.0

v0.16.0

24 Oct 12:37
Compare
Choose a tag to compare

Added

  • add mem_size_of_expr macro.
  • new type NumErr, new type alias NumResult.
  • reexport BinaryHeap from data::PriorityQueue.
  • new time module, and features: time, time_unsafe, unsafe_time.
  • add min_fsize, max_fsize, clamp_fsize total_cmp_fsize.
  • new struct Array, and aliases BoxedArray, DirectArray.
  • new trait Collection.

Removed

  • remove features: ascii, ascii_unsafe, unsafe_ascii, char, char_unsafe, unsafe_char, fmt, fmt_unsafe, unsafe_fmt, future, future_unsafe, unsafe_future, option, option_unsafe, unsafe_option, slice, slice_unsafe, unsafe_slice, str, str_unsafe, unsafe_str, sync, sync_unsafe, unsafe_sync, texts, texts_unsafe, thread, thread_unsafe, unsafe_thread.
  • remove trait AltDebug.

Changed

  • rename HashMap, HashSet as UnorderedMap, UnorderedSet.
  • rename BTreeMap, BTreeSet as OrderedMap, OrderedSet.
  • change the result type of Num methods from Option to Result.
  • move to text the root modules: ascii, char, fmt str.
  • move to task the root modules: future, sync, thread.
  • move the traits Also, Apply to result.
  • move to data the root module: slice.
  • rename collections module to data.
  • rename codegen module to meta.
  • rename string module to text.
  • make Storage always compiled.

Fixed

  • reexport missing result::{NeverOk, NeverErr} types.

Full Changelog: v0.15.0...v0.16.0

v0.15.0

19 Oct 17:46
Compare
Choose a tag to compare

Added

  • new modules: collections, future, task.
  • new features: collections, depend, future, future_unsafe, unsafe_future, task, task_unsafe, unsafe_task, async, async_unsafe, term, term_unsafe, unsafe_term, collections_unsafe, unsafe_collections.
  • new type aliases: Egc16, Egc32, Egc64, Egc128, NonNulEgc8, NonNulEgc16, NonNulEgc32, NonNulEgc64, NonNulEgc128.
  • new structs: StringEgc, ArrayU8Egc, ArrayU8NonNulEgc, LiteCoroutine, LiteCoroutineExecutor, LiteCoroutineWaiter, LiteCoroutineWaker, Direct, Boxed.
  • re-export std's items from collections, future, mem, task, vec.
  • new traits AnyExt, Egc, Num, NumRef, Mem, Size, BitSize, Storage.
  • add new optional dependencies devela_depend, hashbrown.
  • new fns: mem_ptr_ratio.
  • new type aliases: fsize, NoNum.

Removed

  • remove macros: manifest_dir, sfb.
  • remove features: lean, leanest, chars, strings, os, os_unsafe.
  • remove unneded conversion impls from chars to strings.

Changed

  • bump MSRV to 1.73.0.
  • add features linux, term to full.
  • optional dependencies can be enabled directly or via depend.
  • rename mem fns by prefixing them with mem_: mem_as_bytes, mem_as_bytes_mut, mem_as_bytes_sized.
  • rename Num trait fns with the num_ prefix; rename fn get to num_into; add fn num_from.
  • update bytemuck, enable more features.

Fixed

  • new private helper macro reexport for reexported items.
  • do not enable the empty default feature.
  • improve re-exports rustdoc tags.
  • fix core::num re-exports.
  • improve many docs.
  • improve CIs.

Full Changelog: v0.14.0...v0.15.0