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: DataDog/datadog-ruby_core_source
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v3.5.2
Choose a base ref
...
head repository: DataDog/datadog-ruby_core_source
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v3.5.3
Choose a head ref
  • 5 commits
  • 109 files changed
  • 2 contributors

Commits on Mar 16, 2026

  1. Pin GitHub Actions

    juliendoutre authored Mar 16, 2026
    Configuration menu
    Copy the full SHA
    8dcc718 View commit details
    Browse the repository at this point in the history
  2. Merge pull request #27 from DataDog/pin-github-actions-1773667250

    [Security] Pin GitHub Actions to a full-length commit SHA
    ivoanjo authored Mar 16, 2026
    Configuration menu
    Copy the full SHA
    683d0de View commit details
    Browse the repository at this point in the history

Commits on Jul 15, 2026

  1. Add Ruby 4.0.6 headers

    These are almost the same as the 4.0.0 headers, yet the change to add
    `is_ready` in `rb_thread_sched_item` shifted the in-memory layouts of
    things inside `rb_thread_struct` which broke the profiler.
    
    ```diff
    $ diff -uw ruby-4.0.0-p0/ ruby-4.0.6-p0/
    Common subdirectories: ruby-4.0.0-p0/ccan and ruby-4.0.6-p0/ccan
    diff -uw ruby-4.0.0-p0/id_table.h ruby-4.0.6-p0/id_table.h
    --- ruby-4.0.0-p0/id_table.h	2026-01-07 15:43:22.492338852 +0000
    +++ ruby-4.0.6-p0/id_table.h	2026-07-15 09:07:09.200855897 +0100
    @@ -47,6 +47,16 @@
    
     extern const rb_data_type_t rb_managed_id_table_type;
    
    +VALUE rb_marked_id_table_new(size_t capa);
    +int rb_marked_id_table_insert(VALUE table, ID id, VALUE val);
    +VALUE rb_marked_id_table_dup(VALUE table);
    +
    +// alisases
    +#define rb_marked_id_table_size             rb_managed_id_table_size
    +#define rb_marked_id_table_lookup           rb_managed_id_table_lookup
    +#define rb_marked_id_table_foreach          rb_managed_id_table_foreach
    +#define rb_marked_id_table_foreach_values   rb_managed_id_table_foreach_values
    +
     RUBY_SYMBOL_EXPORT_BEGIN
     size_t rb_id_table_size(const struct rb_id_table *tbl);
     RUBY_SYMBOL_EXPORT_END
    Common subdirectories: ruby-4.0.0-p0/internal and ruby-4.0.6-p0/internal
    Common subdirectories: ruby-4.0.0-p0/prism and ruby-4.0.6-p0/prism
    diff -uw ruby-4.0.0-p0/thread_pthread.h ruby-4.0.6-p0/thread_pthread.h
    --- ruby-4.0.0-p0/thread_pthread.h	2026-01-07 15:43:22.497873080 +0000
    +++ ruby-4.0.6-p0/thread_pthread.h	2026-07-15 09:07:09.202007892 +0100
    @@ -56,6 +56,9 @@
             // connected to ractor->threads.sched.reqdyq
             // locked by ractor->threads.sched.lock
             struct ccan_list_node readyq;
    +        // Indicates whether thread is on the readyq.
    +        // There is no clear relationship between this and th->status.
    +        bool is_ready;
    
             // connected to vm->ractor.sched.timeslice_threads
             // locked by vm->ractor.sched.lock
    @@ -127,6 +130,11 @@
         struct rb_thread_struct *lock_owner;
     #endif
         struct rb_thread_struct *running; // running thread or NULL
    +    // Most recently running thread or NULL. If this thread wakes up before the newly running
    +    // thread completes the transfer of control, it can interrupt and resume running.
    +    // The new thread clears this field when it takes control.
    +    struct rb_thread_struct *runnable_hot_th;
    +    int runnable_hot_th_waiting;
         bool is_running;
         bool is_running_timeslice;
         bool enable_mn_threads;
    diff -uw ruby-4.0.0-p0/vm_core.h ruby-4.0.6-p0/vm_core.h
    --- ruby-4.0.0-p0/vm_core.h	2026-01-07 15:43:22.497873080 +0000
    +++ ruby-4.0.6-p0/vm_core.h	2026-07-15 09:07:09.202386196 +0100
    @@ -763,6 +763,7 @@
         const VALUE special_exceptions[ruby_special_error_count];
    
         /* Ruby Box */
    +    rb_box_t *master_box;
         rb_box_t *root_box;
         rb_box_t *main_box;
    
    @@ -2233,6 +2234,7 @@
     int rb_signal_exec(rb_thread_t *th, int sig);
     void rb_threadptr_check_signal(rb_thread_t *mth);
     void rb_threadptr_signal_raise(rb_thread_t *th, int sig);
    +void rb_threadptr_interrupt_raise(rb_thread_t *th);
     void rb_threadptr_signal_exit(rb_thread_t *th);
     int rb_threadptr_execute_interrupts(rb_thread_t *, int);
     void rb_threadptr_interrupt(rb_thread_t *th);
    ```
    ivoanjo committed Jul 15, 2026
    Configuration menu
    Copy the full SHA
    e989782 View commit details
    Browse the repository at this point in the history
  2. Bump gem version to 3.5.3

    ivoanjo committed Jul 15, 2026
    Configuration menu
    Copy the full SHA
    30a5438 View commit details
    Browse the repository at this point in the history
  3. Merge pull request #28 from DataDog/ivoanjo/prof-15412-ruby-4_0_6-sup…

    …port
    
    [PROF-15412] Import Ruby 4.0.6 headers and bump gem version to 3.5.3
    ivoanjo authored Jul 15, 2026
    Configuration menu
    Copy the full SHA
    b327ccb View commit details
    Browse the repository at this point in the history
Loading