PackageTrack
Sign in Get early access

lexical-parse-float

Efficient parsing of floats from strings.

1.0.6 117M downloads/mo #731 most downloaded on crates.io Alexhuszagh/rust-lexical

What this package is like to depend on

Last release 11 months ago

21 Sep 2025

Ships unpredictably

gaps range from 1 weeks to 2.3 years

Nearly every release is documented

notes for 10 of 10 stable releases

Nothing withdrawn

no release was ever pulled

5 years old

10 releases · first in 2021

1 release in the last 12 months

see the full history below

Release timeline

10 releases · Sep 2021 to Sep 2025
2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 10
  1. 1.0.6 21 Sep 2025
    Release notes

    Increment high-level lexical version for release.

    Open source →
  2. 1.0.5 08 Dec 2024
    Release notes

    Fixed

    • Only require 19 digits for writing i64 and not 20 (#191).
    Open source →
    Release notes Open source →
    Release notes

    Fixed

    • Only require 19 digits for writing i64 and not 20 (#191).
    Open source →
  3. 1.0.3 06 Dec 2024
    Release notes

    Changed

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

    Fixed

    • Inaccurate number formatting with non-decimal radices (#169).
    Open source →
    Release notes

    Increment versions for release.

    Open source →
    Release notes

    Changed

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

    Fixed

    • Inaccurate number formatting with non-decimal radices (#169).
    Open source →
  4. 1.0.2 25 Sep 2024
    Release notes

    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.
    Open source →
  5. 1.0.1 15 Sep 2024
    Release notes

    Fixed

    • A correctness regression.
    • Regressions where parsing digit separators without the compact panicked.
    Open source →
  6. 1.0.0 14 Sep 2024
    Release notes

    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.
    Open source →
  7. 0.8.5 18 May 2022
    Release notes

    Changed

    • Fixed the partial integer parser to correctly return negative values if parsing partial input.
    Open source →
  8. 0.8.3 10 Mar 2022
    Release notes

    Added

    • 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.

    Changed

    • 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.
    Open source →
  9. 0.8.2 04 Oct 2021
    Release notes

    Changed

    • Reproduce all dependent licenses in lexical, and document extensively what features are dependent on what licensing terms.
    Open source →
  10. 0.8.0 03 Sep 2021
    Release notes

    This is a very large release that involved a full re-write from the ground-up.

    Added

    • Added the Options API
      • ParseFloatOptions
      • ParseIntegerOptions
      • WriteFloatOptions
      • WriteIntegerOptions
    • Added parse_with_options, parse_partial_with_options
    • Added write_with_options.
    • Added a faster float writer and parser for power of 2 radixes.
    • Added the required_exponent_notation flag to NumberFormat.
    • Added the power-of-two feature, for conversion to and from strings with power-of-two bases.
    • Added the compact feature, optimized for binary size rather than performance.
    • Added extensive documentation on benchmarks, algorithms used, and internal implementation details.

    Changed

    • Made the Eisel-Lemire algorithm the default float-parser, leading to substantial improvements in performance.
    • Made Dragonbox the default float writer.
    • Removed pre-computed float tables of powers-of-two, and recreated stable powers of 2 through bit manipulations.
    • Refactored all numeric conversions into separate crates, using workspaces.
    • Improved the algorithms to write and parse 128-bit integers, using faster division and multiplication algorithms.
    • Updated the MSRV to 1.51.0.
    • Updated the benchmarks to note the significant algorithm changes.
    • Added automatic formatting via Rustfmt, linting via Clippy, as well as increased documentation of safety guarantees.
    • Re-wrote NumberFormat to allow more extensive configuration and use const generics.
    • Added support for base prefixes and suffixes.
    • Reduced static storage required for extended-float algorithms.
    • Fixed a bug with trailing digit separators in special values.
    • Updated the fuzz handlers and conformance tests.
    • Simplified the big-integer arithmetic, improving performance and simplifying maintenance for float parsing algorithms.

    Removed

    • Remove the write_format, write_radix, and similar functions.
    • Remove the parse_format, parse_radix, and similar functions.
    • Removed the dtoa feature.
    • Removed the rounding feature.
    • Removed the lexical-capi. Existing, high-performance C/C++ libraries exist, so it's no longer practical.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive