NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #662 most downloaded on crates.io
Lexical, to- and from-string conversion routines.
Last release 1 years ago
21 Sep 2025
Ships unpredictably
gaps range from 1 weeks to 2.3 years
Most releases are documented
notes for 24 of 40 stable releases
3 versions withdrawn
withdrawn after publishing
8 years old
43 releases · first in 2018
Increment high-level lexical version for release.
Increment high-level lexical version for release.
Fixes #191 . Fixes apache/datafusion#13686
Fixes #191.
Fixes apache/datafusion#13686
i64 and not 20 (#191).One column per quarter.
Improved performance of number formatting with non-decimal radices ( #169 ).
Higher performance when parsing floats with digit separators.
no_integer_leading_zeros was enabled.Error::InvalidDigit.Regressions where parsing digit separators without the compact panicked.
compact panicked.Added fuzzing and miri code safety analysis to our CI pipelines.
alloc in no_std ennvironments without the write feature.MaybeUninit.-0.0 with a leading -.lexical-util and clearly documented the preconditions to use safely.lexical-write-integer and clearly documented the preconditions to use safely._unchecked API methods, since the performance benefits are dubious and it makes safety invariant checking much harder.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.Fixed the partial integer parser to correctly return negative values if parsing partial input.
Added support for -Zmiri-tag-raw-pointers in miri correctness checks.
-Zmiri-tag-raw-pointers in miri correctness checks.format_error and format_is_valid to determine if a format packed struct is valid, since the previous checks relied on undocumented behavior.from_radix to ParseFloatOptions and WriteFloatOptions, to simplify creating the default options with a different radix.no_std in lexical-parse-float when default features are disabled.power-of-two feature enabled for radixes 16 and 32.Reproduce all dependent licenses in lexical, and document extensively what features are dependent on what licensing terms.
This is a very large release that involved a full re-write from the ground-up.
This is a very large release that involved a full re-write from the ground-up.
parse_with_options, parse_partial_with_optionswrite_with_options.required_exponent_notation flag to NumberFormat.power-of-two feature, for conversion to and from strings with power-of-two bases.compact feature, optimized for binary size rather than performance.write_format, write_radix, and similar functions.parse_format, parse_radix, and similar functions.dtoa feature.rounding feature.Downgraded rand to fix proptests.
slice::sort is not present in no_std.libm which enables stable no_std use.Fixed issue with integer::BITS conflicting with new compilers.
integer::BITS conflicting with new compilers.Changed NumberFormat to use 64-bit flags.
NO_INTEGER_LEADING_ZEROS and NO_FLOAT_LEADING_ZEROS NumberFormat flags.InvalidLeadingZeros to ErrorCode enum.validate_no_leading_zeros to reject invalid inputs.Updated the format bitflags to make matches more efficient, allowing jumptables to be used for most situations.
Fixed a regression in parsing special values.
Added format feature to control parsing integers and floats from number specifications.
format feature to control parsing integers and floats from number specifications.NumberFormat bitflags to control Number format specifications. These flags control how a number is parsed, including enabling the use of digit separators, requiring integer or fraction digits, and more.NumberFormat (RUST_STRING, PYTHON_LITERAL) to avoid compiling formats when not needed.FromLexicalFormat and FromLexicalLossyFormat traits with the format feature, which enable you to specify the number format during parsing.ErrorCode to signify more parse failures.ErrorCode::MissingFraction to be ErrorCode::MissingMantissa, to differentiate between missing integers, missing fractions, and missing significant digits (mantissa).RawFloatState and FloatState and replaced it logically with FastDataInterface and SlowDataInterface, allowing format-defined parsing.Updated arrayvec and static-assertions versions.
arrayvec and static-assertions versions.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fixed a bug causing compilation issues on MSVC.
Removed panic handler, allowing use in no_std environments.
no_std environments.Added get/set_exponent_default_char, get/set_exponent_backup_char, and get/set_float_rounding, to allow validation logic for config variables.
get/set_exponent_default_char, get/set_exponent_backup_char, and get/set_float_rounding, to allow validation logic for config variables.write* functions, which replace the *toa methods.parse* functions, which replace the ato* methods.EXPONENT_DEFAULT_CHAR, EXPONENT_BACKUP_CHAR, and FLOAT_ROUNDING.ato* to *toa, since these were for compatibility with the C-API and were therefore redundant.lexical-capi crate.Nothing published for this version
Added ffi::Result, an FFI-compatible tagged union, to store results for FFI-compatible functions.
MAX_*_SIZE_BASE10 constants, to determine the maximum size in bytes a formatted type will take in base 10.ato*_partial functions, which parse until an invalid digit is found, returning the value and number of processed digits.Underflow, to detect numerical underflow, EmptyFraction, to detect floats with an empty integer and fraction components, and EmptyExponent, to detect floats with no value following the exponent character.std::result::Result.ffi module.*_slice from functions in the public API, since there is no naming conflict with FFI code.*_ffi and *_FFI from public functions and constants.__udivmodti4).try_parse* has been replaced with parse*.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fixed a bug (issue #20) leading to incorrect float parsing (1 ULP error) for slow-path algorithms containing floats with a trailing 0-digit in the fra
edition keyword.Write::write_fmt rather than to_string to avoid heap allocation leading to misleading results (credit to @RazrFalcon).Comprehensive continuous integration unittests for numerous platforms, based off the trust templates.
Backwards compatible support for Rustc 1.24.0.
parse_partial* parsers, which parse until an invalid digit is found, returning the value and number of processed digits.&arr[idx] creates a local copy in Rust versions before 1.28.0, creating a dangling reference after the scope ends. For more details, see cached_grisu_power in /lexical-core/src/ftoa/grisu2.rs .FromBytes, FromBytesLossy, and ToBytes to FromLexical, FromLexicalLossy, and ToLexical.ToLexical from to_bytes and to_bytes_radix to to_lexical and to_lexical_radix to avoid conflict with unstable feature int_to_from_bytes.FromLexical from from_bytes, from_bytes_radix, try_from_bytes, and try_from_bytes_radix to from_lexical, from_lexical_radix, try_from_lexical, and try_from_lexical_radix to avoid conflict with unstable feature int_to_from_bytes.FromLexicalLossy from from_bytes_lossy, from_bytes_lossy_radix, try_from_bytes_lossy, and try_from_bytes_lossy_radix to from_lexical_lossy, from_lexical_lossy_radix, try_from_lexical_lossy, and try_from_lexical_lossy_radix to avoid conflict with unstable feature int_to_from_bytes.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →