Skip to content

cleanup: sync with FRESCO and refresh -O3 benchmarks#12

Merged
perazz merged 1 commit into
mainfrom
cleanup/fresco-sync-and-benches
May 27, 2026
Merged

cleanup: sync with FRESCO and refresh -O3 benchmarks#12
perazz merged 1 commit into
mainfrom
cleanup/fresco-sync-and-benches

Conversation

@perazz

@perazz perazz commented May 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • Sync src/fast_float_module.F90 with the FRESCO upstream fast_float_module.F90. Adds the iso_fortran_env standard-kind re-exports, updates PRESET_FORTRAN to also enable FMT_ALLOW_PLUS (so it matches the default Fortran free-format read, which accepts a leading +), and adds FMT_SKIP_WS/FMT_ALLOW_PLUS support to parse_i64/parse_i32.
  • For the integer-parse options API, expose four specifics per generic (pure/std x without/with opts) instead of FRESCO's single optional :: o dummy. This is functionally equivalent for callers but works around a gfortran-15.x miscompile that returns present(o) == .true. inside a non-elemental wrapper when the caller did not supply o, leading to a bad dereference.
  • Re-run benchmarks on the latest revision built with -O3 only (no -flto). Replace the result tables in README.md and doc/mainpage.md, sorted by descending Mfloat/s, and normalize the touched files to LF line endings.

Test plan

  • fpm test check --profile release — 23/23 pass (includes a new integer-opts test exercising FMT_SKIP_WS + FMT_ALLOW_PLUS via PRESET_FORTRAN).
  • ./run_benchmarks.sh 10 — completes end-to-end, numbers used to populate the docs.

Sync src/fast_float_module.F90 with the FRESCO upstream
(src/core/io/fast_float_module.F90), byte-for-byte:
- Add iso_fortran_env standard-kind re-exports.
- PRESET_FORTRAN now also enables FMT_ALLOW_PLUS, matching the default
  Fortran free-format read which accepts a leading '+' sign.
- Integer parsing (parse_i64/parse_i32) accepts a parse_options
  argument: with FMT_SKIP_WS leading whitespace is skipped, with
  FMT_ALLOW_PLUS a leading '+' is accepted.

Add a focused test for the new integer-opts path via PRESET_FORTRAN.

Re-run benchmarks on the latest revision with -O3 only (no -flto),
replace the result tables in README.md and doc/mainpage.md sorted by
descending Mfloat/s, label fastfloat as "fastfloat (C++)" for clarity
alongside the C entries, and normalize the touched files to LF line
endings.
@perazz
perazz force-pushed the cleanup/fresco-sync-and-benches branch from 1256064 to 2a90e89 Compare May 27, 2026 07:39
@perazz
perazz merged commit 195e47d into main May 27, 2026
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant