Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: github/ruby
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: master
Choose a base ref
...
head repository: ruby/ruby
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: master
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 17 commits
  • 13 files changed
  • 5 contributors

Commits on Dec 30, 2025

  1. Run also test-tool on mingw

    nobu committed Dec 30, 2025
    Configuration menu
    Copy the full SHA
    3086d58 View commit details
    Browse the repository at this point in the history
  2. Skip the hang-up test on Windows

    nobu committed Dec 30, 2025
    Configuration menu
    Copy the full SHA
    d40e056 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    9d37155 View commit details
    Browse the repository at this point in the history

Commits on Dec 31, 2025

  1. Introduce typed-data embeddable predicate macros

    The combination of `&` and `&&` is confusing.
    nobu committed Dec 31, 2025
    Configuration menu
    Copy the full SHA
    c352808 View commit details
    Browse the repository at this point in the history
  2. Make RTYPEDDATA_EMBEDDABLE_P internal-use only

    It should not be exposed because it is so implementation specific that
    it is only used in gc.c even within the entire Ruby source tree.
    nobu committed Dec 31, 2025
    Configuration menu
    Copy the full SHA
    d95bebe View commit details
    Browse the repository at this point in the history
  3. [DOC] Move typed-data related macros

    The flags for `rb_data_type_t::flags` are public constants for
    defining `rb_data_type_t`.  The embedded data flag and mask are
    internal implementation detail.
    nobu committed Dec 31, 2025
    Configuration menu
    Copy the full SHA
    094145f View commit details
    Browse the repository at this point in the history
  4. [ruby/json] Keep track of the the number of additional backslashes to…

    … avoid an extra memchr searching the remaining characters when no more backslashes exist.
    
    ruby/json@d21d9362fa
    samyron authored and matzbot committed Dec 31, 2025
    Configuration menu
    Copy the full SHA
    61d45c8 View commit details
    Browse the repository at this point in the history
  5. [ruby/json] Simplify unescape_unicode

    ruby/json@976ba36629
    
    Co-Authored-By: Jean Boussier <[email protected]>
    2 people authored and matzbot committed Dec 31, 2025
    Configuration menu
    Copy the full SHA
    c97f5d5 View commit details
    Browse the repository at this point in the history
  6. [ruby/json] Fix non-portable code

    A plain `char` may be `signed` or `unsigned` depending on the
    implementation.  Also, bitwise ORing of `signed` values ​​is not
    guaranteed to be `signed`.  To ensure portability, should logical-OR
    each comparison, but casting to `signed char` is usually sufficient.
    
    ruby/json@8ad744c532
    nobu authored and matzbot committed Dec 31, 2025
    Configuration menu
    Copy the full SHA
    99249cc View commit details
    Browse the repository at this point in the history
  7. [ruby/mmtk] Process obj_free candidates in parallel

    This commit allows objects that are safe to be freed in parallel to do so.
    A decrease in object freeing time can be seen in profiles.
    
    The benchmarks don't show much difference.
    
    Before:
    
    --------------  --------------------  ----------  ---------
    bench           sequential free (ms)  stddev (%)  RSS (MiB)
    activerecord    242.3                 7.4         84.3
    chunky-png      439.1                 0.6         75.6
    erubi-rails     1221.2                4.2         132.7
    hexapdf         1544.8                1.8         429.1
    liquid-c        42.7                  7.4         48.5
    liquid-compile  41.4                  8.3         52.2
    liquid-render   100.6                 3.0         56.8
    mail            108.9                 2.1         65.1
    psych-load      1536.9                0.6         43.4
    railsbench      1633.5                2.6         146.2
    rubocop         126.5                 15.8        142.1
    ruby-lsp        129.6                 9.7         112.2
    sequel          47.9                  6.5         44.6
    shipit          1152.0                2.7         315.2
    --------------  --------------------  ----------  ---------
    
    After:
    
    --------------  ------------------  ----------  ---------
    bench           parallel free (ms)  stddev (%)  RSS (MiB)
    activerecord    235.1               5.5         87.4
    chunky-png      440.8               0.8         68.1
    erubi-rails     1105.3              0.8         128.0
    hexapdf         1578.3              4.1         405.1
    liquid-c        42.6                7.1         48.4
    liquid-compile  41.5                8.1         52.1
    liquid-render   101.2               2.8         53.3
    mail            109.7               2.7         64.8
    psych-load      1567.7              1.1         44.4
    railsbench      1644.9              1.9         150.9
    rubocop         125.6               15.4        148.5
    ruby-lsp        127.9               5.8         104.6
    sequel          48.2                6.1         44.1
    shipit          1215.3              4.7         320.5
    --------------  ------------------  ----------  ---------
    
    ruby/mmtk@4f0b5fd2eb
    peterzhu2118 authored and matzbot committed Dec 31, 2025
    Configuration menu
    Copy the full SHA
    544770d View commit details
    Browse the repository at this point in the history
  8. [ruby/mmtk] Split ProcessObjFreeCandidates to parallel and non-parallel

    This makes it easier to visualize in profilers which one is non-parallel.
    
    ruby/mmtk@ba68b2ef3b
    peterzhu2118 authored and matzbot committed Dec 31, 2025
    Configuration menu
    Copy the full SHA
    dbfedeb View commit details
    Browse the repository at this point in the history
  9. Use is_obj_encoding instead of is_data_encoding

    The argument to `is_data_encoding` is assumed to be `T_DATA`.
    nobu committed Dec 31, 2025
    Configuration menu
    Copy the full SHA
    b27d935 View commit details
    Browse the repository at this point in the history
  10. Register imemo_ment as a pinning object

    It sometimes pins itself when it is in the overloaded_cme table.
    peterzhu2118 committed Dec 31, 2025
    Configuration menu
    Copy the full SHA
    7cf6cc8 View commit details
    Browse the repository at this point in the history

