Skip to content

Bump sentry-ruby from 5.26.0 to 6.5.0#898

Open
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/bundler/sentry-ruby-6.5.0
Open

Bump sentry-ruby from 5.26.0 to 6.5.0#898
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/bundler/sentry-ruby-6.5.0

Conversation

@dependabot
Copy link
Contributor

@dependabot dependabot bot commented on behalf of github Mar 17, 2026

Bumps sentry-ruby from 5.26.0 to 6.5.0.

Changelog

Sourced from sentry-ruby's changelog.

6.5.0

New Features ✨

Bug Fixes 🐛

Internal Changes 🔧

6.4.1

Bug Fixes 🐛

6.4.0

Features

  • Add support for OTLP ingestion in sentry-opentelemetry (#2853)

    Sentry now has first class OTLP ingestion capabilities.

    Sentry.init do |config|
      ## ...
      config.otlp.enabled = true
    end

    Under the hood, this will setup:

    • An OpenTelemetry::Exporter that will automatically set up the OTLP ingestion endpoint from your DSN
      • You can turn this off with config.otlp.setup_otlp_traces_exporter = false to setup your own exporter
    • An OTLPPropagator that ensures Distributed Tracing works
      • You can turn this off with config.otlp.setup_propagator = false
    • Trace/Span linking for all other Sentry events such as Errors, Logs, Crons and Metrics

    If you were using the SpanProcessor before, we recommend migrating over to config.otlp since it's a much simpler setup.

  • Treat Sidekiq nil retry as true (#2864)

... (truncated)

Commits
  • a34b047 release: 6.5.0
  • d61d271 fix: Copy event processors on Scope#dup (#2893)
  • 8205acb fix(release-detector): Prefer HEROKU_BUILD_COMMIT over deprecated HEROKU_SLUG...
  • 2c1c8b7 feat(transport): Handle HTTP 413 response for oversized envelopes (#2885)
  • 5685885 fix: Don't transform attributes in place in metrics (#2883)
  • d8352b6 test: fix flaky request timing tests (#2882)
  • cfcab4b feat: Implement strict trace continuation (#2872)
  • a640799 release: 6.4.1
  • 66c2ad1 fix(rails): Track request queue time in Rails middleware (#2877)
  • 38b827d release: 6.4.0
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [sentry-ruby](https://github.com/getsentry/sentry-ruby) from 5.26.0 to 6.5.0.
- [Release notes](https://github.com/getsentry/sentry-ruby/releases)
- [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md)
- [Commits](getsentry/sentry-ruby@5.26.0...6.5.0)

---
updated-dependencies:
- dependency-name: sentry-ruby
  dependency-version: 6.5.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot bot added dependencies ruby Pull requests that update Ruby code labels Mar 17, 2026
@github-actions
Copy link
Contributor

4 similar comments
@github-actions
Copy link
Contributor

@github-actions
Copy link
Contributor

@github-actions
Copy link
Contributor

@github-actions
Copy link
Contributor

@github-actions
Copy link
Contributor

gem compare concurrent-ruby 1.3.5 1.3.6

Compared versions: ["1.3.5", "1.3.6"]
  DIFFERENT date:
    1.3.5: 2025-01-15 00:00:00 UTC
    1.3.6: 2025-12-13 00:00:00 UTC
  DIFFERENT rubygems_version:
    1.3.5: 3.3.26
    1.3.6: 3.3.27
  DIFFERENT version:
    1.3.5: 1.3.5
    1.3.6: 1.3.6
  DIFFERENT files:
    1.3.5->1.3.6:
      * Added:
            lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb +55/-0
            lib/concurrent-ruby/concurrent/collection/timeout_queue.rb +18/-0
      * Changed:
            CHANGELOG.md +6/-0
            README.md +4/-2
            lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb +1/-0
            lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb +2/-4
            lib/concurrent-ruby/concurrent/executor/java_executor_service.rb +1/-0
            lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb +2/-0
            lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb +2/-0
            lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb +54/-31
            lib/concurrent-ruby/concurrent/executor/timer_set.rb +4/-1
            lib/concurrent-ruby/concurrent/executors.rb +0/-1
            lib/concurrent-ruby/concurrent/mvar.rb +4/-4
            lib/concurrent-ruby/concurrent/promise.rb +1/-1
            lib/concurrent-ruby/concurrent/timer_task.rb +7/-2
            lib/concurrent-ruby/concurrent/version.rb +1/-1
  DIFFERENT extra_rdoc_files:
    1.3.5->1.3.6:
      * Changed:
            README.md +4/-2
            CHANGELOG.md +6/-0

1 similar comment
@github-actions
Copy link
Contributor

gem compare concurrent-ruby 1.3.5 1.3.6

Compared versions: ["1.3.5", "1.3.6"]
  DIFFERENT date:
    1.3.5: 2025-01-15 00:00:00 UTC
    1.3.6: 2025-12-13 00:00:00 UTC
  DIFFERENT rubygems_version:
    1.3.5: 3.3.26
    1.3.6: 3.3.27
  DIFFERENT version:
    1.3.5: 1.3.5
    1.3.6: 1.3.6
  DIFFERENT files:
    1.3.5->1.3.6:
      * Added:
            lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb +55/-0
            lib/concurrent-ruby/concurrent/collection/timeout_queue.rb +18/-0
      * Changed:
            CHANGELOG.md +6/-0
            README.md +4/-2
            lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb +1/-0
            lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb +2/-4
            lib/concurrent-ruby/concurrent/executor/java_executor_service.rb +1/-0
            lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb +2/-0
            lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb +2/-0
            lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb +54/-31
            lib/concurrent-ruby/concurrent/executor/timer_set.rb +4/-1
            lib/concurrent-ruby/concurrent/executors.rb +0/-1
            lib/concurrent-ruby/concurrent/mvar.rb +4/-4
            lib/concurrent-ruby/concurrent/promise.rb +1/-1
            lib/concurrent-ruby/concurrent/timer_task.rb +7/-2
            lib/concurrent-ruby/concurrent/version.rb +1/-1
  DIFFERENT extra_rdoc_files:
    1.3.5->1.3.6:
      * Changed:
            README.md +4/-2
            CHANGELOG.md +6/-0

@github-actions
Copy link
Contributor

gem compare --diff concurrent-ruby 1.3.5 1.3.6

Compared versions: ["1.3.5", "1.3.6"]
  DIFFERENT files:
    1.3.5->1.3.6:
      * Added:
        lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb
                --- /tmp/20260317-889-zq5fjk	2026-03-17 03:33:10.964914254 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb	2026-03-17 03:33:10.953914316 +0000
                @@ -0,0 +1,55 @@
                +module Concurrent
                +  module Collection
                +    # @!visibility private
                +    # @!macro ruby_timeout_queue
                +    class RubyTimeoutQueue < ::Queue
                +      def initialize(*args)
                +        if RUBY_VERSION >= '3.2'
                +          raise "#{self.class.name} is not needed on Ruby 3.2 or later, use ::Queue instead"
                +        end
                +
                +        super(*args)
                +
                +        @mutex = Mutex.new
                +        @cond_var = ConditionVariable.new
                +      end
                +
                +      def push(obj)
                +        @mutex.synchronize do
                +          super(obj)
                +          @cond_var.signal
                +        end
                +      end
                +      alias_method :enq, :push
                +      alias_method :<<, :push
                +
                +      def pop(non_block = false, timeout: nil)
                +        if non_block && timeout
                +          raise ArgumentError, "can't set a timeout if non_block is enabled"
                +        end
                +
                +        if non_block
                +          super(true)
                +        elsif timeout
                +          @mutex.synchronize do
                +            deadline = Concurrent.monotonic_time + timeout
                +            while (now = Concurrent.monotonic_time) < deadline && empty?
                +              @cond_var.wait(@mutex, deadline - now)
                +            end
                +            begin
                +              return super(true)
                +            rescue ThreadError
                +              # still empty
                +              nil
                +            end
                +          end
                +        else
                +          super(false)
                +        end
                +      end
                +      alias_method :deq, :pop
                +      alias_method :shift, :pop
                +    end
                +    private_constant :RubyTimeoutQueue
                +  end
                +end
        lib/concurrent-ruby/concurrent/collection/timeout_queue.rb
                --- /tmp/20260317-889-mo643n	2026-03-17 03:33:10.966914243 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb	2026-03-17 03:33:10.953914316 +0000
                @@ -0,0 +1,18 @@
                +module Concurrent
                +  module Collection
                +    # @!visibility private
                +    # @!macro internal_implementation_note
                +    TimeoutQueueImplementation = if RUBY_VERSION >= '3.2'
                +                                   ::Queue
                +                                 else
                +                                   require 'concurrent/collection/ruby_timeout_queue'
                +                                   RubyTimeoutQueue
                +                                 end
                +    private_constant :TimeoutQueueImplementation
                +
                +    # @!visibility private
                +    # @!macro timeout_queue
                +    class TimeoutQueue < TimeoutQueueImplementation
                +    end
                +  end
                +end
      * Changed:
        CHANGELOG.md
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/CHANGELOG.md	2026-03-17 03:33:10.924914480 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/CHANGELOG.md	2026-03-17 03:33:10.944914367 +0000
                @@ -2,0 +3,6 @@
                +## Release v1.3.6 (13 December 2025)
                +
                +concurrent-ruby:
                +
                +* See the [release notes on GitHub](https://github.com/ruby-concurrency/concurrent-ruby/releases/tag/v1.3.6).
                +
        README.md
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/README.md	2026-03-17 03:33:10.924914480 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/README.md	2026-03-17 03:33:10.944914367 +0000
                @@ -210 +210 @@
                -keep backward compatibility (there may also lack tests and documentation). Semantic versions will
                +keep backward compatibility (they may also lack tests and documentation). Semantic versions will
                @@ -361 +361,2 @@
                -* Install Docker, required for Windows builds
                +* Install Docker or Podman, required for Windows builds
                +* If `bundle config get path` is set, use `bundle config set --local path.system true` otherwise the `gem name, path: '.'` gems won't be found (Bundler limitation).
                @@ -380,0 +382 @@
                +* [Joshua Young](https://github.com/joshuay03)
        lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-17 03:33:10.931914441 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-17 03:33:10.951914327 +0000
                @@ -8,0 +9 @@
                +    return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
        lib/concurrent-ruby/concurrent/concurrent_ruby.jar
                Binary files /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
        lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-17 03:33:10.936914412 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-17 03:33:10.956914299 +0000
                @@ -84,4 +84,2 @@
                -  #   This is a no-op on some pool implementation (e.g. the Java one).  The Ruby
                -  #   pool will auto-prune each time a new job is posted. You will need to call
                -  #   this method explicitly in case your application post jobs in bursts (a
                -  #   lot of jobs and then nothing for long periods)
                +  #   This is a no-op on all pool implementations as they prune themselves
                +  #   automatically, and has been deprecated.
        lib/concurrent-ruby/concurrent/executor/java_executor_service.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-17 03:33:10.937914407 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-17 03:33:10.956914299 +0000
                @@ -48,0 +49 @@
                +          wait_for_termination
        lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-17 03:33:10.937914407 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-17 03:33:10.956914299 +0000
                @@ -10,0 +11 @@
                +      include Concern::Deprecation
                @@ -102,0 +104 @@
                +        deprecated "#prune_pool has no effect and will be removed in the next release."
        lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-17 03:33:10.937914407 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-17 03:33:10.957914294 +0000
                @@ -1,0 +2 @@
                +require 'concurrent/executor/serial_executor_service'
                @@ -8,0 +10 @@
                +    include SerialExecutorService
        lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-17 03:33:10.937914407 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-17 03:33:10.957914294 +0000
                @@ -5,0 +6 @@
                +require 'concurrent/collection/timeout_queue'
                @@ -12,0 +14 @@
                +    include Concern::Deprecation
                @@ -96,0 +99,4 @@
                +    # removes the worker if it can be pruned
                +    #
                +    # @return [true, false] if the worker was pruned
                +    #
                @@ -98,2 +104,17 @@
                -    def remove_busy_worker(worker)
                -      synchronize { ns_remove_busy_worker worker }
                +    def prune_worker(worker)
                +      synchronize do
                +        if ns_prunable_capacity > 0
                +          remove_worker worker
                +          true
                +        else
                +          false
                +        end
                +      end
                +    end
                +
                +    # @!visibility private
                +    def remove_worker(worker)
                +      synchronize do
                +        ns_remove_ready_worker worker
                +        ns_remove_busy_worker worker
                +      end
                @@ -119 +140 @@
                -      synchronize { ns_prune_pool }
                +      deprecated "#prune_pool has no effect and will be removed in next the release, see https://github.com/ruby-concurrency/concurrent-ruby/pull/1082."
                @@ -149,3 +169,0 @@
                -
                -      @gc_interval  = opts.fetch(:gc_interval, @idletime / 2.0).to_i # undocumented
                -      @next_gc_time = Concurrent.monotonic_time + @gc_interval
                @@ -164,0 +183 @@
                +        nil
                @@ -166 +185 @@
                -        return fallback_action(*args, &task)
                +        fallback_action(*args, &task)
                @@ -168,3 +186,0 @@
                -
                -      ns_prune_pool if @next_gc_time < Concurrent.monotonic_time
                -      nil
                @@ -221 +237 @@
                -      
                +
                @@ -268 +284 @@
                -    # removes a worker which is not in not tracked in @ready
                +    # removes a worker which is not tracked in @ready
                @@ -277,2 +292,0 @@
                -    # try oldest worker if it is idle for enough time, it's returned back at the start
                -    #
                @@ -280,11 +294,3 @@
                -    def ns_prune_pool
                -      now = Concurrent.monotonic_time
                -      stopped_workers = 0
                -      while !@ready.empty? && (@pool.size - stopped_workers > @min_length)
                -        worker, last_message = @ready.first
                -        if now - last_message > self.idletime
                -          stopped_workers += 1
                -          @ready.shift
                -          worker << :stop
                -        else break
                -        end
                +    def ns_remove_ready_worker(worker)
                +      if index = @ready.index { |rw, _| rw == worker }
                +        @ready.delete_at(index)
                @@ -291,0 +298,2 @@
                +      true
                +    end
                @@ -293 +301,10 @@
                -      @next_gc_time = Concurrent.monotonic_time + @gc_interval
                +    # @return [Integer] number of excess idle workers which can be removed without
                +    #                   going below min_length, or all workers if not running
                +    #
                +    # @!visibility private
                +    def ns_prunable_capacity
                +      if running?
                +        [@pool.size - @min_length, @ready.size].min
                +      else
                +        @pool.size
                +      end
                @@ -295,0 +313 @@
                +    # @!visibility private
                @@ -315 +333 @@
                -        @queue  = Queue.new
                +        @queue  = Collection::TimeoutQueue.new
                @@ -341 +359 @@
                -            loop do
                +            prunable = true
                @@ -343 +361,6 @@
                -              case message = my_queue.pop
                +            loop do
                +              timeout = prunable && my_pool.running? ? my_idletime : nil
                +              case message = my_queue.pop(timeout: timeout)
                +              when nil
                +                throw :stop if my_pool.prune_worker(self)
                +                prunable = false
                @@ -345 +368 @@
                -                my_pool.remove_busy_worker(self)
                +                my_pool.remove_worker(self)
                @@ -347 +369,0 @@
                -
                @@ -351,0 +374 @@
                +                prunable = true
        lib/concurrent-ruby/concurrent/executor/timer_set.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-17 03:33:10.938914401 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-17 03:33:10.958914288 +0000
                @@ -63,0 +64 @@
                +      @timer_executor.kill
                @@ -125 +126,3 @@
                -      @timer_executor.kill
                +      @condition.set
                +      @condition.reset
                +      @timer_executor.shutdown
        lib/concurrent-ruby/concurrent/executors.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb	2026-03-17 03:33:10.938914401 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb	2026-03-17 03:33:10.958914288 +0000
                @@ -13 +12,0 @@
                -require 'concurrent/executor/cached_thread_pool'
        lib/concurrent-ruby/concurrent/mvar.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-17 03:33:10.939914395 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-17 03:33:10.959914282 +0000
                @@ -12 +12 @@
                -  # `#mutate` that is atomic with respect to operations on the same instance.
                +  # `#modify` that is atomic with respect to operations on the same instance.
                @@ -90 +90 @@
                -        # if we timeoud out we'll still be empty
                +        # If we timed out we'll still be empty
                @@ -119 +119 @@
                -    # `put` the transformed value. Returns the transformed value. A timeout can
                +    # `put` the transformed value. Returns the pre-transform value. A timeout can
                @@ -122 +122 @@
                -    # @return [Object] the transformed value, or `TIMEOUT`
                +    # @return [Object] the pre-transform value, or `TIMEOUT`
        lib/concurrent-ruby/concurrent/promise.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb	2026-03-17 03:33:10.939914395 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb	2026-03-17 03:33:10.959914282 +0000
                @@ -170 +170 @@
                -  # c1.value       #=> 45
                +  # c1.value       #=> 42
        lib/concurrent-ruby/concurrent/timer_task.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-17 03:33:10.943914373 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-17 03:33:10.963914260 +0000
                @@ -4,0 +5 @@
                +require 'concurrent/atomic/atomic_fixnum'
                @@ -238,0 +240 @@
                +          @age.increment
                @@ -311,0 +314 @@
                +      @age = Concurrent::AtomicFixnum.new(0)
                @@ -331 +334 @@
                -      ScheduledTask.execute(interval, executor: @executor, args: [Concurrent::Event.new], &method(:execute_task))
                +      ScheduledTask.execute(interval, executor: @executor, args: [Concurrent::Event.new, @age.value], &method(:execute_task))
                @@ -336 +339 @@
                -    def execute_task(completion)
                +    def execute_task(completion, age_when_scheduled)
                @@ -337,0 +341,2 @@
                +      return nil unless @age.value == age_when_scheduled
                +
        lib/concurrent-ruby/concurrent/version.rb
                --- /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb	2026-03-17 03:33:10.943914373 +0000
                +++ /tmp/d20260317-889-qln0a6/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb	2026-03-17 03:33:10.964914254 +0000
                @@ -2 +2 @@
                -  VERSION = '1.3.5'
                +  VERSION = '1.3.6'

@github-actions
Copy link
Contributor

gem compare concurrent-ruby 1.3.5 1.3.6

Compared versions: ["1.3.5", "1.3.6"]
  DIFFERENT date:
    1.3.5: 2025-01-15 00:00:00 UTC
    1.3.6: 2025-12-13 00:00:00 UTC
  DIFFERENT rubygems_version:
    1.3.5: 3.3.26
    1.3.6: 3.3.27
  DIFFERENT version:
    1.3.5: 1.3.5
    1.3.6: 1.3.6
  DIFFERENT files:
    1.3.5->1.3.6:
      * Added:
            lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb +55/-0
            lib/concurrent-ruby/concurrent/collection/timeout_queue.rb +18/-0
      * Changed:
            CHANGELOG.md +6/-0
            README.md +4/-2
            lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb +1/-0
            lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb +2/-4
            lib/concurrent-ruby/concurrent/executor/java_executor_service.rb +1/-0
            lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb +2/-0
            lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb +2/-0
            lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb +54/-31
            lib/concurrent-ruby/concurrent/executor/timer_set.rb +4/-1
            lib/concurrent-ruby/concurrent/executors.rb +0/-1
            lib/concurrent-ruby/concurrent/mvar.rb +4/-4
            lib/concurrent-ruby/concurrent/promise.rb +1/-1
            lib/concurrent-ruby/concurrent/timer_task.rb +7/-2
            lib/concurrent-ruby/concurrent/version.rb +1/-1
  DIFFERENT extra_rdoc_files:
    1.3.5->1.3.6:
      * Changed:
            README.md +4/-2
            CHANGELOG.md +6/-0

@github-actions
Copy link
Contributor

gem compare sentry-ruby 5.26.0 6.5.0

Compared versions: ["5.26.0", "6.5.0"]
  DIFFERENT homepage:
    5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
    6.5.0: https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby
  DIFFERENT metadata:
    5.26.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/5.26.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/5.26.0"}
    6.5.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.5.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.5.0"}
  DIFFERENT required_ruby_version:
    5.26.0: >= 2.4
    6.5.0: >= 2.7
  DIFFERENT rubygems_version:
    5.26.0: 3.6.7
    6.5.0: 3.6.9
  DIFFERENT version:
    5.26.0: 5.26.0
    6.5.0: 6.5.0
  DIFFERENT files:
    5.26.0->6.5.0:
      * Deleted:
            lib/sentry/metrics/aggregator.rb
            lib/sentry/metrics/configuration.rb
            lib/sentry/metrics/counter_metric.rb
            lib/sentry/metrics/distribution_metric.rb
            lib/sentry/metrics/gauge_metric.rb
            lib/sentry/metrics/local_aggregator.rb
            lib/sentry/metrics/metric.rb
            lib/sentry/metrics/set_metric.rb
            lib/sentry/metrics/timing.rb
      * Added:
            lib/sentry/backtrace/line.rb +99/-0
            lib/sentry/debug_structured_logger.rb +94/-0
            lib/sentry/metric_event.rb +49/-0
            lib/sentry/metric_event_buffer.rb +28/-0
            lib/sentry/sequel.rb +35/-0
            lib/sentry/telemetry_event_buffer.rb +130/-0
            lib/sentry/transport/debug_transport.rb +70/-0
            lib/sentry/utils/sample_rand.rb +97/-0
            lib/sentry/utils/telemetry_attributes.rb +30/-0
      * Changed:
            Gemfile +27/-5
            README.md +3/-3
            lib/sentry-ruby.rb +56/-29
            lib/sentry/background_worker.rb +1/-4
            lib/sentry/backtrace.rb +44/-76
            lib/sentry/baggage.rb +2/-2
            lib/sentry/breadcrumb.rb +1/-1
            lib/sentry/breadcrumb_buffer.rb +2/-2
            lib/sentry/check_in_event.rb +2/-2
            lib/sentry/client.rb +59/-136
            lib/sentry/configuration.rb +206/-78
            lib/sentry/cron/monitor_check_ins.rb +3/-3
            lib/sentry/cron/monitor_config.rb +2/-2
            lib/sentry/cron/monitor_schedule.rb +2/-2
            lib/sentry/dsn.rb +65/-1
            lib/sentry/envelope/item.rb +3/-3
            lib/sentry/error_event.rb +3/-3
            lib/sentry/event.rb +4/-10
            lib/sentry/exceptions.rb +3/-0
            lib/sentry/graphql.rb +1/-1
            lib/sentry/hub.rb +29/-5
            lib/sentry/interface.rb +1/-1
            lib/sentry/interfaces/exception.rb +2/-2
            lib/sentry/interfaces/request.rb +2/-0
            lib/sentry/interfaces/single_exception.rb +4/-4
            lib/sentry/interfaces/stacktrace.rb +3/-3
            lib/sentry/interfaces/stacktrace_builder.rb +0/-8
            lib/sentry/interfaces/threads.rb +2/-2
            lib/sentry/log_event.rb +32/-137
            lib/sentry/log_event_buffer.rb +13/-60
            lib/sentry/metrics.rb +47/-42
            lib/sentry/profiler.rb +4/-5
            lib/sentry/propagation_context.rb +101/-24
            lib/sentry/rack/capture_exceptions.rb +90/-2
            lib/sentry/release_detector.rb +1/-1
            lib/sentry/rspec.rb +1/-1
            lib/sentry/scope.rb +51/-18
            lib/sentry/span.rb +5/-17
            lib/sentry/std_lib_logger.rb +10/-1
            lib/sentry/test_helper.rb +30/-0
            lib/sentry/transaction.rb +73/-95
            lib/sentry/transaction_event.rb +4/-9
            lib/sentry/transport.rb +10/-7
            lib/sentry/transport/dummy_transport.rb +1/-0
            lib/sentry/transport/http_transport.rb +16/-16
            lib/sentry/utils/encoding_helper.rb +6/-0
            lib/sentry/utils/logging_helper.rb +25/-9
            lib/sentry/vernier/profiler.rb +4/-3
            lib/sentry/version.rb +1/-1
            sentry-ruby-core.gemspec +1/-1
            sentry-ruby.gemspec +2/-1
  DIFFERENT extra_rdoc_files:
    5.26.0->6.5.0:
      * Changed:
            README.md +3/-3
  DIFFERENT runtime dependencies:
    5.26.0->6.5.0:
      * Added:
            logger [">= 0"] (runtime)
  DIFFERENT Gemfile dependencies
    5.26.0->6.5.0:
      * Added:
            graphql [">= 2.2.6"] (runtime)
            sequel [">= 0"] (development)
            activerecord-jdbcmysql-adapter [">= 0"] (development)
            jdbc-sqlite3 [">= 0"] (development)

@github-actions
Copy link
Contributor

gem compare --diff concurrent-ruby 1.3.5 1.3.6

Compared versions: ["1.3.5", "1.3.6"]
  DIFFERENT files:
    1.3.5->1.3.6:
      * Added:
        lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb
                --- /tmp/20260317-949-xz5j4b	2026-03-17 03:33:28.487107634 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb	2026-03-17 03:33:28.477107499 +0000
                @@ -0,0 +1,55 @@
                +module Concurrent
                +  module Collection
                +    # @!visibility private
                +    # @!macro ruby_timeout_queue
                +    class RubyTimeoutQueue < ::Queue
                +      def initialize(*args)
                +        if RUBY_VERSION >= '3.2'
                +          raise "#{self.class.name} is not needed on Ruby 3.2 or later, use ::Queue instead"
                +        end
                +
                +        super(*args)
                +
                +        @mutex = Mutex.new
                +        @cond_var = ConditionVariable.new
                +      end
                +
                +      def push(obj)
                +        @mutex.synchronize do
                +          super(obj)
                +          @cond_var.signal
                +        end
                +      end
                +      alias_method :enq, :push
                +      alias_method :<<, :push
                +
                +      def pop(non_block = false, timeout: nil)
                +        if non_block && timeout
                +          raise ArgumentError, "can't set a timeout if non_block is enabled"
                +        end
                +
                +        if non_block
                +          super(true)
                +        elsif timeout
                +          @mutex.synchronize do
                +            deadline = Concurrent.monotonic_time + timeout
                +            while (now = Concurrent.monotonic_time) < deadline && empty?
                +              @cond_var.wait(@mutex, deadline - now)
                +            end
                +            begin
                +              return super(true)
                +            rescue ThreadError
                +              # still empty
                +              nil
                +            end
                +          end
                +        else
                +          super(false)
                +        end
                +      end
                +      alias_method :deq, :pop
                +      alias_method :shift, :pop
                +    end
                +    private_constant :RubyTimeoutQueue
                +  end
                +end
        lib/concurrent-ruby/concurrent/collection/timeout_queue.rb
                --- /tmp/20260317-949-t9mw95	2026-03-17 03:33:28.489107661 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb	2026-03-17 03:33:28.477107499 +0000
                @@ -0,0 +1,18 @@
                +module Concurrent
                +  module Collection
                +    # @!visibility private
                +    # @!macro internal_implementation_note
                +    TimeoutQueueImplementation = if RUBY_VERSION >= '3.2'
                +                                   ::Queue
                +                                 else
                +                                   require 'concurrent/collection/ruby_timeout_queue'
                +                                   RubyTimeoutQueue
                +                                 end
                +    private_constant :TimeoutQueueImplementation
                +
                +    # @!visibility private
                +    # @!macro timeout_queue
                +    class TimeoutQueue < TimeoutQueueImplementation
                +    end
                +  end
                +end
      * Changed:
        CHANGELOG.md
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/CHANGELOG.md	2026-03-17 03:33:28.450107133 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/CHANGELOG.md	2026-03-17 03:33:28.468107377 +0000
                @@ -2,0 +3,6 @@
                +## Release v1.3.6 (13 December 2025)
                +
                +concurrent-ruby:
                +
                +* See the [release notes on GitHub](https://github.com/ruby-concurrency/concurrent-ruby/releases/tag/v1.3.6).
                +
        README.md
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/README.md	2026-03-17 03:33:28.450107133 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/README.md	2026-03-17 03:33:28.469107390 +0000
                @@ -210 +210 @@
                -keep backward compatibility (there may also lack tests and documentation). Semantic versions will
                +keep backward compatibility (they may also lack tests and documentation). Semantic versions will
                @@ -361 +361,2 @@
                -* Install Docker, required for Windows builds
                +* Install Docker or Podman, required for Windows builds
                +* If `bundle config get path` is set, use `bundle config set --local path.system true` otherwise the `gem name, path: '.'` gems won't be found (Bundler limitation).
                @@ -380,0 +382 @@
                +* [Joshua Young](https://github.com/joshuay03)
        lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-17 03:33:28.456107214 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-17 03:33:28.474107458 +0000
                @@ -8,0 +9 @@
                +    return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
        lib/concurrent-ruby/concurrent/concurrent_ruby.jar
                Binary files /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
        lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-17 03:33:28.461107282 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-17 03:33:28.480107539 +0000
                @@ -84,4 +84,2 @@
                -  #   This is a no-op on some pool implementation (e.g. the Java one).  The Ruby
                -  #   pool will auto-prune each time a new job is posted. You will need to call
                -  #   this method explicitly in case your application post jobs in bursts (a
                -  #   lot of jobs and then nothing for long periods)
                +  #   This is a no-op on all pool implementations as they prune themselves
                +  #   automatically, and has been deprecated.
        lib/concurrent-ruby/concurrent/executor/java_executor_service.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-17 03:33:28.462107296 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-17 03:33:28.480107539 +0000
                @@ -48,0 +49 @@
                +          wait_for_termination
        lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-17 03:33:28.462107296 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-17 03:33:28.480107539 +0000
                @@ -10,0 +11 @@
                +      include Concern::Deprecation
                @@ -102,0 +104 @@
                +        deprecated "#prune_pool has no effect and will be removed in the next release."
        lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-17 03:33:28.462107296 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-17 03:33:28.480107539 +0000
                @@ -1,0 +2 @@
                +require 'concurrent/executor/serial_executor_service'
                @@ -8,0 +10 @@
                +    include SerialExecutorService
        lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-17 03:33:28.462107296 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-17 03:33:28.480107539 +0000
                @@ -5,0 +6 @@
                +require 'concurrent/collection/timeout_queue'
                @@ -12,0 +14 @@
                +    include Concern::Deprecation
                @@ -96,0 +99,4 @@
                +    # removes the worker if it can be pruned
                +    #
                +    # @return [true, false] if the worker was pruned
                +    #
                @@ -98,2 +104,17 @@
                -    def remove_busy_worker(worker)
                -      synchronize { ns_remove_busy_worker worker }
                +    def prune_worker(worker)
                +      synchronize do
                +        if ns_prunable_capacity > 0
                +          remove_worker worker
                +          true
                +        else
                +          false
                +        end
                +      end
                +    end
                +
                +    # @!visibility private
                +    def remove_worker(worker)
                +      synchronize do
                +        ns_remove_ready_worker worker
                +        ns_remove_busy_worker worker
                +      end
                @@ -119 +140 @@
                -      synchronize { ns_prune_pool }
                +      deprecated "#prune_pool has no effect and will be removed in next the release, see https://github.com/ruby-concurrency/concurrent-ruby/pull/1082."
                @@ -149,3 +169,0 @@
                -
                -      @gc_interval  = opts.fetch(:gc_interval, @idletime / 2.0).to_i # undocumented
                -      @next_gc_time = Concurrent.monotonic_time + @gc_interval
                @@ -164,0 +183 @@
                +        nil
                @@ -166 +185 @@
                -        return fallback_action(*args, &task)
                +        fallback_action(*args, &task)
                @@ -168,3 +186,0 @@
                -
                -      ns_prune_pool if @next_gc_time < Concurrent.monotonic_time
                -      nil
                @@ -221 +237 @@
                -      
                +
                @@ -268 +284 @@
                -    # removes a worker which is not in not tracked in @ready
                +    # removes a worker which is not tracked in @ready
                @@ -277,2 +292,0 @@
                -    # try oldest worker if it is idle for enough time, it's returned back at the start
                -    #
                @@ -280,11 +294,3 @@
                -    def ns_prune_pool
                -      now = Concurrent.monotonic_time
                -      stopped_workers = 0
                -      while !@ready.empty? && (@pool.size - stopped_workers > @min_length)
                -        worker, last_message = @ready.first
                -        if now - last_message > self.idletime
                -          stopped_workers += 1
                -          @ready.shift
                -          worker << :stop
                -        else break
                -        end
                +    def ns_remove_ready_worker(worker)
                +      if index = @ready.index { |rw, _| rw == worker }
                +        @ready.delete_at(index)
                @@ -291,0 +298,2 @@
                +      true
                +    end
                @@ -293 +301,10 @@
                -      @next_gc_time = Concurrent.monotonic_time + @gc_interval
                +    # @return [Integer] number of excess idle workers which can be removed without
                +    #                   going below min_length, or all workers if not running
                +    #
                +    # @!visibility private
                +    def ns_prunable_capacity
                +      if running?
                +        [@pool.size - @min_length, @ready.size].min
                +      else
                +        @pool.size
                +      end
                @@ -295,0 +313 @@
                +    # @!visibility private
                @@ -315 +333 @@
                -        @queue  = Queue.new
                +        @queue  = Collection::TimeoutQueue.new
                @@ -341 +359 @@
                -            loop do
                +            prunable = true
                @@ -343 +361,6 @@
                -              case message = my_queue.pop
                +            loop do
                +              timeout = prunable && my_pool.running? ? my_idletime : nil
                +              case message = my_queue.pop(timeout: timeout)
                +              when nil
                +                throw :stop if my_pool.prune_worker(self)
                +                prunable = false
                @@ -345 +368 @@
                -                my_pool.remove_busy_worker(self)
                +                my_pool.remove_worker(self)
                @@ -347 +369,0 @@
                -
                @@ -351,0 +374 @@
                +                prunable = true
        lib/concurrent-ruby/concurrent/executor/timer_set.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-17 03:33:28.463107309 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-17 03:33:28.481107553 +0000
                @@ -63,0 +64 @@
                +      @timer_executor.kill
                @@ -125 +126,3 @@
                -      @timer_executor.kill
                +      @condition.set
                +      @condition.reset
                +      @timer_executor.shutdown
        lib/concurrent-ruby/concurrent/executors.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb	2026-03-17 03:33:28.463107309 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb	2026-03-17 03:33:28.481107553 +0000
                @@ -13 +12,0 @@
                -require 'concurrent/executor/cached_thread_pool'
        lib/concurrent-ruby/concurrent/mvar.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-17 03:33:28.464107323 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-17 03:33:28.482107566 +0000
                @@ -12 +12 @@
                -  # `#mutate` that is atomic with respect to operations on the same instance.
                +  # `#modify` that is atomic with respect to operations on the same instance.
                @@ -90 +90 @@
                -        # if we timeoud out we'll still be empty
                +        # If we timed out we'll still be empty
                @@ -119 +119 @@
                -    # `put` the transformed value. Returns the transformed value. A timeout can
                +    # `put` the transformed value. Returns the pre-transform value. A timeout can
                @@ -122 +122 @@
                -    # @return [Object] the transformed value, or `TIMEOUT`
                +    # @return [Object] the pre-transform value, or `TIMEOUT`
        lib/concurrent-ruby/concurrent/promise.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb	2026-03-17 03:33:28.464107323 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb	2026-03-17 03:33:28.482107566 +0000
                @@ -170 +170 @@
                -  # c1.value       #=> 45
                +  # c1.value       #=> 42
        lib/concurrent-ruby/concurrent/timer_task.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-17 03:33:28.467107363 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-17 03:33:28.485107607 +0000
                @@ -4,0 +5 @@
                +require 'concurrent/atomic/atomic_fixnum'
                @@ -238,0 +240 @@
                +          @age.increment
                @@ -311,0 +314 @@
                +      @age = Concurrent::AtomicFixnum.new(0)
                @@ -331 +334 @@
                -      ScheduledTask.execute(interval, executor: @executor, args: [Concurrent::Event.new], &method(:execute_task))
                +      ScheduledTask.execute(interval, executor: @executor, args: [Concurrent::Event.new, @age.value], &method(:execute_task))
                @@ -336 +339 @@
                -    def execute_task(completion)
                +    def execute_task(completion, age_when_scheduled)
                @@ -337,0 +341,2 @@
                +      return nil unless @age.value == age_when_scheduled
                +
        lib/concurrent-ruby/concurrent/version.rb
                --- /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb	2026-03-17 03:33:28.468107377 +0000
                +++ /tmp/d20260317-949-st9hvd/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb	2026-03-17 03:33:28.486107620 +0000
                @@ -2 +2 @@
                -  VERSION = '1.3.5'
                +  VERSION = '1.3.6'

@github-actions
Copy link
Contributor

gem compare --diff concurrent-ruby 1.3.5 1.3.6

Compared versions: ["1.3.5", "1.3.6"]
  DIFFERENT files:
    1.3.5->1.3.6:
      * Added:
        lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb
                --- /tmp/20260317-884-7gis2p	2026-03-17 03:33:35.707202686 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb	2026-03-17 03:33:35.697202692 +0000
                @@ -0,0 +1,55 @@
                +module Concurrent
                +  module Collection
                +    # @!visibility private
                +    # @!macro ruby_timeout_queue
                +    class RubyTimeoutQueue < ::Queue
                +      def initialize(*args)
                +        if RUBY_VERSION >= '3.2'
                +          raise "#{self.class.name} is not needed on Ruby 3.2 or later, use ::Queue instead"
                +        end
                +
                +        super(*args)
                +
                +        @mutex = Mutex.new
                +        @cond_var = ConditionVariable.new
                +      end
                +
                +      def push(obj)
                +        @mutex.synchronize do
                +          super(obj)
                +          @cond_var.signal
                +        end
                +      end
                +      alias_method :enq, :push
                +      alias_method :<<, :push
                +
                +      def pop(non_block = false, timeout: nil)
                +        if non_block && timeout
                +          raise ArgumentError, "can't set a timeout if non_block is enabled"
                +        end
                +
                +        if non_block
                +          super(true)
                +        elsif timeout
                +          @mutex.synchronize do
                +            deadline = Concurrent.monotonic_time + timeout
                +            while (now = Concurrent.monotonic_time) < deadline && empty?
                +              @cond_var.wait(@mutex, deadline - now)
                +            end
                +            begin
                +              return super(true)
                +            rescue ThreadError
                +              # still empty
                +              nil
                +            end
                +          end
                +        else
                +          super(false)
                +        end
                +      end
                +      alias_method :deq, :pop
                +      alias_method :shift, :pop
                +    end
                +    private_constant :RubyTimeoutQueue
                +  end
                +end
        lib/concurrent-ruby/concurrent/collection/timeout_queue.rb
                --- /tmp/20260317-884-a2lk2h	2026-03-17 03:33:35.710202684 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb	2026-03-17 03:33:35.697202692 +0000
                @@ -0,0 +1,18 @@
                +module Concurrent
                +  module Collection
                +    # @!visibility private
                +    # @!macro internal_implementation_note
                +    TimeoutQueueImplementation = if RUBY_VERSION >= '3.2'
                +                                   ::Queue
                +                                 else
                +                                   require 'concurrent/collection/ruby_timeout_queue'
                +                                   RubyTimeoutQueue
                +                                 end
                +    private_constant :TimeoutQueueImplementation
                +
                +    # @!visibility private
                +    # @!macro timeout_queue
                +    class TimeoutQueue < TimeoutQueueImplementation
                +    end
                +  end
                +end
      * Changed:
        CHANGELOG.md
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/CHANGELOG.md	2026-03-17 03:33:35.666202710 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/CHANGELOG.md	2026-03-17 03:33:35.686202699 +0000
                @@ -2,0 +3,6 @@
                +## Release v1.3.6 (13 December 2025)
                +
                +concurrent-ruby:
                +
                +* See the [release notes on GitHub](https://github.com/ruby-concurrency/concurrent-ruby/releases/tag/v1.3.6).
                +
        README.md
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/README.md	2026-03-17 03:33:35.666202710 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/README.md	2026-03-17 03:33:35.687202698 +0000
                @@ -210 +210 @@
                -keep backward compatibility (there may also lack tests and documentation). Semantic versions will
                +keep backward compatibility (they may also lack tests and documentation). Semantic versions will
                @@ -361 +361,2 @@
                -* Install Docker, required for Windows builds
                +* Install Docker or Podman, required for Windows builds
                +* If `bundle config get path` is set, use `bundle config set --local path.system true` otherwise the `gem name, path: '.'` gems won't be found (Bundler limitation).
                @@ -380,0 +382 @@
                +* [Joshua Young](https://github.com/joshuay03)
        lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-17 03:33:35.674202706 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-17 03:33:35.694202694 +0000
                @@ -8,0 +9 @@
                +    return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
        lib/concurrent-ruby/concurrent/concurrent_ruby.jar
                Binary files /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
        lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-17 03:33:35.679202703 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-17 03:33:35.700202690 +0000
                @@ -84,4 +84,2 @@
                -  #   This is a no-op on some pool implementation (e.g. the Java one).  The Ruby
                -  #   pool will auto-prune each time a new job is posted. You will need to call
                -  #   this method explicitly in case your application post jobs in bursts (a
                -  #   lot of jobs and then nothing for long periods)
                +  #   This is a no-op on all pool implementations as they prune themselves
                +  #   automatically, and has been deprecated.
        lib/concurrent-ruby/concurrent/executor/java_executor_service.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-17 03:33:35.679202703 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-17 03:33:35.700202690 +0000
                @@ -48,0 +49 @@
                +          wait_for_termination
        lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-17 03:33:35.679202703 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-17 03:33:35.700202690 +0000
                @@ -10,0 +11 @@
                +      include Concern::Deprecation
                @@ -102,0 +104 @@
                +        deprecated "#prune_pool has no effect and will be removed in the next release."
        lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-17 03:33:35.679202703 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-17 03:33:35.700202690 +0000
                @@ -1,0 +2 @@
                +require 'concurrent/executor/serial_executor_service'
                @@ -8,0 +10 @@
                +    include SerialExecutorService
        lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-17 03:33:35.679202703 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-17 03:33:35.701202690 +0000
                @@ -5,0 +6 @@
                +require 'concurrent/collection/timeout_queue'
                @@ -12,0 +14 @@
                +    include Concern::Deprecation
                @@ -96,0 +99,4 @@
                +    # removes the worker if it can be pruned
                +    #
                +    # @return [true, false] if the worker was pruned
                +    #
                @@ -98,2 +104,17 @@
                -    def remove_busy_worker(worker)
                -      synchronize { ns_remove_busy_worker worker }
                +    def prune_worker(worker)
                +      synchronize do
                +        if ns_prunable_capacity > 0
                +          remove_worker worker
                +          true
                +        else
                +          false
                +        end
                +      end
                +    end
                +
                +    # @!visibility private
                +    def remove_worker(worker)
                +      synchronize do
                +        ns_remove_ready_worker worker
                +        ns_remove_busy_worker worker
                +      end
                @@ -119 +140 @@
                -      synchronize { ns_prune_pool }
                +      deprecated "#prune_pool has no effect and will be removed in next the release, see https://github.com/ruby-concurrency/concurrent-ruby/pull/1082."
                @@ -149,3 +169,0 @@
                -
                -      @gc_interval  = opts.fetch(:gc_interval, @idletime / 2.0).to_i # undocumented
                -      @next_gc_time = Concurrent.monotonic_time + @gc_interval
                @@ -164,0 +183 @@
                +        nil
                @@ -166 +185 @@
                -        return fallback_action(*args, &task)
                +        fallback_action(*args, &task)
                @@ -168,3 +186,0 @@
                -
                -      ns_prune_pool if @next_gc_time < Concurrent.monotonic_time
                -      nil
                @@ -221 +237 @@
                -      
                +
                @@ -268 +284 @@
                -    # removes a worker which is not in not tracked in @ready
                +    # removes a worker which is not tracked in @ready
                @@ -277,2 +292,0 @@
                -    # try oldest worker if it is idle for enough time, it's returned back at the start
                -    #
                @@ -280,11 +294,3 @@
                -    def ns_prune_pool
                -      now = Concurrent.monotonic_time
                -      stopped_workers = 0
                -      while !@ready.empty? && (@pool.size - stopped_workers > @min_length)
                -        worker, last_message = @ready.first
                -        if now - last_message > self.idletime
                -          stopped_workers += 1
                -          @ready.shift
                -          worker << :stop
                -        else break
                -        end
                +    def ns_remove_ready_worker(worker)
                +      if index = @ready.index { |rw, _| rw == worker }
                +        @ready.delete_at(index)
                @@ -291,0 +298,2 @@
                +      true
                +    end
                @@ -293 +301,10 @@
                -      @next_gc_time = Concurrent.monotonic_time + @gc_interval
                +    # @return [Integer] number of excess idle workers which can be removed without
                +    #                   going below min_length, or all workers if not running
                +    #
                +    # @!visibility private
                +    def ns_prunable_capacity
                +      if running?
                +        [@pool.size - @min_length, @ready.size].min
                +      else
                +        @pool.size
                +      end
                @@ -295,0 +313 @@
                +    # @!visibility private
                @@ -315 +333 @@
                -        @queue  = Queue.new
                +        @queue  = Collection::TimeoutQueue.new
                @@ -341 +359 @@
                -            loop do
                +            prunable = true
                @@ -343 +361,6 @@
                -              case message = my_queue.pop
                +            loop do
                +              timeout = prunable && my_pool.running? ? my_idletime : nil
                +              case message = my_queue.pop(timeout: timeout)
                +              when nil
                +                throw :stop if my_pool.prune_worker(self)
                +                prunable = false
                @@ -345 +368 @@
                -                my_pool.remove_busy_worker(self)
                +                my_pool.remove_worker(self)
                @@ -347 +369,0 @@
                -
                @@ -351,0 +374 @@
                +                prunable = true
        lib/concurrent-ruby/concurrent/executor/timer_set.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-17 03:33:35.680202702 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-17 03:33:35.701202690 +0000
                @@ -63,0 +64 @@
                +      @timer_executor.kill
                @@ -125 +126,3 @@
                -      @timer_executor.kill
                +      @condition.set
                +      @condition.reset
                +      @timer_executor.shutdown
        lib/concurrent-ruby/concurrent/executors.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb	2026-03-17 03:33:35.681202702 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb	2026-03-17 03:33:35.701202690 +0000
                @@ -13 +12,0 @@
                -require 'concurrent/executor/cached_thread_pool'
        lib/concurrent-ruby/concurrent/mvar.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-17 03:33:35.682202701 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-17 03:33:35.702202689 +0000
                @@ -12 +12 @@
                -  # `#mutate` that is atomic with respect to operations on the same instance.
                +  # `#modify` that is atomic with respect to operations on the same instance.
                @@ -90 +90 @@
                -        # if we timeoud out we'll still be empty
                +        # If we timed out we'll still be empty
                @@ -119 +119 @@
                -    # `put` the transformed value. Returns the transformed value. A timeout can
                +    # `put` the transformed value. Returns the pre-transform value. A timeout can
                @@ -122 +122 @@
                -    # @return [Object] the transformed value, or `TIMEOUT`
                +    # @return [Object] the pre-transform value, or `TIMEOUT`
        lib/concurrent-ruby/concurrent/promise.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb	2026-03-17 03:33:35.682202701 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb	2026-03-17 03:33:35.703202689 +0000
                @@ -170 +170 @@
                -  # c1.value       #=> 45
                +  # c1.value       #=> 42
        lib/concurrent-ruby/concurrent/timer_task.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-17 03:33:35.685202699 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-17 03:33:35.706202687 +0000
                @@ -4,0 +5 @@
                +require 'concurrent/atomic/atomic_fixnum'
                @@ -238,0 +240 @@
                +          @age.increment
                @@ -311,0 +314 @@
                +      @age = Concurrent::AtomicFixnum.new(0)
                @@ -331 +334 @@
                -      ScheduledTask.execute(interval, executor: @executor, args: [Concurrent::Event.new], &method(:execute_task))
                +      ScheduledTask.execute(interval, executor: @executor, args: [Concurrent::Event.new, @age.value], &method(:execute_task))
                @@ -336 +339 @@
                -    def execute_task(completion)
                +    def execute_task(completion, age_when_scheduled)
                @@ -337,0 +341,2 @@
                +      return nil unless @age.value == age_when_scheduled
                +
        lib/concurrent-ruby/concurrent/version.rb
                --- /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb	2026-03-17 03:33:35.686202699 +0000
                +++ /tmp/d20260317-884-ycel4g/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb	2026-03-17 03:33:35.707202686 +0000
                @@ -2 +2 @@
                -  VERSION = '1.3.5'
                +  VERSION = '1.3.6'

@github-actions
Copy link
Contributor

gem compare --diff sentry-ruby 5.26.0 6.5.0

Diff too large (153956 chars)

@github-actions
Copy link
Contributor

gem compare sentry-ruby 5.26.0 6.5.0

Compared versions: ["5.26.0", "6.5.0"]
  DIFFERENT homepage:
    5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
    6.5.0: https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby
  DIFFERENT metadata:
    5.26.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/5.26.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/5.26.0"}
    6.5.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.5.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.5.0"}
  DIFFERENT required_ruby_version:
    5.26.0: >= 2.4
    6.5.0: >= 2.7
  DIFFERENT rubygems_version:
    5.26.0: 3.6.7
    6.5.0: 3.6.9
  DIFFERENT version:
    5.26.0: 5.26.0
    6.5.0: 6.5.0
  DIFFERENT files:
    5.26.0->6.5.0:
      * Deleted:
            lib/sentry/metrics/aggregator.rb
            lib/sentry/metrics/configuration.rb
            lib/sentry/metrics/counter_metric.rb
            lib/sentry/metrics/distribution_metric.rb
            lib/sentry/metrics/gauge_metric.rb
            lib/sentry/metrics/local_aggregator.rb
            lib/sentry/metrics/metric.rb
            lib/sentry/metrics/set_metric.rb
            lib/sentry/metrics/timing.rb
      * Added:
            lib/sentry/backtrace/line.rb +99/-0
            lib/sentry/debug_structured_logger.rb +94/-0
            lib/sentry/metric_event.rb +49/-0
            lib/sentry/metric_event_buffer.rb +28/-0
            lib/sentry/sequel.rb +35/-0
            lib/sentry/telemetry_event_buffer.rb +130/-0
            lib/sentry/transport/debug_transport.rb +70/-0
            lib/sentry/utils/sample_rand.rb +97/-0
            lib/sentry/utils/telemetry_attributes.rb +30/-0
      * Changed:
            Gemfile +27/-5
            README.md +3/-3
            lib/sentry-ruby.rb +56/-29
            lib/sentry/background_worker.rb +1/-4
            lib/sentry/backtrace.rb +44/-76
            lib/sentry/baggage.rb +2/-2
            lib/sentry/breadcrumb.rb +1/-1
            lib/sentry/breadcrumb_buffer.rb +2/-2
            lib/sentry/check_in_event.rb +2/-2
            lib/sentry/client.rb +59/-136
            lib/sentry/configuration.rb +206/-78
            lib/sentry/cron/monitor_check_ins.rb +3/-3
            lib/sentry/cron/monitor_config.rb +2/-2
            lib/sentry/cron/monitor_schedule.rb +2/-2
            lib/sentry/dsn.rb +65/-1
            lib/sentry/envelope/item.rb +3/-3
            lib/sentry/error_event.rb +3/-3
            lib/sentry/event.rb +4/-10
            lib/sentry/exceptions.rb +3/-0
            lib/sentry/graphql.rb +1/-1
            lib/sentry/hub.rb +29/-5
            lib/sentry/interface.rb +1/-1
            lib/sentry/interfaces/exception.rb +2/-2
            lib/sentry/interfaces/request.rb +2/-0
            lib/sentry/interfaces/single_exception.rb +4/-4
            lib/sentry/interfaces/stacktrace.rb +3/-3
            lib/sentry/interfaces/stacktrace_builder.rb +0/-8
            lib/sentry/interfaces/threads.rb +2/-2
            lib/sentry/log_event.rb +32/-137
            lib/sentry/log_event_buffer.rb +13/-60
            lib/sentry/metrics.rb +47/-42
            lib/sentry/profiler.rb +4/-5
            lib/sentry/propagation_context.rb +101/-24
            lib/sentry/rack/capture_exceptions.rb +90/-2
            lib/sentry/release_detector.rb +1/-1
            lib/sentry/rspec.rb +1/-1
            lib/sentry/scope.rb +51/-18
            lib/sentry/span.rb +5/-17
            lib/sentry/std_lib_logger.rb +10/-1
            lib/sentry/test_helper.rb +30/-0
            lib/sentry/transaction.rb +73/-95
            lib/sentry/transaction_event.rb +4/-9
            lib/sentry/transport.rb +10/-7
            lib/sentry/transport/dummy_transport.rb +1/-0
            lib/sentry/transport/http_transport.rb +16/-16
            lib/sentry/utils/encoding_helper.rb +6/-0
            lib/sentry/utils/logging_helper.rb +25/-9
            lib/sentry/vernier/profiler.rb +4/-3
            lib/sentry/version.rb +1/-1
            sentry-ruby-core.gemspec +1/-1
            sentry-ruby.gemspec +2/-1
  DIFFERENT extra_rdoc_files:
    5.26.0->6.5.0:
      * Changed:
            README.md +3/-3
  DIFFERENT runtime dependencies:
    5.26.0->6.5.0:
      * Added:
            logger [">= 0"] (runtime)
  DIFFERENT Gemfile dependencies
    5.26.0->6.5.0:
      * Added:
            graphql [">= 2.2.6"] (runtime)
            sequel [">= 0"] (development)
            activerecord-jdbcmysql-adapter [">= 0"] (development)
            jdbc-sqlite3 [">= 0"] (development)

1 similar comment
@github-actions
Copy link
Contributor

gem compare sentry-ruby 5.26.0 6.5.0

Compared versions: ["5.26.0", "6.5.0"]
  DIFFERENT homepage:
    5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
    6.5.0: https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby
  DIFFERENT metadata:
    5.26.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/5.26.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/5.26.0"}
    6.5.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.5.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.5.0"}
  DIFFERENT required_ruby_version:
    5.26.0: >= 2.4
    6.5.0: >= 2.7
  DIFFERENT rubygems_version:
    5.26.0: 3.6.7
    6.5.0: 3.6.9
  DIFFERENT version:
    5.26.0: 5.26.0
    6.5.0: 6.5.0
  DIFFERENT files:
    5.26.0->6.5.0:
      * Deleted:
            lib/sentry/metrics/aggregator.rb
            lib/sentry/metrics/configuration.rb
            lib/sentry/metrics/counter_metric.rb
            lib/sentry/metrics/distribution_metric.rb
            lib/sentry/metrics/gauge_metric.rb
            lib/sentry/metrics/local_aggregator.rb
            lib/sentry/metrics/metric.rb
            lib/sentry/metrics/set_metric.rb
            lib/sentry/metrics/timing.rb
      * Added:
            lib/sentry/backtrace/line.rb +99/-0
            lib/sentry/debug_structured_logger.rb +94/-0
            lib/sentry/metric_event.rb +49/-0
            lib/sentry/metric_event_buffer.rb +28/-0
            lib/sentry/sequel.rb +35/-0
            lib/sentry/telemetry_event_buffer.rb +130/-0
            lib/sentry/transport/debug_transport.rb +70/-0
            lib/sentry/utils/sample_rand.rb +97/-0
            lib/sentry/utils/telemetry_attributes.rb +30/-0
      * Changed:
            Gemfile +27/-5
            README.md +3/-3
            lib/sentry-ruby.rb +56/-29
            lib/sentry/background_worker.rb +1/-4
            lib/sentry/backtrace.rb +44/-76
            lib/sentry/baggage.rb +2/-2
            lib/sentry/breadcrumb.rb +1/-1
            lib/sentry/breadcrumb_buffer.rb +2/-2
            lib/sentry/check_in_event.rb +2/-2
            lib/sentry/client.rb +59/-136
            lib/sentry/configuration.rb +206/-78
            lib/sentry/cron/monitor_check_ins.rb +3/-3
            lib/sentry/cron/monitor_config.rb +2/-2
            lib/sentry/cron/monitor_schedule.rb +2/-2
            lib/sentry/dsn.rb +65/-1
            lib/sentry/envelope/item.rb +3/-3
            lib/sentry/error_event.rb +3/-3
            lib/sentry/event.rb +4/-10
            lib/sentry/exceptions.rb +3/-0
            lib/sentry/graphql.rb +1/-1
            lib/sentry/hub.rb +29/-5
            lib/sentry/interface.rb +1/-1
            lib/sentry/interfaces/exception.rb +2/-2
            lib/sentry/interfaces/request.rb +2/-0
            lib/sentry/interfaces/single_exception.rb +4/-4
            lib/sentry/interfaces/stacktrace.rb +3/-3
            lib/sentry/interfaces/stacktrace_builder.rb +0/-8
            lib/sentry/interfaces/threads.rb +2/-2
            lib/sentry/log_event.rb +32/-137
            lib/sentry/log_event_buffer.rb +13/-60
            lib/sentry/metrics.rb +47/-42
            lib/sentry/profiler.rb +4/-5
            lib/sentry/propagation_context.rb +101/-24
            lib/sentry/rack/capture_exceptions.rb +90/-2
            lib/sentry/release_detector.rb +1/-1
            lib/sentry/rspec.rb +1/-1
            lib/sentry/scope.rb +51/-18
            lib/sentry/span.rb +5/-17
            lib/sentry/std_lib_logger.rb +10/-1
            lib/sentry/test_helper.rb +30/-0
            lib/sentry/transaction.rb +73/-95
            lib/sentry/transaction_event.rb +4/-9
            lib/sentry/transport.rb +10/-7
            lib/sentry/transport/dummy_transport.rb +1/-0
            lib/sentry/transport/http_transport.rb +16/-16
            lib/sentry/utils/encoding_helper.rb +6/-0
            lib/sentry/utils/logging_helper.rb +25/-9
            lib/sentry/vernier/profiler.rb +4/-3
            lib/sentry/version.rb +1/-1
            sentry-ruby-core.gemspec +1/-1
            sentry-ruby.gemspec +2/-1
  DIFFERENT extra_rdoc_files:
    5.26.0->6.5.0:
      * Changed:
            README.md +3/-3
  DIFFERENT runtime dependencies:
    5.26.0->6.5.0:
      * Added:
            logger [">= 0"] (runtime)
  DIFFERENT Gemfile dependencies
    5.26.0->6.5.0:
      * Added:
            graphql [">= 2.2.6"] (runtime)
            sequel [">= 0"] (development)
            activerecord-jdbcmysql-adapter [">= 0"] (development)
            jdbc-sqlite3 [">= 0"] (development)

@github-actions
Copy link
Contributor

gem compare --diff sentry-ruby 5.26.0 6.5.0

Diff too large (153845 chars)

@github-actions
Copy link
Contributor

gem compare concurrent-ruby 1.3.5 1.3.6

Compared versions: ["1.3.5", "1.3.6"]
  DIFFERENT date:
    1.3.5: 2025-01-15 00:00:00 UTC
    1.3.6: 2025-12-13 00:00:00 UTC
  DIFFERENT rubygems_version:
    1.3.5: 3.3.26
    1.3.6: 3.3.27
  DIFFERENT version:
    1.3.5: 1.3.5
    1.3.6: 1.3.6
  DIFFERENT files:
    1.3.5->1.3.6:
      * Added:
            lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb +55/-0
            lib/concurrent-ruby/concurrent/collection/timeout_queue.rb +18/-0
      * Changed:
            CHANGELOG.md +6/-0
            README.md +4/-2
            lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb +1/-0
            lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb +2/-4
            lib/concurrent-ruby/concurrent/executor/java_executor_service.rb +1/-0
            lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb +2/-0
            lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb +2/-0
            lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb +54/-31
            lib/concurrent-ruby/concurrent/executor/timer_set.rb +4/-1
            lib/concurrent-ruby/concurrent/executors.rb +0/-1
            lib/concurrent-ruby/concurrent/mvar.rb +4/-4
            lib/concurrent-ruby/concurrent/promise.rb +1/-1
            lib/concurrent-ruby/concurrent/timer_task.rb +7/-2
            lib/concurrent-ruby/concurrent/version.rb +1/-1
  DIFFERENT extra_rdoc_files:
    1.3.5->1.3.6:
      * Changed:
            README.md +4/-2
            CHANGELOG.md +6/-0

@github-actions
Copy link
Contributor

gem compare --diff concurrent-ruby 1.3.5 1.3.6

Compared versions: ["1.3.5", "1.3.6"]
  DIFFERENT files:
    1.3.5->1.3.6:
      * Added:
        lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb
                --- /tmp/20260317-948-kqqi7z	2026-03-17 03:34:15.378483971 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb	2026-03-17 03:34:15.367484061 +0000
                @@ -0,0 +1,55 @@
                +module Concurrent
                +  module Collection
                +    # @!visibility private
                +    # @!macro ruby_timeout_queue
                +    class RubyTimeoutQueue < ::Queue
                +      def initialize(*args)
                +        if RUBY_VERSION >= '3.2'
                +          raise "#{self.class.name} is not needed on Ruby 3.2 or later, use ::Queue instead"
                +        end
                +
                +        super(*args)
                +
                +        @mutex = Mutex.new
                +        @cond_var = ConditionVariable.new
                +      end
                +
                +      def push(obj)
                +        @mutex.synchronize do
                +          super(obj)
                +          @cond_var.signal
                +        end
                +      end
                +      alias_method :enq, :push
                +      alias_method :<<, :push
                +
                +      def pop(non_block = false, timeout: nil)
                +        if non_block && timeout
                +          raise ArgumentError, "can't set a timeout if non_block is enabled"
                +        end
                +
                +        if non_block
                +          super(true)
                +        elsif timeout
                +          @mutex.synchronize do
                +            deadline = Concurrent.monotonic_time + timeout
                +            while (now = Concurrent.monotonic_time) < deadline && empty?
                +              @cond_var.wait(@mutex, deadline - now)
                +            end
                +            begin
                +              return super(true)
                +            rescue ThreadError
                +              # still empty
                +              nil
                +            end
                +          end
                +        else
                +          super(false)
                +        end
                +      end
                +      alias_method :deq, :pop
                +      alias_method :shift, :pop
                +    end
                +    private_constant :RubyTimeoutQueue
                +  end
                +end
        lib/concurrent-ruby/concurrent/collection/timeout_queue.rb
                --- /tmp/20260317-948-jiygib	2026-03-17 03:34:15.380483954 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb	2026-03-17 03:34:15.367484061 +0000
                @@ -0,0 +1,18 @@
                +module Concurrent
                +  module Collection
                +    # @!visibility private
                +    # @!macro internal_implementation_note
                +    TimeoutQueueImplementation = if RUBY_VERSION >= '3.2'
                +                                   ::Queue
                +                                 else
                +                                   require 'concurrent/collection/ruby_timeout_queue'
                +                                   RubyTimeoutQueue
                +                                 end
                +    private_constant :TimeoutQueueImplementation
                +
                +    # @!visibility private
                +    # @!macro timeout_queue
                +    class TimeoutQueue < TimeoutQueueImplementation
                +    end
                +  end
                +end
      * Changed:
        CHANGELOG.md
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/CHANGELOG.md	2026-03-17 03:34:15.337484307 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/CHANGELOG.md	2026-03-17 03:34:15.357484143 +0000
                @@ -2,0 +3,6 @@
                +## Release v1.3.6 (13 December 2025)
                +
                +concurrent-ruby:
                +
                +* See the [release notes on GitHub](https://github.com/ruby-concurrency/concurrent-ruby/releases/tag/v1.3.6).
                +
        README.md
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/README.md	2026-03-17 03:34:15.337484307 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/README.md	2026-03-17 03:34:15.358484135 +0000
                @@ -210 +210 @@
                -keep backward compatibility (there may also lack tests and documentation). Semantic versions will
                +keep backward compatibility (they may also lack tests and documentation). Semantic versions will
                @@ -361 +361,2 @@
                -* Install Docker, required for Windows builds
                +* Install Docker or Podman, required for Windows builds
                +* If `bundle config get path` is set, use `bundle config set --local path.system true` otherwise the `gem name, path: '.'` gems won't be found (Bundler limitation).
                @@ -380,0 +382 @@
                +* [Joshua Young](https://github.com/joshuay03)
        lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-17 03:34:15.345484241 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-17 03:34:15.364484086 +0000
                @@ -8,0 +9 @@
                +    return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
        lib/concurrent-ruby/concurrent/concurrent_ruby.jar
                Binary files /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
        lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-17 03:34:15.350484200 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-17 03:34:15.370484036 +0000
                @@ -84,4 +84,2 @@
                -  #   This is a no-op on some pool implementation (e.g. the Java one).  The Ruby
                -  #   pool will auto-prune each time a new job is posted. You will need to call
                -  #   this method explicitly in case your application post jobs in bursts (a
                -  #   lot of jobs and then nothing for long periods)
                +  #   This is a no-op on all pool implementations as they prune themselves
                +  #   automatically, and has been deprecated.
        lib/concurrent-ruby/concurrent/executor/java_executor_service.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-17 03:34:15.350484200 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-17 03:34:15.370484036 +0000
                @@ -48,0 +49 @@
                +          wait_for_termination
        lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-17 03:34:15.350484200 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-17 03:34:15.370484036 +0000
                @@ -10,0 +11 @@
                +      include Concern::Deprecation
                @@ -102,0 +104 @@
                +        deprecated "#prune_pool has no effect and will be removed in the next release."
        lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-17 03:34:15.350484200 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-17 03:34:15.370484036 +0000
                @@ -1,0 +2 @@
                +require 'concurrent/executor/serial_executor_service'
                @@ -8,0 +10 @@
                +    include SerialExecutorService
        lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-17 03:34:15.351484192 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-17 03:34:15.370484036 +0000
                @@ -5,0 +6 @@
                +require 'concurrent/collection/timeout_queue'
                @@ -12,0 +14 @@
                +    include Concern::Deprecation
                @@ -96,0 +99,4 @@
                +    # removes the worker if it can be pruned
                +    #
                +    # @return [true, false] if the worker was pruned
                +    #
                @@ -98,2 +104,17 @@
                -    def remove_busy_worker(worker)
                -      synchronize { ns_remove_busy_worker worker }
                +    def prune_worker(worker)
                +      synchronize do
                +        if ns_prunable_capacity > 0
                +          remove_worker worker
                +          true
                +        else
                +          false
                +        end
                +      end
                +    end
                +
                +    # @!visibility private
                +    def remove_worker(worker)
                +      synchronize do
                +        ns_remove_ready_worker worker
                +        ns_remove_busy_worker worker
                +      end
                @@ -119 +140 @@
                -      synchronize { ns_prune_pool }
                +      deprecated "#prune_pool has no effect and will be removed in next the release, see https://github.com/ruby-concurrency/concurrent-ruby/pull/1082."
                @@ -149,3 +169,0 @@
                -
                -      @gc_interval  = opts.fetch(:gc_interval, @idletime / 2.0).to_i # undocumented
                -      @next_gc_time = Concurrent.monotonic_time + @gc_interval
                @@ -164,0 +183 @@
                +        nil
                @@ -166 +185 @@
                -        return fallback_action(*args, &task)
                +        fallback_action(*args, &task)
                @@ -168,3 +186,0 @@
                -
                -      ns_prune_pool if @next_gc_time < Concurrent.monotonic_time
                -      nil
                @@ -221 +237 @@
                -      
                +
                @@ -268 +284 @@
                -    # removes a worker which is not in not tracked in @ready
                +    # removes a worker which is not tracked in @ready
                @@ -277,2 +292,0 @@
                -    # try oldest worker if it is idle for enough time, it's returned back at the start
                -    #
                @@ -280,11 +294,3 @@
                -    def ns_prune_pool
                -      now = Concurrent.monotonic_time
                -      stopped_workers = 0
                -      while !@ready.empty? && (@pool.size - stopped_workers > @min_length)
                -        worker, last_message = @ready.first
                -        if now - last_message > self.idletime
                -          stopped_workers += 1
                -          @ready.shift
                -          worker << :stop
                -        else break
                -        end
                +    def ns_remove_ready_worker(worker)
                +      if index = @ready.index { |rw, _| rw == worker }
                +        @ready.delete_at(index)
                @@ -291,0 +298,2 @@
                +      true
                +    end
                @@ -293 +301,10 @@
                -      @next_gc_time = Concurrent.monotonic_time + @gc_interval
                +    # @return [Integer] number of excess idle workers which can be removed without
                +    #                   going below min_length, or all workers if not running
                +    #
                +    # @!visibility private
                +    def ns_prunable_capacity
                +      if running?
                +        [@pool.size - @min_length, @ready.size].min
                +      else
                +        @pool.size
                +      end
                @@ -295,0 +313 @@
                +    # @!visibility private
                @@ -315 +333 @@
                -        @queue  = Queue.new
                +        @queue  = Collection::TimeoutQueue.new
                @@ -341 +359 @@
                -            loop do
                +            prunable = true
                @@ -343 +361,6 @@
                -              case message = my_queue.pop
                +            loop do
                +              timeout = prunable && my_pool.running? ? my_idletime : nil
                +              case message = my_queue.pop(timeout: timeout)
                +              when nil
                +                throw :stop if my_pool.prune_worker(self)
                +                prunable = false
                @@ -345 +368 @@
                -                my_pool.remove_busy_worker(self)
                +                my_pool.remove_worker(self)
                @@ -347 +369,0 @@
                -
                @@ -351,0 +374 @@
                +                prunable = true
        lib/concurrent-ruby/concurrent/executor/timer_set.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-17 03:34:15.351484192 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-17 03:34:15.371484028 +0000
                @@ -63,0 +64 @@
                +      @timer_executor.kill
                @@ -125 +126,3 @@
                -      @timer_executor.kill
                +      @condition.set
                +      @condition.reset
                +      @timer_executor.shutdown
        lib/concurrent-ruby/concurrent/executors.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb	2026-03-17 03:34:15.351484192 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb	2026-03-17 03:34:15.371484028 +0000
                @@ -13 +12,0 @@
                -require 'concurrent/executor/cached_thread_pool'
        lib/concurrent-ruby/concurrent/mvar.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-17 03:34:15.352484184 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-17 03:34:15.372484020 +0000
                @@ -12 +12 @@
                -  # `#mutate` that is atomic with respect to operations on the same instance.
                +  # `#modify` that is atomic with respect to operations on the same instance.
                @@ -90 +90 @@
                -        # if we timeoud out we'll still be empty
                +        # If we timed out we'll still be empty
                @@ -119 +119 @@
                -    # `put` the transformed value. Returns the transformed value. A timeout can
                +    # `put` the transformed value. Returns the pre-transform value. A timeout can
                @@ -122 +122 @@
                -    # @return [Object] the transformed value, or `TIMEOUT`
                +    # @return [Object] the pre-transform value, or `TIMEOUT`
        lib/concurrent-ruby/concurrent/promise.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb	2026-03-17 03:34:15.353484176 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb	2026-03-17 03:34:15.372484020 +0000
                @@ -170 +170 @@
                -  # c1.value       #=> 45
                +  # c1.value       #=> 42
        lib/concurrent-ruby/concurrent/timer_task.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-17 03:34:15.356484151 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-17 03:34:15.376483987 +0000
                @@ -4,0 +5 @@
                +require 'concurrent/atomic/atomic_fixnum'
                @@ -238,0 +240 @@
                +          @age.increment
                @@ -311,0 +314 @@
                +      @age = Concurrent::AtomicFixnum.new(0)
                @@ -331 +334 @@
                -      ScheduledTask.execute(interval, executor: @executor, args: [Concurrent::Event.new], &method(:execute_task))
                +      ScheduledTask.execute(interval, executor: @executor, args: [Concurrent::Event.new, @age.value], &method(:execute_task))
                @@ -336 +339 @@
                -    def execute_task(completion)
                +    def execute_task(completion, age_when_scheduled)
                @@ -337,0 +341,2 @@
                +      return nil unless @age.value == age_when_scheduled
                +
        lib/concurrent-ruby/concurrent/version.rb
                --- /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb	2026-03-17 03:34:15.357484143 +0000
                +++ /tmp/d20260317-948-yj8goz/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb	2026-03-17 03:34:15.377483979 +0000
                @@ -2 +2 @@
                -  VERSION = '1.3.5'
                +  VERSION = '1.3.6'

@github-actions
Copy link
Contributor

gem compare concurrent-ruby 1.3.5 1.3.6

Compared versions: ["1.3.5", "1.3.6"]
  DIFFERENT date:
    1.3.5: 2025-01-15 00:00:00 UTC
    1.3.6: 2025-12-13 00:00:00 UTC
  DIFFERENT rubygems_version:
    1.3.5: 3.3.26
    1.3.6: 3.3.27
  DIFFERENT version:
    1.3.5: 1.3.5
    1.3.6: 1.3.6
  DIFFERENT files:
    1.3.5->1.3.6:
      * Added:
            lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb +55/-0
            lib/concurrent-ruby/concurrent/collection/timeout_queue.rb +18/-0
      * Changed:
            CHANGELOG.md +6/-0
            README.md +4/-2
            lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb +1/-0
            lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb +2/-4
            lib/concurrent-ruby/concurrent/executor/java_executor_service.rb +1/-0
            lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb +2/-0
            lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb +2/-0
            lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb +54/-31
            lib/concurrent-ruby/concurrent/executor/timer_set.rb +4/-1
            lib/concurrent-ruby/concurrent/executors.rb +0/-1
            lib/concurrent-ruby/concurrent/mvar.rb +4/-4
            lib/concurrent-ruby/concurrent/promise.rb +1/-1
            lib/concurrent-ruby/concurrent/timer_task.rb +7/-2
            lib/concurrent-ruby/concurrent/version.rb +1/-1
  DIFFERENT extra_rdoc_files:
    1.3.5->1.3.6:
      * Changed:
            README.md +4/-2
            CHANGELOG.md +6/-0

@github-actions
Copy link
Contributor

gem compare sentry-ruby 5.26.0 6.5.0

Compared versions: ["5.26.0", "6.5.0"]
  DIFFERENT homepage:
    5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
    6.5.0: https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby
  DIFFERENT metadata:
    5.26.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/5.26.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/5.26.0"}
    6.5.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.5.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.5.0"}
  DIFFERENT required_ruby_version:
    5.26.0: >= 2.4
    6.5.0: >= 2.7
  DIFFERENT rubygems_version:
    5.26.0: 3.6.7
    6.5.0: 3.6.9
  DIFFERENT version:
    5.26.0: 5.26.0
    6.5.0: 6.5.0
  DIFFERENT files:
    5.26.0->6.5.0:
      * Deleted:
            lib/sentry/metrics/aggregator.rb
            lib/sentry/metrics/configuration.rb
            lib/sentry/metrics/counter_metric.rb
            lib/sentry/metrics/distribution_metric.rb
            lib/sentry/metrics/gauge_metric.rb
            lib/sentry/metrics/local_aggregator.rb
            lib/sentry/metrics/metric.rb
            lib/sentry/metrics/set_metric.rb
            lib/sentry/metrics/timing.rb
      * Added:
            lib/sentry/backtrace/line.rb +99/-0
            lib/sentry/debug_structured_logger.rb +94/-0
            lib/sentry/metric_event.rb +49/-0
            lib/sentry/metric_event_buffer.rb +28/-0
            lib/sentry/sequel.rb +35/-0
            lib/sentry/telemetry_event_buffer.rb +130/-0
            lib/sentry/transport/debug_transport.rb +70/-0
            lib/sentry/utils/sample_rand.rb +97/-0
            lib/sentry/utils/telemetry_attributes.rb +30/-0
      * Changed:
            Gemfile +27/-5
            README.md +3/-3
            lib/sentry-ruby.rb +56/-29
            lib/sentry/background_worker.rb +1/-4
            lib/sentry/backtrace.rb +44/-76
            lib/sentry/baggage.rb +2/-2
            lib/sentry/breadcrumb.rb +1/-1
            lib/sentry/breadcrumb_buffer.rb +2/-2
            lib/sentry/check_in_event.rb +2/-2
            lib/sentry/client.rb +59/-136
            lib/sentry/configuration.rb +206/-78
            lib/sentry/cron/monitor_check_ins.rb +3/-3
            lib/sentry/cron/monitor_config.rb +2/-2
            lib/sentry/cron/monitor_schedule.rb +2/-2
            lib/sentry/dsn.rb +65/-1
            lib/sentry/envelope/item.rb +3/-3
            lib/sentry/error_event.rb +3/-3
            lib/sentry/event.rb +4/-10
            lib/sentry/exceptions.rb +3/-0
            lib/sentry/graphql.rb +1/-1
            lib/sentry/hub.rb +29/-5
            lib/sentry/interface.rb +1/-1
            lib/sentry/interfaces/exception.rb +2/-2
            lib/sentry/interfaces/request.rb +2/-0
            lib/sentry/interfaces/single_exception.rb +4/-4
            lib/sentry/interfaces/stacktrace.rb +3/-3
            lib/sentry/interfaces/stacktrace_builder.rb +0/-8
            lib/sentry/interfaces/threads.rb +2/-2
            lib/sentry/log_event.rb +32/-137
            lib/sentry/log_event_buffer.rb +13/-60
            lib/sentry/metrics.rb +47/-42
            lib/sentry/profiler.rb +4/-5
            lib/sentry/propagation_context.rb +101/-24
            lib/sentry/rack/capture_exceptions.rb +90/-2
            lib/sentry/release_detector.rb +1/-1
            lib/sentry/rspec.rb +1/-1
            lib/sentry/scope.rb +51/-18
            lib/sentry/span.rb +5/-17
            lib/sentry/std_lib_logger.rb +10/-1
            lib/sentry/test_helper.rb +30/-0
            lib/sentry/transaction.rb +73/-95
            lib/sentry/transaction_event.rb +4/-9
            lib/sentry/transport.rb +10/-7
            lib/sentry/transport/dummy_transport.rb +1/-0
            lib/sentry/transport/http_transport.rb +16/-16
            lib/sentry/utils/encoding_helper.rb +6/-0
            lib/sentry/utils/logging_helper.rb +25/-9
            lib/sentry/vernier/profiler.rb +4/-3
            lib/sentry/version.rb +1/-1
            sentry-ruby-core.gemspec +1/-1
            sentry-ruby.gemspec +2/-1
  DIFFERENT extra_rdoc_files:
    5.26.0->6.5.0:
      * Changed:
            README.md +3/-3
  DIFFERENT runtime dependencies:
    5.26.0->6.5.0:
      * Added:
            logger [">= 0"] (runtime)
  DIFFERENT Gemfile dependencies
    5.26.0->6.5.0:
      * Added:
            graphql [">= 2.2.6"] (runtime)
            sequel [">= 0"] (development)
            activerecord-jdbcmysql-adapter [">= 0"] (development)
            jdbc-sqlite3 [">= 0"] (development)

@github-actions
Copy link
Contributor

gem compare --diff concurrent-ruby 1.3.5 1.3.6

Compared versions: ["1.3.5", "1.3.6"]
  DIFFERENT files:
    1.3.5->1.3.6:
      * Added:
        lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb
                --- /tmp/20260317-944-7v0acu	2026-03-17 03:34:35.220939608 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb	2026-03-17 03:34:35.208939596 +0000
                @@ -0,0 +1,55 @@
                +module Concurrent
                +  module Collection
                +    # @!visibility private
                +    # @!macro ruby_timeout_queue
                +    class RubyTimeoutQueue < ::Queue
                +      def initialize(*args)
                +        if RUBY_VERSION >= '3.2'
                +          raise "#{self.class.name} is not needed on Ruby 3.2 or later, use ::Queue instead"
                +        end
                +
                +        super(*args)
                +
                +        @mutex = Mutex.new
                +        @cond_var = ConditionVariable.new
                +      end
                +
                +      def push(obj)
                +        @mutex.synchronize do
                +          super(obj)
                +          @cond_var.signal
                +        end
                +      end
                +      alias_method :enq, :push
                +      alias_method :<<, :push
                +
                +      def pop(non_block = false, timeout: nil)
                +        if non_block && timeout
                +          raise ArgumentError, "can't set a timeout if non_block is enabled"
                +        end
                +
                +        if non_block
                +          super(true)
                +        elsif timeout
                +          @mutex.synchronize do
                +            deadline = Concurrent.monotonic_time + timeout
                +            while (now = Concurrent.monotonic_time) < deadline && empty?
                +              @cond_var.wait(@mutex, deadline - now)
                +            end
                +            begin
                +              return super(true)
                +            rescue ThreadError
                +              # still empty
                +              nil
                +            end
                +          end
                +        else
                +          super(false)
                +        end
                +      end
                +      alias_method :deq, :pop
                +      alias_method :shift, :pop
                +    end
                +    private_constant :RubyTimeoutQueue
                +  end
                +end
        lib/concurrent-ruby/concurrent/collection/timeout_queue.rb
                --- /tmp/20260317-944-10zgcz	2026-03-17 03:34:35.223939611 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb	2026-03-17 03:34:35.208939596 +0000
                @@ -0,0 +1,18 @@
                +module Concurrent
                +  module Collection
                +    # @!visibility private
                +    # @!macro internal_implementation_note
                +    TimeoutQueueImplementation = if RUBY_VERSION >= '3.2'
                +                                   ::Queue
                +                                 else
                +                                   require 'concurrent/collection/ruby_timeout_queue'
                +                                   RubyTimeoutQueue
                +                                 end
                +    private_constant :TimeoutQueueImplementation
                +
                +    # @!visibility private
                +    # @!macro timeout_queue
                +    class TimeoutQueue < TimeoutQueueImplementation
                +    end
                +  end
                +end
      * Changed:
        CHANGELOG.md
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/CHANGELOG.md	2026-03-17 03:34:35.175939562 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/CHANGELOG.md	2026-03-17 03:34:35.198939586 +0000
                @@ -2,0 +3,6 @@
                +## Release v1.3.6 (13 December 2025)
                +
                +concurrent-ruby:
                +
                +* See the [release notes on GitHub](https://github.com/ruby-concurrency/concurrent-ruby/releases/tag/v1.3.6).
                +
        README.md
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/README.md	2026-03-17 03:34:35.176939563 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/README.md	2026-03-17 03:34:35.198939586 +0000
                @@ -210 +210 @@
                -keep backward compatibility (there may also lack tests and documentation). Semantic versions will
                +keep backward compatibility (they may also lack tests and documentation). Semantic versions will
                @@ -361 +361,2 @@
                -* Install Docker, required for Windows builds
                +* Install Docker or Podman, required for Windows builds
                +* If `bundle config get path` is set, use `bundle config set --local path.system true` otherwise the `gem name, path: '.'` gems won't be found (Bundler limitation).
                @@ -380,0 +382 @@
                +* [Joshua Young](https://github.com/joshuay03)
        lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-17 03:34:35.185939572 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-17 03:34:35.205939593 +0000
                @@ -8,0 +9 @@
                +    return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
        lib/concurrent-ruby/concurrent/concurrent_ruby.jar
                Binary files /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
        lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-17 03:34:35.191939578 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-17 03:34:35.211939599 +0000
                @@ -84,4 +84,2 @@
                -  #   This is a no-op on some pool implementation (e.g. the Java one).  The Ruby
                -  #   pool will auto-prune each time a new job is posted. You will need to call
                -  #   this method explicitly in case your application post jobs in bursts (a
                -  #   lot of jobs and then nothing for long periods)
                +  #   This is a no-op on all pool implementations as they prune themselves
                +  #   automatically, and has been deprecated.
        lib/concurrent-ruby/concurrent/executor/java_executor_service.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-17 03:34:35.191939578 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-17 03:34:35.212939600 +0000
                @@ -48,0 +49 @@
                +          wait_for_termination
        lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-17 03:34:35.191939578 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-17 03:34:35.212939600 +0000
                @@ -10,0 +11 @@
                +      include Concern::Deprecation
                @@ -102,0 +104 @@
                +        deprecated "#prune_pool has no effect and will be removed in the next release."
        lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-17 03:34:35.191939578 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-17 03:34:35.212939600 +0000
                @@ -1,0 +2 @@
                +require 'concurrent/executor/serial_executor_service'
                @@ -8,0 +10 @@
                +    include SerialExecutorService
        lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-17 03:34:35.191939578 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-17 03:34:35.212939600 +0000
                @@ -5,0 +6 @@
                +require 'concurrent/collection/timeout_queue'
                @@ -12,0 +14 @@
                +    include Concern::Deprecation
                @@ -96,0 +99,4 @@
                +    # removes the worker if it can be pruned
                +    #
                +    # @return [true, false] if the worker was pruned
                +    #
                @@ -98,2 +104,17 @@
                -    def remove_busy_worker(worker)
                -      synchronize { ns_remove_busy_worker worker }
                +    def prune_worker(worker)
                +      synchronize do
                +        if ns_prunable_capacity > 0
                +          remove_worker worker
                +          true
                +        else
                +          false
                +        end
                +      end
                +    end
                +
                +    # @!visibility private
                +    def remove_worker(worker)
                +      synchronize do
                +        ns_remove_ready_worker worker
                +        ns_remove_busy_worker worker
                +      end
                @@ -119 +140 @@
                -      synchronize { ns_prune_pool }
                +      deprecated "#prune_pool has no effect and will be removed in next the release, see https://github.com/ruby-concurrency/concurrent-ruby/pull/1082."
                @@ -149,3 +169,0 @@
                -
                -      @gc_interval  = opts.fetch(:gc_interval, @idletime / 2.0).to_i # undocumented
                -      @next_gc_time = Concurrent.monotonic_time + @gc_interval
                @@ -164,0 +183 @@
                +        nil
                @@ -166 +185 @@
                -        return fallback_action(*args, &task)
                +        fallback_action(*args, &task)
                @@ -168,3 +186,0 @@
                -
                -      ns_prune_pool if @next_gc_time < Concurrent.monotonic_time
                -      nil
                @@ -221 +237 @@
                -      
                +
                @@ -268 +284 @@
                -    # removes a worker which is not in not tracked in @ready
                +    # removes a worker which is not tracked in @ready
                @@ -277,2 +292,0 @@
                -    # try oldest worker if it is idle for enough time, it's returned back at the start
                -    #
                @@ -280,11 +294,3 @@
                -    def ns_prune_pool
                -      now = Concurrent.monotonic_time
                -      stopped_workers = 0
                -      while !@ready.empty? && (@pool.size - stopped_workers > @min_length)
                -        worker, last_message = @ready.first
                -        if now - last_message > self.idletime
                -          stopped_workers += 1
                -          @ready.shift
                -          worker << :stop
                -        else break
                -        end
                +    def ns_remove_ready_worker(worker)
                +      if index = @ready.index { |rw, _| rw == worker }
                +        @ready.delete_at(index)
                @@ -291,0 +298,2 @@
                +      true
                +    end
                @@ -293 +301,10 @@
                -      @next_gc_time = Concurrent.monotonic_time + @gc_interval
                +    # @return [Integer] number of excess idle workers which can be removed without
                +    #                   going below min_length, or all workers if not running
                +    #
                +    # @!visibility private
                +    def ns_prunable_capacity
                +      if running?
                +        [@pool.size - @min_length, @ready.size].min
                +      else
                +        @pool.size
                +      end
                @@ -295,0 +313 @@
                +    # @!visibility private
                @@ -315 +333 @@
                -        @queue  = Queue.new
                +        @queue  = Collection::TimeoutQueue.new
                @@ -341 +359 @@
                -            loop do
                +            prunable = true
                @@ -343 +361,6 @@
                -              case message = my_queue.pop
                +            loop do
                +              timeout = prunable && my_pool.running? ? my_idletime : nil
                +              case message = my_queue.pop(timeout: timeout)
                +              when nil
                +                throw :stop if my_pool.prune_worker(self)
                +                prunable = false
                @@ -345 +368 @@
                -                my_pool.remove_busy_worker(self)
                +                my_pool.remove_worker(self)
                @@ -347 +369,0 @@
                -
                @@ -351,0 +374 @@
                +                prunable = true
        lib/concurrent-ruby/concurrent/executor/timer_set.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-17 03:34:35.192939579 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-17 03:34:35.213939601 +0000
                @@ -63,0 +64 @@
                +      @timer_executor.kill
                @@ -125 +126,3 @@
                -      @timer_executor.kill
                +      @condition.set
                +      @condition.reset
                +      @timer_executor.shutdown
        lib/concurrent-ruby/concurrent/executors.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb	2026-03-17 03:34:35.192939579 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb	2026-03-17 03:34:35.213939601 +0000
                @@ -13 +12,0 @@
                -require 'concurrent/executor/cached_thread_pool'
        lib/concurrent-ruby/concurrent/mvar.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-17 03:34:35.193939580 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-17 03:34:35.215939603 +0000
                @@ -12 +12 @@
                -  # `#mutate` that is atomic with respect to operations on the same instance.
                +  # `#modify` that is atomic with respect to operations on the same instance.
                @@ -90 +90 @@
                -        # if we timeoud out we'll still be empty
                +        # If we timed out we'll still be empty
                @@ -119 +119 @@
                -    # `put` the transformed value. Returns the transformed value. A timeout can
                +    # `put` the transformed value. Returns the pre-transform value. A timeout can
                @@ -122 +122 @@
                -    # @return [Object] the transformed value, or `TIMEOUT`
                +    # @return [Object] the pre-transform value, or `TIMEOUT`
        lib/concurrent-ruby/concurrent/promise.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb	2026-03-17 03:34:35.193939580 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb	2026-03-17 03:34:35.215939603 +0000
                @@ -170 +170 @@
                -  # c1.value       #=> 45
                +  # c1.value       #=> 42
        lib/concurrent-ruby/concurrent/timer_task.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-17 03:34:35.197939585 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-17 03:34:35.219939607 +0000
                @@ -4,0 +5 @@
                +require 'concurrent/atomic/atomic_fixnum'
                @@ -238,0 +240 @@
                +          @age.increment
                @@ -311,0 +314 @@
                +      @age = Concurrent::AtomicFixnum.new(0)
                @@ -331 +334 @@
                -      ScheduledTask.execute(interval, executor: @executor, args: [Concurrent::Event.new], &method(:execute_task))
                +      ScheduledTask.execute(interval, executor: @executor, args: [Concurrent::Event.new, @age.value], &method(:execute_task))
                @@ -336 +339 @@
                -    def execute_task(completion)
                +    def execute_task(completion, age_when_scheduled)
                @@ -337,0 +341,2 @@
                +      return nil unless @age.value == age_when_scheduled
                +
        lib/concurrent-ruby/concurrent/version.rb
                --- /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb	2026-03-17 03:34:35.197939585 +0000
                +++ /tmp/d20260317-944-r4kilk/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb	2026-03-17 03:34:35.220939608 +0000
                @@ -2 +2 @@
                -  VERSION = '1.3.5'
                +  VERSION = '1.3.6'

@github-actions
Copy link
Contributor

gem compare --diff sentry-ruby 5.26.0 6.5.0

Diff too large (153956 chars)

@github-actions
Copy link
Contributor

gem compare --diff sentry-ruby 5.26.0 6.5.0

Diff too large (153845 chars)

@github-actions
Copy link
Contributor

gem compare sentry-ruby 5.26.0 6.5.0

Compared versions: ["5.26.0", "6.5.0"]
  DIFFERENT homepage:
    5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
    6.5.0: https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby
  DIFFERENT metadata:
    5.26.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/5.26.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/5.26.0"}
    6.5.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.5.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.5.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.5.0"}
  DIFFERENT required_ruby_version:
    5.26.0: >= 2.4
    6.5.0: >= 2.7
  DIFFERENT rubygems_version:
    5.26.0: 3.6.7
    6.5.0: 3.6.9
  DIFFERENT version:
    5.26.0: 5.26.0
    6.5.0: 6.5.0
  DIFFERENT files:
    5.26.0->6.5.0:
      * Deleted:
            lib/sentry/metrics/aggregator.rb
            lib/sentry/metrics/configuration.rb
            lib/sentry/metrics/counter_metric.rb
            lib/sentry/metrics/distribution_metric.rb
            lib/sentry/metrics/gauge_metric.rb
            lib/sentry/metrics/local_aggregator.rb
            lib/sentry/metrics/metric.rb
            lib/sentry/metrics/set_metric.rb
            lib/sentry/metrics/timing.rb
      * Added:
            lib/sentry/backtrace/line.rb +99/-0
            lib/sentry/debug_structured_logger.rb +94/-0
            lib/sentry/metric_event.rb +49/-0
            lib/sentry/metric_event_buffer.rb +28/-0
            lib/sentry/sequel.rb +35/-0
            lib/sentry/telemetry_event_buffer.rb +130/-0
            lib/sentry/transport/debug_transport.rb +70/-0
            lib/sentry/utils/sample_rand.rb +97/-0
            lib/sentry/utils/telemetry_attributes.rb +30/-0
      * Changed:
            Gemfile +27/-5
            README.md +3/-3
            lib/sentry-ruby.rb +56/-29
            lib/sentry/background_worker.rb +1/-4
            lib/sentry/backtrace.rb +44/-76
            lib/sentry/baggage.rb +2/-2
            lib/sentry/breadcrumb.rb +1/-1
            lib/sentry/breadcrumb_buffer.rb +2/-2
            lib/sentry/check_in_event.rb +2/-2
            lib/sentry/client.rb +59/-136
            lib/sentry/configuration.rb +206/-78
            lib/sentry/cron/monitor_check_ins.rb +3/-3
            lib/sentry/cron/monitor_config.rb +2/-2
            lib/sentry/cron/monitor_schedule.rb +2/-2
            lib/sentry/dsn.rb +65/-1
            lib/sentry/envelope/item.rb +3/-3
            lib/sentry/error_event.rb +3/-3
            lib/sentry/event.rb +4/-10
            lib/sentry/exceptions.rb +3/-0
            lib/sentry/graphql.rb +1/-1
            lib/sentry/hub.rb +29/-5
            lib/sentry/interface.rb +1/-1
            lib/sentry/interfaces/exception.rb +2/-2
            lib/sentry/interfaces/request.rb +2/-0
            lib/sentry/interfaces/single_exception.rb +4/-4
            lib/sentry/interfaces/stacktrace.rb +3/-3
            lib/sentry/interfaces/stacktrace_builder.rb +0/-8
            lib/sentry/interfaces/threads.rb +2/-2
            lib/sentry/log_event.rb +32/-137
            lib/sentry/log_event_buffer.rb +13/-60
            lib/sentry/metrics.rb +47/-42
            lib/sentry/profiler.rb +4/-5
            lib/sentry/propagation_context.rb +101/-24
            lib/sentry/rack/capture_exceptions.rb +90/-2
            lib/sentry/release_detector.rb +1/-1
            lib/sentry/rspec.rb +1/-1
            lib/sentry/scope.rb +51/-18
            lib/sentry/span.rb +5/-17
            lib/sentry/std_lib_logger.rb +10/-1
            lib/sentry/test_helper.rb +30/-0
            lib/sentry/transaction.rb +73/-95
            lib/sentry/transaction_event.rb +4/-9
            lib/sentry/transport.rb +10/-7
            lib/sentry/transport/dummy_transport.rb +1/-0
            lib/sentry/transport/http_transport.rb +16/-16
            lib/sentry/utils/encoding_helper.rb +6/-0
            lib/sentry/utils/logging_helper.rb +25/-9
            lib/sentry/vernier/profiler.rb +4/-3
            lib/sentry/version.rb +1/-1
            sentry-ruby-core.gemspec +1/-1
            sentry-ruby.gemspec +2/-1
  DIFFERENT extra_rdoc_files:
    5.26.0->6.5.0:
      * Changed:
            README.md +3/-3
  DIFFERENT runtime dependencies:
    5.26.0->6.5.0:
      * Added:
            logger [">= 0"] (runtime)
  DIFFERENT Gemfile dependencies
    5.26.0->6.5.0:
      * Added:
            graphql [">= 2.2.6"] (runtime)
            sequel [">= 0"] (development)
            activerecord-jdbcmysql-adapter [">= 0"] (development)
            jdbc-sqlite3 [">= 0"] (development)

@github-actions
Copy link
Contributor

gem compare --diff sentry-ruby 5.26.0 6.5.0

Diff too large (153955 chars)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies ruby Pull requests that update Ruby code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants