Age | Commit message (Collapse) | Author |
---|
| https://.com/ruby/json/commit/6c41162522 |
| There are few legitimate use cases for duplicate keys, and can in some case be exploited. Rather to always silently accept them, we should emit a warning, and in the future require to explictly allow them. https://.com/ruby/json/commit/06f00a42e8 |
| https://.com/ruby/json/commit/eed753ffde |
| ruby/ruby#13636 https://.com/ruby/json/commit/6fc2c4b6ab Co-Authored-By: Tim Smith <[email protected]> |
| https://.com/ruby/json/commit/a29cb77d52 |
| https://.com/ruby/json/commit/8603a57a91 |
| This would have caught https://.com/ruby/json/pull/808 on CI. https://.com/ruby/json/commit/8109421fb4 |
| negative floats. Fix: https://.com/ruby/json/issues/807 Since https://.com/ruby/json/pull/800, `fpconv_dtoa` can actually generate up to 28 chars. https://.com/ruby/json/commit/d73ae93d3c |
| https://.com/ruby/json/commit/7c03ffc3e0 |
| https://.com/ruby/json/commit/c060943d04 |
| https://.com/ruby/json/commit/f5c1b8c45d |
| https://.com/ruby/json/commit/8433571dcf |
| Report EOF when applicable instead of an empty fragment. Also stop fragment extraction on first whitespace. https://.com/ruby/json/commit/cc1daba860 Notes: Merged: https://.com/ruby/ruby/pull/13310 |
| https://.com/ruby/json/commit/f3dde3cb2f Notes: Merged: https://.com/ruby/ruby/pull/13310 |
| https://.com/ruby/json/commit/41f1f6939d Notes: Merged: https://.com/ruby/ruby/pull/13310 |
| https://.com/ruby/json/commit/30e35b9ba5 Notes: Merged: https://.com/ruby/ruby/pull/13310 |
| https://.com/ruby/json/commit/832b5b1a4c Notes: Merged: https://.com/ruby/ruby/pull/13310 |
| Notes: Merged: https://.com/ruby/ruby/pull/13304 |
| e.g. ``` JSON.dump(1746861937.7842371) ``` master: ``` "1.https://.com/ruby/json/commit/746861937784+9" ``` This branch and older json versions: ``` https://.com/ruby/json/commit/1746861937.7842371 ``` In the end it's shorter, and according to `canada.json` benchmark performance is the same. https://.com/ruby/json/commit/866f72a437 |
| https://.com/ruby/json/commit/3b605d9b1e |
| Fix: https://.com/ruby/json/issues/796 Notes: Merged: https://.com/ruby/ruby/pull/13227 |
| https://.com/ruby/json/commit/6b059900de . |
| https://.com/ruby/json/commit/d7d60cccb0 |
| We should test compilation with `-msse2` because we need to test with whatever arguments Ruby will be compiled with. https://.com/ruby/json/commit/0a871365db |
| `c < 32 || c == 34` is equivalent to `c ^ 2 < 33`. Found in: https://lemire.me/blog/2025/04/13/detect-control-characters-quotes-and-backslashes-efficiently-using-swar/ The gain seem mostly present on micro-benchmark, and even there aren't very consistent, but it's never slower. ``` == Encoding long string (124001 bytes) ruby 3.4.2 (2025-02-15 revision https://.com/ruby/json/commit/d2930f8e7a) +YJIT +PRISM [arm64-darwin24] Warming up -------------------------------------- after 5.295k i/100ms Calculating ------------------------------------- after 55.796k (± 3.4%) i/s (17.92 μs/i) - 280.635k in 5.035690s Comparison: before: 49840.7 i/s after: 55795.8 i/s - 1.12x faster ``` https://.com/ruby/json/commit/034c5debd8 |
| |
| (https://.com/ruby/json/pull/743) See the pull request for the long development history: https://.com/ruby/json/pull/743 ``` == Encoding activitypub.json (52595 bytes) ruby 3.4.2 (2025-02-15 revision https://.com/ruby/json/commit/d2930f8e7a) +YJIT +PRISM [arm64-darwin24] Warming up -------------------------------------- after 2.913k i/100ms Calculating ------------------------------------- after 29.377k (± 2.0%) i/s (34.04 μs/i) - 148.563k in 5.059169s Comparison: before: 23314.1 i/s after: 29377.3 i/s - 1.26x faster == Encoding citm_catalog.json (500298 bytes) ruby 3.4.2 (2025-02-15 revision https://.com/ruby/json/commit/d2930f8e7a) +YJIT +PRISM [arm64-darwin24] Warming up -------------------------------------- after 152.000 i/100ms Calculating ------------------------------------- after 1.569k (± 0.8%) i/s (637.49 μs/i) - 7.904k in 5.039001s Comparison: before: 1485.6 i/s after: 1568.7 i/s - 1.06x faster == Encoding twitter.json (466906 bytes) ruby 3.4.2 (2025-02-15 revision https://.com/ruby/json/commit/d2930f8e7a) +YJIT +PRISM [arm64-darwin24] Warming up -------------------------------------- after 309.000 i/100ms Calculating ------------------------------------- after 3.115k (± 3.1%) i/s (321.01 μs/i) - 15.759k in 5.063776s Comparison: before: 2508.3 i/s after: 3115.2 i/s - 1.24x faster ``` https://.com/ruby/json/commit/49003523da |
| https://.com/ruby/json/commit/b14250f1da |
| We can't directly call `RBASIC_CLASS` as the return value of `to_s` may be an immediate. https://.com/ruby/json/commit/12dc394d11 |
| https://.com/ruby/json/commit/3e025f76d7 |
| Fix: https://.com/ruby/json/issues/790 If we end up calling something that spills the state on the heap, the pointer we received is outdated and may be out of sync. https://.com/ruby/json/commit/2ffa4ea46b |
| https://.com/ruby/json/commit/c985e8c6ea |
| Fix: https://.com/ruby/json/issues/788 `multi_json` rely on it, even though it was never documented as public API. Bringing it back as a method so it can emit a deprecation warning. https://.com/ruby/json/commit/123121bba2 |
| https://.com/ruby/json/commit/84443e881d |
| This time with explicit deprecation warnings. https://.com/ruby/json/commit/0dee9bdad9 |
| https://.com/ruby/json/commit/a6949f8656 |
| https://.com/ruby/json/commit/92beca8032 |
| https://.com/ruby/json/commit/573ebdca89 |
| https://.com/ruby/json/commit/27155b6500 |
| https://.com/ruby/json/commit/3e7e661ef5 |
| https://.com/ruby/json/commit/ff8e18392d |
| https://.com/ruby/json/commit/97f2924d0a |
| https://.com/ruby/json/commit/97f47d1cfd |
| By leveraging the `on_load` callback we can move all this logic out of the parser. Which mean we no longer have to duplicate that logic in both parser and that we'll later be able to extract it entirely from the gem. https://.com/ruby/json/commit/f411ddf1ce Notes: Merged: https://.com/ruby/ruby/pull/13004 |
| And substitute the return value like `Marshal.load` doesm which I can only assume was the intent. This also open the door to re-implement all the `create_addition` logic in `json/common.rb`. https://.com/ruby/json/commit/73d2137fd3 Notes: Merged: https://.com/ruby/ruby/pull/13004 |
| https://.com/ruby/json/commit/eda239ad34 Notes: Merged: https://.com/ruby/ruby/pull/13004 |
| https://.com/ruby/json/commit/1ca7efed1f Notes: Merged: https://.com/ruby/ruby/pull/13004 |
| https://.com/ruby/json/commit/760d922265 Notes: Merged: https://.com/ruby/ruby/pull/13004 |
| https://.com/ruby/json/commit/3de8702354 Notes: Merged: https://.com/ruby/ruby/pull/13004 |
| https://.com/ruby/json/commit/01c47a0555 Notes: Merged: https://.com/ruby/ruby/pull/13004 |