Skip to content

Bump sentry-ruby from 5.26.0 to 6.4.1#893

Closed
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/bundler/sentry-ruby-6.4.1
Closed

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

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

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

Bumps sentry-ruby from 5.26.0 to 6.4.1.

Changelog

Sourced from sentry-ruby's changelog.

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)

  • Queue time capture for Rack (#2838)

Bug Fixes

  • Fix MetricEvent timestamp serialization to float (#2862)
  • Fix CGI imports for ruby 4.x (#2863)
  • Always include scope user data in telemetry (#2866)

6.3.1

Bug Fixes

  • Use ActionDispatch::ExceptionWrapper for correct HTTP status code (#2850)
  • Add explicit dependency on logger gem to fix Ruby 4.0 warning (#2837)

Internal

  • Add external_propagation_context support (#2841)

... (truncated)

Commits

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.4.1.
- [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.4.1)

---
updated-dependencies:
- dependency-name: sentry-ruby
  dependency-version: 6.4.1
  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 3, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

4 similar comments
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

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

2 similar comments
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

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
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

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
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

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/20260303-904-hzfl0u	2026-03-03 03:33:10.525346209 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb	2026-03-03 03:33:10.516346211 +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/20260303-904-ro4tof	2026-03-03 03:33:10.527346209 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb	2026-03-03 03:33:10.516346211 +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/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/CHANGELOG.md	2026-03-03 03:33:10.489346215 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/CHANGELOG.md	2026-03-03 03:33:10.507346212 +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/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/README.md	2026-03-03 03:33:10.489346215 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/README.md	2026-03-03 03:33:10.508346212 +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/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-03 03:33:10.496346214 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-03 03:33:10.514346211 +0000
                @@ -8,0 +9 @@
                +    return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
        lib/concurrent-ruby/concurrent/concurrent_ruby.jar
                Binary files /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
        lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
                --- /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-03 03:33:10.500346213 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-03 03:33:10.519346210 +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/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-03 03:33:10.500346213 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-03 03:33:10.519346210 +0000
                @@ -48,0 +49 @@
                +          wait_for_termination
        lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
                --- /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-03 03:33:10.501346213 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-03 03:33:10.519346210 +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/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-03 03:33:10.501346213 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-03 03:33:10.519346210 +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/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-03 03:33:10.501346213 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-03 03:33:10.519346210 +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/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-03 03:33:10.502346213 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-03 03:33:10.520346210 +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/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb	2026-03-03 03:33:10.502346213 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb	2026-03-03 03:33:10.520346210 +0000
                @@ -13 +12,0 @@
                -require 'concurrent/executor/cached_thread_pool'
        lib/concurrent-ruby/concurrent/mvar.rb
                --- /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-03 03:33:10.503346213 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-03 03:33:10.521346210 +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/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb	2026-03-03 03:33:10.503346213 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb	2026-03-03 03:33:10.521346210 +0000
                @@ -170 +170 @@
                -  # c1.value       #=> 45
                +  # c1.value       #=> 42
        lib/concurrent-ruby/concurrent/timer_task.rb
                --- /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-03 03:33:10.506346212 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-03 03:33:10.524346209 +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/d20260303-904-wnzjq5/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb	2026-03-03 03:33:10.507346212 +0000
                +++ /tmp/d20260303-904-wnzjq5/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb	2026-03-03 03:33:10.525346209 +0000
                @@ -2 +2 @@
                -  VERSION = '1.3.5'
                +  VERSION = '1.3.6'

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

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/20260303-873-deu4rk	2026-03-03 03:33:12.788061431 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb	2026-03-03 03:33:12.778061407 +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/20260303-873-1gxnyf	2026-03-03 03:33:12.790061435 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb	2026-03-03 03:33:12.778061407 +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/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/CHANGELOG.md	2026-03-03 03:33:12.749061337 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/CHANGELOG.md	2026-03-03 03:33:12.768061383 +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/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/README.md	2026-03-03 03:33:12.749061337 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/README.md	2026-03-03 03:33:12.769061385 +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/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-03 03:33:12.756061354 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-03 03:33:12.775061400 +0000
                @@ -8,0 +9 @@
                +    return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
        lib/concurrent-ruby/concurrent/concurrent_ruby.jar
                Binary files /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
        lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
                --- /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-03 03:33:12.761061366 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-03 03:33:12.781061414 +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/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-03 03:33:12.761061366 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-03 03:33:12.781061414 +0000
                @@ -48,0 +49 @@
                +          wait_for_termination
        lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
                --- /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-03 03:33:12.761061366 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-03 03:33:12.781061414 +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/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-03 03:33:12.761061366 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-03 03:33:12.781061414 +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/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-03 03:33:12.762061368 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-03 03:33:12.781061414 +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/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-03 03:33:12.762061368 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-03 03:33:12.782061416 +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/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb	2026-03-03 03:33:12.763061371 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb	2026-03-03 03:33:12.782061416 +0000
                @@ -13 +12,0 @@
                -require 'concurrent/executor/cached_thread_pool'
        lib/concurrent-ruby/concurrent/mvar.rb
                --- /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-03 03:33:12.764061373 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-03 03:33:12.783061419 +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/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb	2026-03-03 03:33:12.764061373 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb	2026-03-03 03:33:12.784061421 +0000
                @@ -170 +170 @@
                -  # c1.value       #=> 45
                +  # c1.value       #=> 42
        lib/concurrent-ruby/concurrent/timer_task.rb
                --- /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-03 03:33:12.767061381 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-03 03:33:12.787061428 +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/d20260303-873-w9vw7s/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb	2026-03-03 03:33:12.768061383 +0000
                +++ /tmp/d20260303-873-w9vw7s/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb	2026-03-03 03:33:12.788061431 +0000
                @@ -2 +2 @@
                -  VERSION = '1.3.5'
                +  VERSION = '1.3.6'

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

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
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

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
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

gem compare sentry-ruby 5.26.0 6.4.1

Compared versions: ["5.26.0", "6.4.1"]
  DIFFERENT homepage:
    5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
    6.4.1: https://github.com/getsentry/sentry-ruby/tree/6.4.1/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.4.1: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.4.1/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.4.1/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.4.1/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.4.1"}
  DIFFERENT required_ruby_version:
    5.26.0: >= 2.4
    6.4.1: >= 2.7
  DIFFERENT rubygems_version:
    5.26.0: 3.6.7
    6.4.1: 3.6.9
  DIFFERENT version:
    5.26.0: 5.26.0
    6.4.1: 6.4.1
  DIFFERENT files:
    5.26.0->6.4.1:
      * 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 +1/-1
            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 +176/-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 +52/-0
            lib/sentry/envelope/item.rb +3/-3
            lib/sentry/error_event.rb +3/-3
            lib/sentry/event.rb +4/-10
            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 +55/-18
            lib/sentry/rack/capture_exceptions.rb +90/-2
            lib/sentry/rspec.rb +1/-1
            lib/sentry/scope.rb +50/-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 +72/-95
            lib/sentry/transaction_event.rb +4/-9
            lib/sentry/transport.rb +4/-6
            lib/sentry/transport/dummy_transport.rb +1/-0
            lib/sentry/transport/http_transport.rb +10/-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.4.1:
      * Changed:
            README.md +3/-3
  DIFFERENT runtime dependencies:
    5.26.0->6.4.1:
      * Added:
            logger [">= 0"] (runtime)
  DIFFERENT Gemfile dependencies
    5.26.0->6.4.1:
      * Added:
            graphql [">= 2.2.6"] (runtime)
            sequel [">= 0"] (development)
            activerecord-jdbcmysql-adapter [">= 0"] (development)
            jdbc-sqlite3 [">= 0"] (development)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

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/20260303-895-lfpd8n	2026-03-03 03:33:31.018228587 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb	2026-03-03 03:33:31.008228537 +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/20260303-895-av9qr7	2026-03-03 03:33:31.020228597 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb	2026-03-03 03:33:31.008228537 +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/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/CHANGELOG.md	2026-03-03 03:33:30.970228348 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/CHANGELOG.md	2026-03-03 03:33:30.989228443 +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/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/README.md	2026-03-03 03:33:30.970228348 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/README.md	2026-03-03 03:33:30.989228443 +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/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-03 03:33:30.977228383 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-03 03:33:31.002228507 +0000
                @@ -8,0 +9 @@
                +    return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
        lib/concurrent-ruby/concurrent/concurrent_ruby.jar
                Binary files /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
        lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
                --- /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-03 03:33:30.982228408 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-03 03:33:31.011228552 +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/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-03 03:33:30.982228408 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-03 03:33:31.011228552 +0000
                @@ -48,0 +49 @@
                +          wait_for_termination
        lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
                --- /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-03 03:33:30.982228408 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-03 03:33:31.011228552 +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/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-03 03:33:30.982228408 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-03 03:33:31.011228552 +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/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-03 03:33:30.982228408 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-03 03:33:31.012228557 +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/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-03 03:33:30.983228413 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-03 03:33:31.012228557 +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/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb	2026-03-03 03:33:30.983228413 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb	2026-03-03 03:33:31.012228557 +0000
                @@ -13 +12,0 @@
                -require 'concurrent/executor/cached_thread_pool'
        lib/concurrent-ruby/concurrent/mvar.rb
                --- /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-03 03:33:30.984228418 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-03 03:33:31.013228562 +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/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb	2026-03-03 03:33:30.985228423 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb	2026-03-03 03:33:31.013228562 +0000
                @@ -170 +170 @@
                -  # c1.value       #=> 45
                +  # c1.value       #=> 42
        lib/concurrent-ruby/concurrent/timer_task.rb
                --- /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-03 03:33:30.988228438 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-03 03:33:31.016228577 +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/d20260303-895-y5m2s3/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb	2026-03-03 03:33:30.988228438 +0000
                +++ /tmp/d20260303-895-y5m2s3/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb	2026-03-03 03:33:31.017228582 +0000
                @@ -2 +2 @@
                -  VERSION = '1.3.5'
                +  VERSION = '1.3.6'

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

gem compare --diff sentry-ruby 5.26.0 6.4.1

Diff too large (146289 chars)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

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/20260303-1132-kxa0pf	2026-03-03 03:33:39.758848493 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb	2026-03-03 03:33:39.748848580 +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/20260303-1132-su3vhm	2026-03-03 03:33:39.760848476 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb	2026-03-03 03:33:39.748848580 +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/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/CHANGELOG.md	2026-03-03 03:33:39.719848832 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/CHANGELOG.md	2026-03-03 03:33:39.739848658 +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/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/README.md	2026-03-03 03:33:39.720848824 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/README.md	2026-03-03 03:33:39.740848650 +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/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-03 03:33:39.727848763 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-03 03:33:39.745848606 +0000
                @@ -8,0 +9 @@
                +    return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
        lib/concurrent-ruby/concurrent/concurrent_ruby.jar
                Binary files /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
        lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
                --- /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-03 03:33:39.732848719 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-03 03:33:39.751848554 +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/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-03 03:33:39.732848719 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-03 03:33:39.751848554 +0000
                @@ -48,0 +49 @@
                +          wait_for_termination
        lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
                --- /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-03 03:33:39.732848719 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-03 03:33:39.751848554 +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/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-03 03:33:39.732848719 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-03 03:33:39.751848554 +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/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-03 03:33:39.733848711 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-03 03:33:39.752848545 +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/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-03 03:33:39.733848711 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-03 03:33:39.752848545 +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/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb	2026-03-03 03:33:39.733848711 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb	2026-03-03 03:33:39.752848545 +0000
                @@ -13 +12,0 @@
                -require 'concurrent/executor/cached_thread_pool'
        lib/concurrent-ruby/concurrent/mvar.rb
                --- /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-03 03:33:39.735848693 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-03 03:33:39.753848537 +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/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb	2026-03-03 03:33:39.735848693 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb	2026-03-03 03:33:39.754848528 +0000
                @@ -170 +170 @@
                -  # c1.value       #=> 45
                +  # c1.value       #=> 42
        lib/concurrent-ruby/concurrent/timer_task.rb
                --- /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-03 03:33:39.738848667 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-03 03:33:39.756848511 +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/d20260303-1132-kojb3o/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb	2026-03-03 03:33:39.739848658 +0000
                +++ /tmp/d20260303-1132-kojb3o/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb	2026-03-03 03:33:39.757848502 +0000
                @@ -2 +2 @@
                -  VERSION = '1.3.5'
                +  VERSION = '1.3.6'

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

gem compare sentry-ruby 5.26.0 6.4.1

Compared versions: ["5.26.0", "6.4.1"]
  DIFFERENT homepage:
    5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
    6.4.1: https://github.com/getsentry/sentry-ruby/tree/6.4.1/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.4.1: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.4.1/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.4.1/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.4.1/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.4.1"}
  DIFFERENT required_ruby_version:
    5.26.0: >= 2.4
    6.4.1: >= 2.7
  DIFFERENT rubygems_version:
    5.26.0: 3.6.7
    6.4.1: 3.6.9
  DIFFERENT version:
    5.26.0: 5.26.0
    6.4.1: 6.4.1
  DIFFERENT files:
    5.26.0->6.4.1:
      * 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 +1/-1
            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 +176/-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 +52/-0
            lib/sentry/envelope/item.rb +3/-3
            lib/sentry/error_event.rb +3/-3
            lib/sentry/event.rb +4/-10
            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 +55/-18
            lib/sentry/rack/capture_exceptions.rb +90/-2
            lib/sentry/rspec.rb +1/-1
            lib/sentry/scope.rb +50/-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 +72/-95
            lib/sentry/transaction_event.rb +4/-9
            lib/sentry/transport.rb +4/-6
            lib/sentry/transport/dummy_transport.rb +1/-0
            lib/sentry/transport/http_transport.rb +10/-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.4.1:
      * Changed:
            README.md +3/-3
  DIFFERENT runtime dependencies:
    5.26.0->6.4.1:
      * Added:
            logger [">= 0"] (runtime)
  DIFFERENT Gemfile dependencies
    5.26.0->6.4.1:
      * Added:
            graphql [">= 2.2.6"] (runtime)
            sequel [">= 0"] (development)
            activerecord-jdbcmysql-adapter [">= 0"] (development)
            jdbc-sqlite3 [">= 0"] (development)

2 similar comments
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

gem compare sentry-ruby 5.26.0 6.4.1

Compared versions: ["5.26.0", "6.4.1"]
  DIFFERENT homepage:
    5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
    6.4.1: https://github.com/getsentry/sentry-ruby/tree/6.4.1/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.4.1: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.4.1/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.4.1/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.4.1/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.4.1"}
  DIFFERENT required_ruby_version:
    5.26.0: >= 2.4
    6.4.1: >= 2.7
  DIFFERENT rubygems_version:
    5.26.0: 3.6.7
    6.4.1: 3.6.9
  DIFFERENT version:
    5.26.0: 5.26.0
    6.4.1: 6.4.1
  DIFFERENT files:
    5.26.0->6.4.1:
      * 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 +1/-1
            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 +176/-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 +52/-0
            lib/sentry/envelope/item.rb +3/-3
            lib/sentry/error_event.rb +3/-3
            lib/sentry/event.rb +4/-10
            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 +55/-18
            lib/sentry/rack/capture_exceptions.rb +90/-2
            lib/sentry/rspec.rb +1/-1
            lib/sentry/scope.rb +50/-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 +72/-95
            lib/sentry/transaction_event.rb +4/-9
            lib/sentry/transport.rb +4/-6
            lib/sentry/transport/dummy_transport.rb +1/-0
            lib/sentry/transport/http_transport.rb +10/-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.4.1:
      * Changed:
            README.md +3/-3
  DIFFERENT runtime dependencies:
    5.26.0->6.4.1:
      * Added:
            logger [">= 0"] (runtime)
  DIFFERENT Gemfile dependencies
    5.26.0->6.4.1:
      * Added:
            graphql [">= 2.2.6"] (runtime)
            sequel [">= 0"] (development)
            activerecord-jdbcmysql-adapter [">= 0"] (development)
            jdbc-sqlite3 [">= 0"] (development)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

gem compare sentry-ruby 5.26.0 6.4.1

Compared versions: ["5.26.0", "6.4.1"]
  DIFFERENT homepage:
    5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
    6.4.1: https://github.com/getsentry/sentry-ruby/tree/6.4.1/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.4.1: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.4.1/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.4.1/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.4.1/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.4.1"}
  DIFFERENT required_ruby_version:
    5.26.0: >= 2.4
    6.4.1: >= 2.7
  DIFFERENT rubygems_version:
    5.26.0: 3.6.7
    6.4.1: 3.6.9
  DIFFERENT version:
    5.26.0: 5.26.0
    6.4.1: 6.4.1
  DIFFERENT files:
    5.26.0->6.4.1:
      * 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 +1/-1
            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 +176/-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 +52/-0
            lib/sentry/envelope/item.rb +3/-3
            lib/sentry/error_event.rb +3/-3
            lib/sentry/event.rb +4/-10
            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 +55/-18
            lib/sentry/rack/capture_exceptions.rb +90/-2
            lib/sentry/rspec.rb +1/-1
            lib/sentry/scope.rb +50/-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 +72/-95
            lib/sentry/transaction_event.rb +4/-9
            lib/sentry/transport.rb +4/-6
            lib/sentry/transport/dummy_transport.rb +1/-0
            lib/sentry/transport/http_transport.rb +10/-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.4.1:
      * Changed:
            README.md +3/-3
  DIFFERENT runtime dependencies:
    5.26.0->6.4.1:
      * Added:
            logger [">= 0"] (runtime)
  DIFFERENT Gemfile dependencies
    5.26.0->6.4.1:
      * Added:
            graphql [">= 2.2.6"] (runtime)
            sequel [">= 0"] (development)
            activerecord-jdbcmysql-adapter [">= 0"] (development)
            jdbc-sqlite3 [">= 0"] (development)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

gem compare --diff sentry-ruby 5.26.0 6.4.1

Diff too large (146288 chars)

1 similar comment
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

gem compare --diff sentry-ruby 5.26.0 6.4.1

Diff too large (146288 chars)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

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/20260303-922-sspa57	2026-03-03 03:34:09.953135287 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb	2026-03-03 03:34:09.943135275 +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/20260303-922-e4tcqu	2026-03-03 03:34:09.955135289 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb	2026-03-03 03:34:09.943135275 +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/d20260303-922-hya40n/concurrent-ruby-1.3.5/CHANGELOG.md	2026-03-03 03:34:09.855135171 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/CHANGELOG.md	2026-03-03 03:34:09.929135259 +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/d20260303-922-hya40n/concurrent-ruby-1.3.5/README.md	2026-03-03 03:34:09.856135172 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/README.md	2026-03-03 03:34:09.930135260 +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/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-03 03:34:09.890135212 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb	2026-03-03 03:34:09.941135273 +0000
                @@ -8,0 +9 @@
                +    return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
        lib/concurrent-ruby/concurrent/concurrent_ruby.jar
                Binary files /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
        lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
                --- /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-03 03:34:09.904135229 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb	2026-03-03 03:34:09.946135279 +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/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-03 03:34:09.904135229 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb	2026-03-03 03:34:09.947135280 +0000
                @@ -48,0 +49 @@
                +          wait_for_termination
        lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
                --- /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-03 03:34:09.904135229 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb	2026-03-03 03:34:09.947135280 +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/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-03 03:34:09.904135229 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb	2026-03-03 03:34:09.947135280 +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/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-03 03:34:09.904135229 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb	2026-03-03 03:34:09.947135280 +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/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-03 03:34:09.905135230 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb	2026-03-03 03:34:09.948135281 +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/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb	2026-03-03 03:34:09.905135230 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb	2026-03-03 03:34:09.948135281 +0000
                @@ -13 +12,0 @@
                -require 'concurrent/executor/cached_thread_pool'
        lib/concurrent-ruby/concurrent/mvar.rb
                --- /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-03 03:34:09.906135231 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb	2026-03-03 03:34:09.949135282 +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/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb	2026-03-03 03:34:09.907135233 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb	2026-03-03 03:34:09.949135282 +0000
                @@ -170 +170 @@
                -  # c1.value       #=> 45
                +  # c1.value       #=> 42
        lib/concurrent-ruby/concurrent/timer_task.rb
                --- /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-03 03:34:09.919135247 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb	2026-03-03 03:34:09.952135286 +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/d20260303-922-hya40n/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb	2026-03-03 03:34:09.926135255 +0000
                +++ /tmp/d20260303-922-hya40n/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb	2026-03-03 03:34:09.953135287 +0000
                @@ -2 +2 @@
                -  VERSION = '1.3.5'
                +  VERSION = '1.3.6'

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

gem compare --diff sentry-ruby 5.26.0 6.4.1

Diff too large (146289 chars)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

gem compare sentry-ruby 5.26.0 6.4.1

Compared versions: ["5.26.0", "6.4.1"]
  DIFFERENT homepage:
    5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
    6.4.1: https://github.com/getsentry/sentry-ruby/tree/6.4.1/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.4.1: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.4.1/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.4.1/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.4.1/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.4.1"}
  DIFFERENT required_ruby_version:
    5.26.0: >= 2.4
    6.4.1: >= 2.7
  DIFFERENT rubygems_version:
    5.26.0: 3.6.7
    6.4.1: 3.6.9
  DIFFERENT version:
    5.26.0: 5.26.0
    6.4.1: 6.4.1
  DIFFERENT files:
    5.26.0->6.4.1:
      * 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 +1/-1
            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 +176/-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 +52/-0
            lib/sentry/envelope/item.rb +3/-3
            lib/sentry/error_event.rb +3/-3
            lib/sentry/event.rb +4/-10
            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 +55/-18
            lib/sentry/rack/capture_exceptions.rb +90/-2
            lib/sentry/rspec.rb +1/-1
            lib/sentry/scope.rb +50/-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 +72/-95
            lib/sentry/transaction_event.rb +4/-9
            lib/sentry/transport.rb +4/-6
            lib/sentry/transport/dummy_transport.rb +1/-0
            lib/sentry/transport/http_transport.rb +10/-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.4.1:
      * Changed:
            README.md +3/-3
  DIFFERENT runtime dependencies:
    5.26.0->6.4.1:
      * Added:
            logger [">= 0"] (runtime)
  DIFFERENT Gemfile dependencies
    5.26.0->6.4.1:
      * Added:
            graphql [">= 2.2.6"] (runtime)
            sequel [">= 0"] (development)
            activerecord-jdbcmysql-adapter [">= 0"] (development)
            jdbc-sqlite3 [">= 0"] (development)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 3, 2026

gem compare --diff sentry-ruby 5.26.0 6.4.1

Diff too large (146288 chars)

@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot bot commented on behalf of github Mar 17, 2026

Superseded by #898.

@dependabot dependabot bot closed this Mar 17, 2026
@dependabot dependabot bot deleted the dependabot/bundler/sentry-ruby-6.4.1 branch March 17, 2026 03:32
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