Skip to content

Releases: Alexhuszagh/rust-lexical

Version 1.0.5 Release

08 Dec 21:03
84c1c49
Compare
Choose a tag to compare

Fixed

  • Only require 19 digits for writing i64 and not 20 (#191).

Version 1.0.4 Release

08 Dec 00:07
b6d0eb4
Compare
Choose a tag to compare

Changed

  • Improved performance of integer and float formatting using the jeaiii algorithm with additional optimizations to minimize branching (#163). This also improves memory safety guarantees, since no unsafe indexing is used when formatting integers.
  • Updated our build timings, binary sizes, and benchmarks.

Version 1.0.3 Release

07 Dec 18:03
8ab2253
Compare
Choose a tag to compare

Changed

  • Improved performance of number formatting with non-decimal radices (#169).

Fixed

  • Inaccurate number formatting with non-decimal radices (#169).

Version 1.0.2 Release

25 Sep 00:25
6ab9853
Compare
Choose a tag to compare

Changed

  • Higher performance when parsing floats with digit separators.

Fixed

  • Inlining inconsistency between public API methods (credit to @zheland)
  • Incorrectly accepting leading zeros when no_integer_leading_zeros was enabled.
  • Have consistent errors when an invalid leading digit is found for floating point numbers to always be Error::InvalidDigit.
  • Incorrect parsing of consecutive digit separators.
  • Inaccuracies when parsing digit separators at various positions leading to incorect errors being returned.
  • Selecting only a subset of parse and/or write features would cause compilation errors.
  • Fixed bug with writing integers with custom radices.

Version 1.0.1 Release

25 Sep 00:26
e3f01cb
Compare
Choose a tag to compare

Fixed

  • A correctness regression.
  • Regressions where parsing digit separators without the compact panicked.

v1.0.0 Release

14 Sep 23:11
7c0100d
Compare
Choose a tag to compare

The full changelog is as follows:

Added

  • Added fuzzing and miri code safety analysis to our CI pipelines.
  • Removed requirement of alloc in no_std ennvironments without the write feature.
  • Make multi-digit optimizations in integer parsing optional.
  • Much higher miri coverage including for proptests and our corner cases from the golang test suite.

Changed

  • Updated the MSRV to 1.63.0 (1.65.0 for development).
  • Improved performance due to compiler regressions in rustc 1.81.0 and above.

Fixed

  • Removed use of undefined behavior in MaybeUninit.
  • Provide better safety documentation.
  • Parsing of Ruby float literals.
  • Performance regressions in Rust 1.81.0+.
  • Removed incorrect bounds checking in reading from iterators.
  • Overflow checking with integer parsing.
  • Writing -0.0 with a leading -.
  • Reduced binary siezes when the compact feature was enabled.
  • Improved performance of integer and float parsing, particularly with small integers.
  • Removed almost all unsafety in lexical-util and clearly documented the preconditions to use safely.
  • Removed almost all unsafety in lexical-write-integer and clearly documented the preconditions to use safely.
  • Writing special numbers even with invalid float formats is now always memory safe.

Removed

  • Support for mips (MIPS), mipsel (MIPS LE), mips64 (MIPS64 BE), and mips64el (MIPS64 LE) on Linux.
  • All _unchecked API methods, since the performance benefits are dubious and it makes safety invariant checking much harder.
  • The safe and nightly features, since ASM is now supported by the MSRV on stable and opt-in for memory-safe indexing is no longer relevant.

Lexical-Core Version 0.8.6 Release

06 Jun 16:39
933e2cc
Compare
Choose a tag to compare

Changed

  • Fixed partial integer parser to correct return negative values.

Lexical-Core Version 0.8.5 Release

18 May 20:02
Compare
Choose a tag to compare

Changed

  • Fixed numeric overflow bug causing panic (should explicitly wrap) in dragonbox algorithm's umul192_lower128.
  • Fixed new warnings in nightly clippy and fmt lints.
  • Fixed comprehensive test suites due to new clap versions.
  • Disabled powerpc64le checks due to bugs in workflow.

Lexical-Core Version 0.8.4 Release

15 Mar 18:56
Compare
Choose a tag to compare

Updated the algorithms used in float writing to use the latest improvements to dragonbox. The resulting code is more compact, and should compile faster due to not requiring static table generation during compilation.

Lexical-Core Version 0.8.3 Release

11 Mar 19:32
Compare
Choose a tag to compare

Numerous bug fixes and minor feature additions.

  • Added support for -Zmiri-tag-raw-pointers in miri correctness checks.
  • Added the documented functions format_error and format_is_valid to determine if a format packed struct is valid, since the previous checks relied on undocumented behavior.
  • Added from_radix to ParseFloatOptions and WriteFloatOptions, to simplify creating the default options with a different radix.
  • Fixed no_std in lexical-parse-float when default features are disabled.
  • Fixed issue in parsing integers and floats with the power-of-two feature enabled for radixes 16 and 32.