Commits on Jan 1, 2026

  1. Configuration menu
    Copy the full SHA
    ea05c23 View commit details
    Browse the repository at this point in the history
  2. Use STR_SET_SHARED in str_duplicate_setup_heap

    str_duplicate_setup_heap is missing a call to rb_gc_register_pinning_obj
    that STR_SET_SHARED correctly calls.
    peterzhu2118 committed Jan 1, 2026
    Configuration menu
    Copy the full SHA
    4129256 View commit details
    Browse the repository at this point in the history
  3. Thread::Queue use a ring buffer

    Thread::Queue spends a significant amount of time in array functions,
    checking for invariants we know aren't a problem, and whether the backing
    array need to reordered.
    
    By using a ring buffer we can remove a lot of overhead (~23% faster).
    
    ```
    $ hyperfine './miniruby --yjit /tmp/q.rb' './miniruby-qrb --yjit /tmp/q.rb'
    Benchmark 1: ./miniruby --yjit /tmp/q.rb
      Time (mean ± σ):      1.050 s ±  0.191 s    [User: 0.988 s, System: 0.004 s]
      Range (min … max):    0.984 s …  1.595 s    10 runs
    
    Benchmark 2: ./miniruby-qrb --yjit /tmp/q.rb
      Time (mean ± σ):     844.2 ms ±   3.1 ms    [User: 840.4 ms, System: 2.8 ms]
      Range (min … max):   838.6 ms … 848.9 ms    10 runs
    
    Summary
      ./miniruby-qrb --yjit /tmp/q.rb ran
        1.24 ± 0.23 times faster than ./miniruby --yjit /tmp/q.rb
    ```
    
    ```
    q = Queue.new([1, 2, 3, 4, 5, 6, 7, 8])
    i = 2_000_000
    while i > 0
      i -= 1
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
      q.push(q.pop)
    end
    ```
    byroot committed Jan 1, 2026
    Configuration menu
    Copy the full SHA
    8ce61f9 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    26a5bcd View commit details
    Browse the repository at this point in the history
Loading