1434 Commits

Author SHA1 Message Date
HedgehogInTheCPP
6bafea0436
Merge branch 'fastfloat:main' into main 2026-08-12 17:52:03 +03:00
Daniel Lemire
a1f63a883d
Merge pull request #404 from latent-9/docs/fix-strtod-typo
docs: fix strtod function name in README
2026-08-08 15:48:33 -04:00
latent-9
37fb7d73da
docs: fix strtod function name in README 2026-08-09 00:06:35 +12:00
IRainman
b73cda56f3 * small cleanup for the long path 2026-08-06 20:58:51 +03:00
IRainman
068e36510b lindt unfck 2026-08-02 19:52:10 +03:00
IRainman
5721996a33 Merge branch 'main' of https://github.com/fastfloat/fast_float 2026-07-19 01:08:18 +03:00
Daniel Lemire
f6df0f2917
Merge pull request #398 from redis-performance/exp062-063-combo
Enable the 4-digit SWAR follow-up on GCC + skip the rounding-mode probe for long mantissas
2026-07-13 15:13:16 -04:00
Daniel Lemire
11c390b4dc
Merge pull request #396 from fastfloat/dependabot/github_actions/github-actions-640176b5ab
Bump actions/checkout from 6 to 7 in the github-actions group across 1 directory
2026-07-13 09:09:20 -04:00
dependabot[bot]
1fa146ed1d
Bump actions/checkout in the github-actions group across 1 directory
Bumps the github-actions group with 1 update in the / directory: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-13 00:06:02 +00:00
Daniel Lemire
ce25f0d195
Remove Stars section from README
Removed the Stars section and related chart from README.
2026-07-10 09:20:48 -04:00
IRainman
7b9159ae51 * signed/unsigned mismatch fix. 2026-07-07 16:37:17 +03:00
IRainman
e1bc8fc297 * cleanup and slightly optimize slower path. 2026-07-07 16:15:21 +03:00
IRainman
b69cd828b2 Merge branch 'main' of https://github.com/IRainman/fast_float 2026-07-07 10:30:01 +03:00
IRainman
97368a033d * cleanup and optimize more. 2026-07-07 10:29:54 +03:00
HedgehogInTheCPP
b87a72e104
Add CI badges for Visual Studio 2018 workflows 2026-07-06 23:36:03 +03:00
IRainman
8646b4fd97 # lin
t unfck
2026-07-06 23:05:18 +03:00
IRainman
5324d7c5d7 * added crutch for compilers that do not properly support constexpr if 2026-07-06 22:49:21 +03:00
IRainman
b3895bd250 # cleanup 2026-07-06 22:27:41 +03:00
IRainman
b6c92139d7 # cleanup 2026-07-06 22:12:02 +03:00
IRainman
a7a783c8c8 # compilation fix after renaming 2026-07-06 21:19:24 +03:00
IRainman
79ef21000b # cleanup 2026-07-06 20:56:27 +03:00
IRainman
d949b3551c Merge branch 'main' of https://github.com/IRainman/fast_float 2026-07-06 16:54:42 +03:00
IRainman
85c9f84fc4 * copy-past cleanup. 2026-07-06 16:54:34 +03:00
HedgehogInTheCPP
a08db83e13
Merge pull request #22 from IRainman/dependabot/github_actions/github-actions-640176b5ab
Bump actions/checkout from 6 to 7 in the github-actions group across 1 directory
2026-07-06 16:11:23 +03:00
dependabot[bot]
6859c24a55
Bump actions/checkout in the github-actions group across 1 directory
Bumps the github-actions group with 1 update in the / directory: [actions/checkout](https://github.com/actions/checkout).


Updates `actions/checkout` from 6 to 7
- [Release notes](https://github.com/actions/checkout/releases)
- [Commits](https://github.com/actions/checkout/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-07-06 02:14:08 +00:00
IRainman
fa48089012 * const fixes for merged code. 2026-07-05 22:13:55 +03:00
IRainman
72d3f6c1de * type usage fix in merged code 2026-07-05 22:00:35 +03:00
IRainman
cd4aafd2f6 # alignment next step performance: original now perform my program test for 133704ms and my fork give more significant performance improve than before: 105259ms. 2026-07-05 20:49:18 +03:00
IRainman
eef7133edc Merge branch 'main' of https://github.com/fastfloat/fast_float 2026-07-05 20:14:17 +03:00
fcostaoliveira
46b2fbaabb Reconcile redis-perf/optim: content superseded by upstream #381/#382/#387
EXP-050/052/053 were upstreamed in final form via #381 (integer-scan unroll)
and #382 (4-digit follow-up, clang-gated); the #387 span-elision restructure
then rewrote the surrounding code. This merge carries the old branch history
while the tree = upstream/main (8.2.7) + EXP-062 (ungate 4-digit SWAR on gcc)
+ EXP-063 (mantissa bound before rounds_to_nearest probe).

NOTE: EXP-052's 2x unroll of loop_parse_if_eight_digits was never upstreamed
and is dropped here pending post-#387 revalidation (see EXPERIMENTS.md).
2026-07-03 14:44:24 +01:00
fcostaoliveira
5082489e35 EXP-063: test the mode-independent mantissa bound before the rounds_to_nearest probe 2026-07-03 14:34:47 +01:00
fcostaoliveira
f4f36e04f7 EXP-062: enable the 4-digit SWAR fraction follow-up on all compilers (drop __clang__ gate) 2026-07-03 14:34:47 +01:00
Daniel Lemire
8ec5d236e2
Merge pull request #395 from sahvx655-wq/is-space-signed-compare
guard is_space against negative signed code units
2026-06-18 16:33:25 -04:00
sahvx655-wq
c539b5399c guard is_space against negative signed code units 2026-06-18 19:51:56 +05:30
Daniel Lemire
34164f547b 8.2.10 v8.2.10 2026-06-14 09:52:47 -04:00
Daniel Lemire
4eec7bec38
Merge pull request #394 from fastfloat/int-overflow-simdjson-approach
Int overflow check with a faster approach
2026-06-14 09:52:09 -04:00
Daniel Lemire
fd970ab05e updating visual studio 2026-06-13 21:41:53 -04:00
Daniel Lemire
a7249f86ed replace checked re-parse with O(1) simdjson-style overflow check
The previous commit detects multi-wrap u64 overflow at the max_digits
boundary by re-parsing the digits through a checked multiply-add loop
(O(max_digits)). Replace that with the constant-time check used in
simdjson: the leading digit plus a single threshold comparison.

For a max_digits-length value, min_safe_u64(base) == base^(max_digits-1)
is the smallest such value and also the width of each leading-digit band
[d*ms, (d+1)*ms). Since that width is < 2^64, the only band that can
straddle 2^64 is d == dmax (the largest leading digit that still fits),
and there it straddles at most once, so a single threshold dmax*ms
separates wrapped from non-wrapped values. A leading digit above dmax
always overflows; below dmax always fits. dmax and the threshold derive
from the existing min_safe_u64 table, so no new tables are needed and
dmax*ms cannot itself overflow.

Add a programmatic, self-verifying test for parse_int_string overflow
detection covering bases 2..36, complementing the hand-picked strings
added earlier. Every generated input is cross-checked against an
independent trusted oracle (a plain 64-bit checked multiply-add); on
success the parsed value is also compared exactly and full consumption
of the input is asserted.

Per base it exercises:
  - an exact-boundary sweep of the 64 values straddling 2^64
    (UINT64_MAX-31 .. 2^64+31), built by walking the digit string;
  - UINT64_MAX, 2^64 and the all-max-digit value, each also with
    leading zeros;
  - random max_digits-length values across every leading digit, with
    the heaviest sampling on the lead == dmax band that straddles 2^64,
    and full coverage of lead > dmax (the multi-wrap region the naive
    min_safe check accepted by mistake);
  - max_digits-1 (never overflows) and max_digits+1 (always overflows).
A small signed (int64_t) section checks the exact INT64_MIN/INT64_MAX
limits round-trip and that INT64_MAX+1 / INT64_MIN-1 are rejected in
every base.
2026-06-13 21:34:34 -04:00
sahvx655-wq
632cc97b5b detect uint64 overflow that wraps past min_safe in parse_int_string 2026-06-13 21:21:29 -04:00
Daniel Lemire
8234a89623 8.2.9 v8.2.9 2026-06-11 20:29:24 -04:00
Daniel Lemire
0dce102cb4
Merge pull request #391 from sahvx655-wq/int-fast-path-wide-units
reject non-digit wide code units in uint8/uint16 integer fast path
2026-06-11 20:28:10 -04:00
Daniel Lemire
30868f8734
Merge pull request #392 from biojppm/fix/gcc9_compile_error
Fix compile error with gcc 9: use of [[unlikely]]
2026-06-11 09:37:38 -04:00
Joao Paulo Magalhaes
8e6edc8ad2
Fix compile error with gcc 9: use of [[unlikely]] 2026-06-10 15:37:26 +01:00
sahvx655-wq
82882b237d gate uint8/uint16 base-10 fast paths to single-byte code units 2026-06-10 12:12:34 +05:30
Daniel Lemire
937198691a
Merge pull request #389 from correctmost/cm/remove-unreachable-return
Remove an unreachable return statement
2026-06-09 11:18:15 -04:00
Daniel Lemire
0352ba3fef
Merge pull request #390 from correctmost/cm/remove-unreachable-block
Remove an else if statement that is always false
2026-06-09 11:17:35 -04:00
correctmost
6ae691372f Remove an else if statement that is always false
Commit b334317d added the same std::isnan(v) check as an earlier
condition.

The warning was reported by cppcheck.
2026-06-09 03:48:54 -04:00
correctmost
8fe7a9405b Remove an unreachable return statement
The redundant statement was reported by cppcheck.
2026-06-09 03:37:58 -04:00
Daniel Lemire
e8ec8e8f34 8.2.8 v8.2.8 2026-06-08 15:29:36 -04:00
Daniel Lemire
c05156ff60
Merge pull request #388 from biojppm/fix/clang_compile_error
Fix compile error in clang<10: fails on pragma -Wc++20-extensions
2026-06-08 15:28:45 -04:00