Skip to content

[pull] master from ruby:master#1120

Merged
pull[bot] merged 9 commits into
turkdevops:masterfrom
ruby:master
Jun 16, 2026
Merged

[pull] master from ruby:master#1120
pull[bot] merged 9 commits into
turkdevops:masterfrom
ruby:master

Conversation

@pull

@pull pull Bot commented Jun 16, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

byroot and others added 9 commits June 16, 2026 07:16
Contrary to Ryu, it remains correct up to 18 mantissa digits,
meaning we don't have to fallback as much to Ruby's much slower
`rb_cstr_to_dbl`.

On `canada.json`, the most number heavy benchmark, `ffp_s2d` is less
than 5% of total runtime. Most of the time is actually sent parsing,
not decoding.

There is a more complete C99 port of `fast_float` at
https://github.com/kolemannix/ffc.h which also does parsing and
could be worth considering, however it might make it much harder
to detect when we're outside the safe range and to fallback,
so unclear if it would be a win.

Credit to Tilo Sloboda for the C99 port (sligthly reworked).

```
== Parsing citm_catalog.json (500124 bytes)
ruby 4.0.5 (2026-05-20 revision ruby/json@64336ffd0e) +YJIT +PRISM [arm64-darwin25]
Warming up --------------------------------------
               after    73.000 i/100ms
Calculating -------------------------------------
               after    733.301 (± 1.0%) i/s    (1.36 ms/i) -      3.723k in   5.077044s

Comparison:
before:      716.8 i/s
 after:      733.3 i/s - 1.02x  faster

== Parsing float parsing (2090303 bytes)
ruby 4.0.5 (2026-05-20 revision ruby/json@64336ffd0e) +YJIT +PRISM [arm64-darwin25]
Warming up --------------------------------------
               after    35.000 i/100ms
Calculating -------------------------------------
               after    353.130 (± 0.3%) i/s    (2.83 ms/i) -      1.785k in   5.054791s

Comparison:
before:      323.1 i/s
 after:      353.1 i/s - 1.09x  faster
```

ruby/json@4185ef1a7b
These examples assert that RubyGems' extension builder appends `-jN` per
gem, but when run under a parent make that already passes `-j` (e.g.
ruby/ruby's `make test-bundler-parallel`) the builder treats the
inherited MAKEFLAGS as "jobs already requested" and omits its own flag,
so the slot count can never be observed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
And update the LEGAL mentions.
Same fix as commit 8e8682f, which added
RUBY_TEST_TIMEOUT_SCALE=10 to all macOS check jobs in macos.yml but did
not cover modgc.yml. assert_separately subprocess assertions flake on
slower/contended macOS runners, especially with the slower MMTk GC.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@pull pull Bot locked and limited conversation to collaborators Jun 16, 2026
@pull pull Bot added the ⤵️ pull label Jun 16, 2026
@pull pull Bot merged commit c8ec3b9 into turkdevops:master Jun 16, 2026
1 of 2 checks passed
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants