From 810a75030676054ac6512ea5c06a9e79e3bd5330 Mon Sep 17 00:00:00 2001 From: dankmeme01 <42031238+dankmeme01@users.noreply.github.com> Date: Wed, 26 Feb 2025 12:18:16 +0100 Subject: [PATCH 01/14] fix /permissive- flag casuing a compile error on clang for windows --- CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 08b417a..fb23f85 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,7 +56,10 @@ if(FASTFLOAT_SANITIZE) endif() endif() if(MSVC_VERSION GREATER 1910) - target_compile_options(fast_float INTERFACE /permissive-) + # /permissive- will only work on MSVC or clang-cl, clang will not accept it. + if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") + target_compile_options(fast_float INTERFACE /permissive-) + endif() endif() From b7b17e6cac5ba03408293a3b9b03eacb918422e8 Mon Sep 17 00:00:00 2001 From: dankmeme01 <42031238+dankmeme01@users.noreply.github.com> Date: Wed, 26 Feb 2025 14:49:12 +0100 Subject: [PATCH 02/14] improve check for /permissive- flag --- CMakeLists.txt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fb23f85..1fd257e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,13 +55,14 @@ if(FASTFLOAT_SANITIZE) target_link_libraries(fast_float INTERFACE -fuse-ld=gold) endif() endif() -if(MSVC_VERSION GREATER 1910) - # /permissive- will only work on MSVC or clang-cl, clang will not accept it. - if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") - target_compile_options(fast_float INTERFACE /permissive-) - endif() -endif() +include(CheckCXXCompilerFlag) +unset(FASTFLOAT_COMPILER_SUPPORTS_PERMISSIVE) +CHECK_CXX_COMPILER_FLAG(/permissive- FASTFLOAT_COMPILER_SUPPORTS_PERMISSIVE) + +if(FASTFLOAT_COMPILER_SUPPORTS_PERMISSIVE) + target_compile_options(fast_float INTERFACE /permissive-) +endif() if(FASTFLOAT_INSTALL) include(CMakePackageConfigHelpers) From 864e790d2277aa89aedfd980f531664137eb9488 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Sun, 9 Mar 2025 14:27:07 -0400 Subject: [PATCH 03/14] allowing custom file parsing --- benchmarks/benchmark.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/benchmarks/benchmark.cpp b/benchmarks/benchmark.cpp index 8924694..42be62b 100644 --- a/benchmarks/benchmark.cpp +++ b/benchmarks/benchmark.cpp @@ -236,6 +236,11 @@ int main(int argc, char **argv) { << std::endl; #endif } + if(argc > 1) { + fileload(argv[1]); + return EXIT_SUCCESS; + } fileload(std::string(BENCHMARK_DATA_DIR) + "/canada.txt"); fileload(std::string(BENCHMARK_DATA_DIR) + "/mesh.txt"); + return EXIT_SUCCESS; } From 95dedd0aed265a8db79363b46c441dad17415488 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Sun, 9 Mar 2025 15:13:43 -0400 Subject: [PATCH 04/14] turning json option into macro parameter --- include/fast_float/ascii_number.h | 10 +++++----- include/fast_float/parse_number.h | 5 +++-- tests/json_fmt.cpp | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/include/fast_float/ascii_number.h b/include/fast_float/ascii_number.h index 9001016..e5d0e63 100644 --- a/include/fast_float/ascii_number.h +++ b/include/fast_float/ascii_number.h @@ -279,7 +279,7 @@ report_parse_error(UC const *p, parse_error error) { // Assuming that you use no more than 19 digits, this will // parse an ASCII string. -template +template fastfloat_really_inline FASTFLOAT_CONSTEXPR20 parsed_number_string_t parse_number_string(UC const *p, UC const *pend, parse_options_t options) noexcept { @@ -294,13 +294,13 @@ parse_number_string(UC const *p, UC const *pend, // C++17 20.19.3.(7.1) explicitly forbids '+' sign here if ((*p == UC('-')) || (uint64_t(fmt & chars_format::allow_leading_plus) && - !uint64_t(fmt & detail::basic_json_fmt) && *p == UC('+'))) { + !basic_json_fmt && *p == UC('+'))) { ++p; if (p == pend) { return report_parse_error( p, parse_error::missing_integer_or_dot_after_sign); } - if (uint64_t(fmt & detail::basic_json_fmt)) { + if (basic_json_fmt) { if (!is_integer(*p)) { // a sign must be followed by an integer return report_parse_error(p, parse_error::missing_integer_after_sign); @@ -329,7 +329,7 @@ parse_number_string(UC const *p, UC const *pend, UC const *const end_of_integer_part = p; int64_t digit_count = int64_t(end_of_integer_part - start_digits); answer.integer = span(start_digits, size_t(digit_count)); - if (uint64_t(fmt & detail::basic_json_fmt)) { + if (basic_json_fmt) { // at least 1 digit in integer part, without leading zeros if (digit_count == 0) { return report_parse_error(p, parse_error::no_digits_in_integer_part); @@ -358,7 +358,7 @@ parse_number_string(UC const *p, UC const *pend, answer.fraction = span(before, size_t(p - before)); digit_count -= exponent; } - if (uint64_t(fmt & detail::basic_json_fmt)) { + if (basic_json_fmt) { // at least 1 digit in fractional part if (has_decimal_point && exponent == 0) { return report_parse_error(p, diff --git a/include/fast_float/parse_number.h b/include/fast_float/parse_number.h index 0dbb3a1..9814254 100644 --- a/include/fast_float/parse_number.h +++ b/include/fast_float/parse_number.h @@ -304,8 +304,9 @@ from_chars_float_advanced(UC const *first, UC const *last, T &value, answer.ptr = first; return answer; } - parsed_number_string_t pns = - parse_number_string(first, last, options); + parsed_number_string_t pns = uint64_t(fmt & detail::basic_json_fmt) ? + parse_number_string(first, last, options) : + parse_number_string(first, last, options); if (!pns.valid) { if (uint64_t(fmt & chars_format::no_infnan)) { answer.ec = std::errc::invalid_argument; diff --git a/tests/json_fmt.cpp b/tests/json_fmt.cpp index f04207a..1ba0d5a 100644 --- a/tests/json_fmt.cpp +++ b/tests/json_fmt.cpp @@ -131,7 +131,7 @@ int main() { for (std::size_t i = 0; i < reject.size(); ++i) { auto const &f = reject[i].input; auto const &expected_reason = reject[i].reason; - auto answer = fast_float::parse_number_string( + auto answer = fast_float::parse_number_string( f.data(), f.data() + f.size(), fast_float::parse_options( fast_float::chars_format::json | From 6f0049a2e76fb9f76895907ba20f7911928a54ec Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Sun, 9 Mar 2025 15:14:52 -0400 Subject: [PATCH 05/14] lint --- benchmarks/benchmark.cpp | 2 +- include/fast_float/ascii_number.h | 5 ++--- include/fast_float/parse_number.h | 7 ++++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/benchmarks/benchmark.cpp b/benchmarks/benchmark.cpp index 42be62b..5645da2 100644 --- a/benchmarks/benchmark.cpp +++ b/benchmarks/benchmark.cpp @@ -236,7 +236,7 @@ int main(int argc, char **argv) { << std::endl; #endif } - if(argc > 1) { + if (argc > 1) { fileload(argv[1]); return EXIT_SUCCESS; } diff --git a/include/fast_float/ascii_number.h b/include/fast_float/ascii_number.h index e5d0e63..81c986a 100644 --- a/include/fast_float/ascii_number.h +++ b/include/fast_float/ascii_number.h @@ -292,9 +292,8 @@ parse_number_string(UC const *p, UC const *pend, // assume p < pend, so dereference without checks; answer.negative = (*p == UC('-')); // C++17 20.19.3.(7.1) explicitly forbids '+' sign here - if ((*p == UC('-')) || - (uint64_t(fmt & chars_format::allow_leading_plus) && - !basic_json_fmt && *p == UC('+'))) { + if ((*p == UC('-')) || (uint64_t(fmt & chars_format::allow_leading_plus) && + !basic_json_fmt && *p == UC('+'))) { ++p; if (p == pend) { return report_parse_error( diff --git a/include/fast_float/parse_number.h b/include/fast_float/parse_number.h index 9814254..e74c478 100644 --- a/include/fast_float/parse_number.h +++ b/include/fast_float/parse_number.h @@ -304,9 +304,10 @@ from_chars_float_advanced(UC const *first, UC const *last, T &value, answer.ptr = first; return answer; } - parsed_number_string_t pns = uint64_t(fmt & detail::basic_json_fmt) ? - parse_number_string(first, last, options) : - parse_number_string(first, last, options); + parsed_number_string_t pns = + uint64_t(fmt & detail::basic_json_fmt) + ? parse_number_string(first, last, options) + : parse_number_string(first, last, options); if (!pns.valid) { if (uint64_t(fmt & chars_format::no_infnan)) { answer.ec = std::errc::invalid_argument; From e720395b617b05e59e1be18011671cd03cb95bb0 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Sun, 9 Mar 2025 15:31:11 -0400 Subject: [PATCH 06/14] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 3eb540b..f975855 100644 --- a/README.md +++ b/README.md @@ -508,6 +508,14 @@ in some cases: sudo ./build/benchmarks/realbenchmark ``` +If you have a text file containing one number per line (`myfile.txt`), you can run a benchmark over it like so: +``` +cmake -B build -D FASTFLOAT_BENCHMARKS=ON +cmake --build build +./build/benchmarks/realbenchmark myfile.txt +``` + + ## Packages * The fast_float library is part of the [Conan package From 0305a7d336d16a474bcb7eadd3cbe01f434f29cb Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Sun, 9 Mar 2025 15:31:45 -0400 Subject: [PATCH 07/14] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f975855..0ce6359 100644 --- a/README.md +++ b/README.md @@ -429,7 +429,7 @@ abseil : 430.45 MB/s (+/- 2.2 %) 20.52 Mfl fastfloat : 1042.38 MB/s (+/- 9.9 %) 49.68 Mfloat/s ``` -See the [Benchmarking](#benchmarking) Section for instructions on how to run our benchmarks. +See the [Benchmarking](#benchmarking) section for instructions on how to run our benchmarks. ## Video From ba92c889018aaa58e5319a8ccea80c0458a4f94b Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Sun, 9 Mar 2025 15:33:11 -0400 Subject: [PATCH 08/14] Update pull_request_template.md --- .github/pull_request_template.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 9a4f54c..2620e2c 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,4 +1,5 @@ -We have benchmarks, please consider running them: see our README for details. +We have benchmarks, please consider running them: [see our README for details](https://github.com/fastfloat/fast_float/blob/main/README.md#benchmarking). We expect you to run our benchmarks if you make claims with respect to the performance. + Our CI tests check formatting automating. If such a test fails, please consider running the bash script: From b29208f93d73863358bdb1ca8d7c29ff3ce28a25 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Sun, 9 Mar 2025 17:10:55 -0400 Subject: [PATCH 09/14] adding FASTFLOAT_IF_CONSTEXPR17 --- include/fast_float/ascii_number.h | 6 +++--- include/fast_float/constexpr_feature_detect.h | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/fast_float/ascii_number.h b/include/fast_float/ascii_number.h index 81c986a..dea1efb 100644 --- a/include/fast_float/ascii_number.h +++ b/include/fast_float/ascii_number.h @@ -299,7 +299,7 @@ parse_number_string(UC const *p, UC const *pend, return report_parse_error( p, parse_error::missing_integer_or_dot_after_sign); } - if (basic_json_fmt) { + FASTFLOAT_IF_CONSTEXPR17(basic_json_fmt) { if (!is_integer(*p)) { // a sign must be followed by an integer return report_parse_error(p, parse_error::missing_integer_after_sign); @@ -328,7 +328,7 @@ parse_number_string(UC const *p, UC const *pend, UC const *const end_of_integer_part = p; int64_t digit_count = int64_t(end_of_integer_part - start_digits); answer.integer = span(start_digits, size_t(digit_count)); - if (basic_json_fmt) { + FASTFLOAT_IF_CONSTEXPR17(basic_json_fmt) { // at least 1 digit in integer part, without leading zeros if (digit_count == 0) { return report_parse_error(p, parse_error::no_digits_in_integer_part); @@ -357,7 +357,7 @@ parse_number_string(UC const *p, UC const *pend, answer.fraction = span(before, size_t(p - before)); digit_count -= exponent; } - if (basic_json_fmt) { + FASTFLOAT_IF_CONSTEXPR17(basic_json_fmt) { // at least 1 digit in fractional part if (has_decimal_point && exponent == 0) { return report_parse_error(p, diff --git a/include/fast_float/constexpr_feature_detect.h b/include/fast_float/constexpr_feature_detect.h index 648b55d..6751afe 100644 --- a/include/fast_float/constexpr_feature_detect.h +++ b/include/fast_float/constexpr_feature_detect.h @@ -27,6 +27,12 @@ #define FASTFLOAT_HAS_IS_CONSTANT_EVALUATED 0 #endif +#if defined(__cpp_if_constexpr) && __cpp_if_constexpr >= 201606L +#define FASTFLOAT_IF_CONSTEXPR17(x) if constexpr (x) +#else +#define FASTFLOAT_IF_CONSTEXPR17(x) if (x) +#endif + // Testing for relevant C++20 constexpr library features #if FASTFLOAT_HAS_IS_CONSTANT_EVALUATED && FASTFLOAT_HAS_BIT_CAST && \ defined(__cpp_lib_constexpr_algorithms) && \ From c6732cd28bb856568749d3cd73305ed32191272e Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Mon, 10 Mar 2025 09:02:38 -0400 Subject: [PATCH 10/14] lint --- include/fast_float/ascii_number.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/fast_float/ascii_number.h b/include/fast_float/ascii_number.h index dea1efb..97f0681 100644 --- a/include/fast_float/ascii_number.h +++ b/include/fast_float/ascii_number.h @@ -304,7 +304,8 @@ parse_number_string(UC const *p, UC const *pend, return report_parse_error(p, parse_error::missing_integer_after_sign); } - } else { + } + else { if (!is_integer(*p) && (*p != decimal_point)) { // a sign must be followed by an integer or the dot @@ -363,8 +364,8 @@ parse_number_string(UC const *p, UC const *pend, return report_parse_error(p, parse_error::no_digits_in_fractional_part); } - } else if (digit_count == - 0) { // we must have encountered at least one integer! + } + else if (digit_count == 0) { // we must have encountered at least one integer! return report_parse_error(p, parse_error::no_digits_in_mantissa); } int64_t exp_number = 0; // explicit exponential part From 1bf70101536d37fa9954cc4f03fd0903d045a9f3 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Mon, 10 Mar 2025 09:04:05 -0400 Subject: [PATCH 11/14] v8.0.1 --- CMakeLists.txt | 2 +- README.md | 6 +++--- include/fast_float/float_common.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1fd257e..3b051a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.9) -project(fast_float VERSION 8.0.0 LANGUAGES CXX) +project(fast_float VERSION 8.0.1 LANGUAGES CXX) set(FASTFLOAT_CXX_STANDARD 11 CACHE STRING "the C++ standard to use for fastfloat") set(CMAKE_CXX_STANDARD ${FASTFLOAT_CXX_STANDARD}) option(FASTFLOAT_TEST "Enable tests" OFF) diff --git a/README.md b/README.md index 0ce6359..6e5e9d0 100644 --- a/README.md +++ b/README.md @@ -455,7 +455,7 @@ sufficiently recent version of CMake (3.11 or better at least): FetchContent_Declare( fast_float GIT_REPOSITORY https://github.com/fastfloat/fast_float.git - GIT_TAG tags/v8.0.0 + GIT_TAG tags/v8.0.1 GIT_SHALLOW TRUE) FetchContent_MakeAvailable(fast_float) @@ -471,7 +471,7 @@ You may also use [CPM](https://github.com/cpm-cmake/CPM.cmake), like so: CPMAddPackage( NAME fast_float GITHUB_REPOSITORY "fastfloat/fast_float" - GIT_TAG v8.0.0) + GIT_TAG v8.0.1) ``` ## Using as single header @@ -483,7 +483,7 @@ if desired as described in the command line help. You may directly download automatically generated single-header files: - + ## Benchmarking diff --git a/include/fast_float/float_common.h b/include/fast_float/float_common.h index 2d2afca..4773804 100644 --- a/include/fast_float/float_common.h +++ b/include/fast_float/float_common.h @@ -17,7 +17,7 @@ #define FASTFLOAT_VERSION_MAJOR 8 #define FASTFLOAT_VERSION_MINOR 0 -#define FASTFLOAT_VERSION_PATCH 0 +#define FASTFLOAT_VERSION_PATCH 1 #define FASTFLOAT_STRINGIZE_IMPL(x) #x #define FASTFLOAT_STRINGIZE(x) FASTFLOAT_STRINGIZE_IMPL(x) From 7597ca61aab8ca0f9e0ed92f5c403dd549559371 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Mon, 10 Mar 2025 19:44:18 -0400 Subject: [PATCH 12/14] supporting benchmarks under Windows --- .github/workflows/vs17-ci.yml | 2 +- .github/workflows/vs17-clang-ci.yml | 2 +- benchmarks/benchmark.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/vs17-ci.yml b/.github/workflows/vs17-ci.yml index 3b59805..0fe0bbd 100644 --- a/.github/workflows/vs17-ci.yml +++ b/.github/workflows/vs17-ci.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v4 - name: configure run: | - cmake -S . -B build -G "${{matrix.gen}}" -A ${{matrix.arch}} -DFASTFLOAT_TEST=ON -DCMAKE_INSTALL_PREFIX:PATH=destination + cmake -S . -B build -G "${{matrix.gen}}" -A ${{matrix.arch}} -DFASTFLOAT_BENCHMARKS=ON -DFASTFLOAT_TEST=ON -DCMAKE_INSTALL_PREFIX:PATH=destination - name: build run: | cmake --build build --verbose --config ${{matrix.cfg}} --parallel diff --git a/.github/workflows/vs17-clang-ci.yml b/.github/workflows/vs17-clang-ci.yml index 20c1dea..f7e6ba8 100644 --- a/.github/workflows/vs17-clang-ci.yml +++ b/.github/workflows/vs17-clang-ci.yml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v4 - name: Configure run: | - cmake -S . -B build -G "${{matrix.gen}}" -A ${{matrix.arch}} -T ClangCL -DFASTFLOAT_TEST=ON + cmake -S . -B build -G "${{matrix.gen}}" -A ${{matrix.arch}} -DFASTFLOAT_BENCHMARKS=ON -T ClangCL -DFASTFLOAT_TEST=ON - name: Build run: cmake --build build --config ${{matrix.cfg}} --parallel --verbose - name: Run basic tests diff --git a/benchmarks/benchmark.cpp b/benchmarks/benchmark.cpp index 5645da2..8afcbef 100644 --- a/benchmarks/benchmark.cpp +++ b/benchmarks/benchmark.cpp @@ -1,6 +1,6 @@ +#include "event_counter.h" #if defined(__linux__) || (__APPLE__ && __aarch64__) #define USING_COUNTERS -#include "event_counter.h" #endif #include #include "fast_float/fast_float.h" From c0affad8b4feffc6430a64c93d8a1549ef7ec416 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Tue, 11 Mar 2025 09:19:28 -0400 Subject: [PATCH 13/14] Update benchmark.cpp --- benchmarks/benchmark.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmarks/benchmark.cpp b/benchmarks/benchmark.cpp index 8afcbef..05f1233 100644 --- a/benchmarks/benchmark.cpp +++ b/benchmarks/benchmark.cpp @@ -1,7 +1,7 @@ -#include "event_counter.h" #if defined(__linux__) || (__APPLE__ && __aarch64__) #define USING_COUNTERS #endif +#include "event_counter.h" #include #include "fast_float/fast_float.h" #include From 50a80a73ab2ab256ba1c3bf86923ddd8b4202bc7 Mon Sep 17 00:00:00 2001 From: Daniel Lemire Date: Tue, 11 Mar 2025 09:51:53 -0400 Subject: [PATCH 14/14] v8.0.2 --- CMakeLists.txt | 2 +- README.md | 6 +++--- include/fast_float/float_common.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b051a8..8a1c9a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.9) -project(fast_float VERSION 8.0.1 LANGUAGES CXX) +project(fast_float VERSION 8.0.2 LANGUAGES CXX) set(FASTFLOAT_CXX_STANDARD 11 CACHE STRING "the C++ standard to use for fastfloat") set(CMAKE_CXX_STANDARD ${FASTFLOAT_CXX_STANDARD}) option(FASTFLOAT_TEST "Enable tests" OFF) diff --git a/README.md b/README.md index 6e5e9d0..06c30c3 100644 --- a/README.md +++ b/README.md @@ -455,7 +455,7 @@ sufficiently recent version of CMake (3.11 or better at least): FetchContent_Declare( fast_float GIT_REPOSITORY https://github.com/fastfloat/fast_float.git - GIT_TAG tags/v8.0.1 + GIT_TAG tags/v8.0.2 GIT_SHALLOW TRUE) FetchContent_MakeAvailable(fast_float) @@ -471,7 +471,7 @@ You may also use [CPM](https://github.com/cpm-cmake/CPM.cmake), like so: CPMAddPackage( NAME fast_float GITHUB_REPOSITORY "fastfloat/fast_float" - GIT_TAG v8.0.1) + GIT_TAG v8.0.2) ``` ## Using as single header @@ -483,7 +483,7 @@ if desired as described in the command line help. You may directly download automatically generated single-header files: - + ## Benchmarking diff --git a/include/fast_float/float_common.h b/include/fast_float/float_common.h index 4773804..8fd0560 100644 --- a/include/fast_float/float_common.h +++ b/include/fast_float/float_common.h @@ -17,7 +17,7 @@ #define FASTFLOAT_VERSION_MAJOR 8 #define FASTFLOAT_VERSION_MINOR 0 -#define FASTFLOAT_VERSION_PATCH 1 +#define FASTFLOAT_VERSION_PATCH 2 #define FASTFLOAT_STRINGIZE_IMPL(x) #x #define FASTFLOAT_STRINGIZE(x) FASTFLOAT_STRINGIZE_IMPL(x)