-
Notifications
You must be signed in to change notification settings - Fork 1
Bump sentry-ruby from 5.26.0 to 6.3.0 #874
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
dependabot
wants to merge
1
commit into
main
Choose a base branch
from
dependabot/bundler/sentry-ruby-6.3.0
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Bumps [sentry-ruby](https://github.com/getsentry/sentry-ruby) from 5.26.0 to 6.3.0. - [Release notes](https://github.com/getsentry/sentry-ruby/releases) - [Changelog](https://github.com/getsentry/sentry-ruby/blob/master/CHANGELOG.md) - [Commits](getsentry/sentry-ruby@5.26.0...6.3.0) --- updated-dependencies: - dependency-name: sentry-ruby dependency-version: 6.3.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
4 similar comments
Contributor
Contributor
Contributor
Contributor
Contributor
gem compare concurrent-ruby 1.3.5 1.3.6Compared 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 |
4 similar comments
Contributor
gem compare concurrent-ruby 1.3.5 1.3.6Compared 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 |
Contributor
gem compare concurrent-ruby 1.3.5 1.3.6Compared 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 |
Contributor
gem compare concurrent-ruby 1.3.5 1.3.6Compared 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 |
Contributor
gem compare concurrent-ruby 1.3.5 1.3.6Compared 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 |
Contributor
gem compare --diff concurrent-ruby 1.3.5 1.3.6Compared 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/20260116-925-32bbd 2026-01-16 03:33:18.269408121 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb 2026-01-16 03:33:18.259408103 +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/20260116-925-z952nz 2026-01-16 03:33:18.271408125 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb 2026-01-16 03:33:18.260408105 +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/d20260116-925-h8akqo/concurrent-ruby-1.3.5/CHANGELOG.md 2026-01-16 03:33:18.233408056 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/CHANGELOG.md 2026-01-16 03:33:18.251408088 +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/d20260116-925-h8akqo/concurrent-ruby-1.3.5/README.md 2026-01-16 03:33:18.234408058 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/README.md 2026-01-16 03:33:18.252408090 +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/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb 2026-01-16 03:33:18.240408069 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb 2026-01-16 03:33:18.257408099 +0000
@@ -8,0 +9 @@
+ return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
lib/concurrent-ruby/concurrent/concurrent_ruby.jar
Binary files /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
--- /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb 2026-01-16 03:33:18.244408076 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb 2026-01-16 03:33:18.262408108 +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/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb 2026-01-16 03:33:18.244408076 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb 2026-01-16 03:33:18.262408108 +0000
@@ -48,0 +49 @@
+ wait_for_termination
lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
--- /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb 2026-01-16 03:33:18.245408078 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb 2026-01-16 03:33:18.263408110 +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/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb 2026-01-16 03:33:18.245408078 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb 2026-01-16 03:33:18.263408110 +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/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb 2026-01-16 03:33:18.245408078 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb 2026-01-16 03:33:18.263408110 +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/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb 2026-01-16 03:33:18.246408079 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb 2026-01-16 03:33:18.264408112 +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/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb 2026-01-16 03:33:18.246408079 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb 2026-01-16 03:33:18.264408112 +0000
@@ -13 +12,0 @@
-require 'concurrent/executor/cached_thread_pool'
lib/concurrent-ruby/concurrent/mvar.rb
--- /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb 2026-01-16 03:33:18.247408081 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb 2026-01-16 03:33:18.265408114 +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/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb 2026-01-16 03:33:18.247408081 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb 2026-01-16 03:33:18.265408114 +0000
@@ -170 +170 @@
- # c1.value #=> 45
+ # c1.value #=> 42
lib/concurrent-ruby/concurrent/timer_task.rb
--- /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb 2026-01-16 03:33:18.250408087 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb 2026-01-16 03:33:18.268408119 +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/d20260116-925-h8akqo/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb 2026-01-16 03:33:18.251408088 +0000
+++ /tmp/d20260116-925-h8akqo/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb 2026-01-16 03:33:18.268408119 +0000
@@ -2 +2 @@
- VERSION = '1.3.5'
+ VERSION = '1.3.6' |
Contributor
gem compare --diff concurrent-ruby 1.3.5 1.3.6Compared 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/20260116-889-kdn5 2026-01-16 03:33:25.423547227 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb 2026-01-16 03:33:25.414547109 +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/20260116-889-j51w6k 2026-01-16 03:33:25.425547253 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb 2026-01-16 03:33:25.414547109 +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/d20260116-889-ejn4c/concurrent-ruby-1.3.5/CHANGELOG.md 2026-01-16 03:33:25.387546756 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/CHANGELOG.md 2026-01-16 03:33:25.406547004 +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/d20260116-889-ejn4c/concurrent-ruby-1.3.5/README.md 2026-01-16 03:33:25.387546756 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/README.md 2026-01-16 03:33:25.406547004 +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/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb 2026-01-16 03:33:25.394546847 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb 2026-01-16 03:33:25.412547083 +0000
@@ -8,0 +9 @@
+ return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
lib/concurrent-ruby/concurrent/concurrent_ruby.jar
Binary files /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
--- /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb 2026-01-16 03:33:25.398546900 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb 2026-01-16 03:33:25.416547135 +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/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb 2026-01-16 03:33:25.399546913 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb 2026-01-16 03:33:25.417547149 +0000
@@ -48,0 +49 @@
+ wait_for_termination
lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
--- /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb 2026-01-16 03:33:25.399546913 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb 2026-01-16 03:33:25.417547149 +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/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb 2026-01-16 03:33:25.399546913 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb 2026-01-16 03:33:25.417547149 +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/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb 2026-01-16 03:33:25.399546913 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb 2026-01-16 03:33:25.417547149 +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/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb 2026-01-16 03:33:25.400546926 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb 2026-01-16 03:33:25.418547162 +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/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb 2026-01-16 03:33:25.400546926 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb 2026-01-16 03:33:25.418547162 +0000
@@ -13 +12,0 @@
-require 'concurrent/executor/cached_thread_pool'
lib/concurrent-ruby/concurrent/mvar.rb
--- /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb 2026-01-16 03:33:25.401546939 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb 2026-01-16 03:33:25.419547175 +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/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb 2026-01-16 03:33:25.401546939 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb 2026-01-16 03:33:25.419547175 +0000
@@ -170 +170 @@
- # c1.value #=> 45
+ # c1.value #=> 42
lib/concurrent-ruby/concurrent/timer_task.rb
--- /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb 2026-01-16 03:33:25.404546978 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb 2026-01-16 03:33:25.422547214 +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/d20260116-889-ejn4c/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb 2026-01-16 03:33:25.405546991 +0000
+++ /tmp/d20260116-889-ejn4c/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb 2026-01-16 03:33:25.423547227 +0000
@@ -2 +2 @@
- VERSION = '1.3.5'
+ VERSION = '1.3.6' |
Contributor
gem compare --diff concurrent-ruby 1.3.5 1.3.6Compared 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/20260116-903-kkn2p7 2026-01-16 03:33:26.290042457 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb 2026-01-16 03:33:26.273042422 +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/20260116-903-va0c69 2026-01-16 03:33:26.292042461 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb 2026-01-16 03:33:26.273042422 +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/d20260116-903-nyv78q/concurrent-ruby-1.3.5/CHANGELOG.md 2026-01-16 03:33:26.236042348 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/CHANGELOG.md 2026-01-16 03:33:26.264042404 +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/d20260116-903-nyv78q/concurrent-ruby-1.3.5/README.md 2026-01-16 03:33:26.237042350 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/README.md 2026-01-16 03:33:26.265042406 +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/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb 2026-01-16 03:33:26.246042368 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb 2026-01-16 03:33:26.271042418 +0000
@@ -8,0 +9 @@
+ return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
lib/concurrent-ruby/concurrent/concurrent_ruby.jar
Binary files /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
--- /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb 2026-01-16 03:33:26.251042378 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb 2026-01-16 03:33:26.276042428 +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/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb 2026-01-16 03:33:26.251042378 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb 2026-01-16 03:33:26.276042428 +0000
@@ -48,0 +49 @@
+ wait_for_termination
lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
--- /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb 2026-01-16 03:33:26.252042380 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb 2026-01-16 03:33:26.276042428 +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/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb 2026-01-16 03:33:26.252042380 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb 2026-01-16 03:33:26.277042431 +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/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb 2026-01-16 03:33:26.252042380 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb 2026-01-16 03:33:26.277042431 +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/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb 2026-01-16 03:33:26.253042382 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb 2026-01-16 03:33:26.281042439 +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/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb 2026-01-16 03:33:26.253042382 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb 2026-01-16 03:33:26.281042439 +0000
@@ -13 +12,0 @@
-require 'concurrent/executor/cached_thread_pool'
lib/concurrent-ruby/concurrent/mvar.rb
--- /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb 2026-01-16 03:33:26.256042388 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb 2026-01-16 03:33:26.283042443 +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/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb 2026-01-16 03:33:26.258042392 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb 2026-01-16 03:33:26.283042443 +0000
@@ -170 +170 @@
- # c1.value #=> 45
+ # c1.value #=> 42
lib/concurrent-ruby/concurrent/timer_task.rb
--- /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb 2026-01-16 03:33:26.262042401 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb 2026-01-16 03:33:26.288042453 +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/d20260116-903-nyv78q/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb 2026-01-16 03:33:26.263042402 +0000
+++ /tmp/d20260116-903-nyv78q/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb 2026-01-16 03:33:26.289042455 +0000
@@ -2 +2 @@
- VERSION = '1.3.5'
+ VERSION = '1.3.6' |
Contributor
gem compare sentry-ruby 5.26.0 6.3.0Compared versions: ["5.26.0", "6.3.0"]
DIFFERENT homepage:
5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
6.3.0: https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby
DIFFERENT metadata:
5.26.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/5.26.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/5.26.0"}
6.3.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.3.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.3.0"}
DIFFERENT required_ruby_version:
5.26.0: >= 2.4
6.3.0: >= 2.7
DIFFERENT rubygems_version:
5.26.0: 3.6.7
6.3.0: 3.6.9
DIFFERENT version:
5.26.0: 5.26.0
6.3.0: 6.3.0
DIFFERENT files:
5.26.0->6.3.0:
* Deleted:
lib/sentry/metrics/aggregator.rb
lib/sentry/metrics/configuration.rb
lib/sentry/metrics/counter_metric.rb
lib/sentry/metrics/distribution_metric.rb
lib/sentry/metrics/gauge_metric.rb
lib/sentry/metrics/local_aggregator.rb
lib/sentry/metrics/metric.rb
lib/sentry/metrics/set_metric.rb
lib/sentry/metrics/timing.rb
* Added:
lib/sentry/backtrace/line.rb +99/-0
lib/sentry/debug_structured_logger.rb +94/-0
lib/sentry/metric_event.rb +49/-0
lib/sentry/metric_event_buffer.rb +28/-0
lib/sentry/sequel.rb +35/-0
lib/sentry/telemetry_event_buffer.rb +130/-0
lib/sentry/transport/debug_transport.rb +70/-0
lib/sentry/utils/sample_rand.rb +97/-0
lib/sentry/utils/telemetry_attributes.rb +30/-0
* Changed:
Gemfile +26/-4
README.md +2/-2
lib/sentry-ruby.rb +24/-29
lib/sentry/background_worker.rb +1/-4
lib/sentry/backtrace.rb +44/-76
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 +168/-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 +32/-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/rspec.rb +1/-1
lib/sentry/scope.rb +32/-5
lib/sentry/span.rb +2/-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 +3/-5
lib/sentry/transport/dummy_transport.rb +1/-0
lib/sentry/transport/http_transport.rb +9/-5
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 +1/-1
DIFFERENT extra_rdoc_files:
5.26.0->6.3.0:
* Changed:
README.md +2/-2
DIFFERENT Gemfile dependencies
5.26.0->6.3.0:
* Added:
graphql [">= 2.2.6"] (runtime)
sequel [">= 0"] (development)
activerecord-jdbcmysql-adapter [">= 0"] (development)
jdbc-sqlite3 [">= 0"] (development) |
1 similar comment
Contributor
gem compare sentry-ruby 5.26.0 6.3.0Compared versions: ["5.26.0", "6.3.0"]
DIFFERENT homepage:
5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
6.3.0: https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby
DIFFERENT metadata:
5.26.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/5.26.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/5.26.0"}
6.3.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.3.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.3.0"}
DIFFERENT required_ruby_version:
5.26.0: >= 2.4
6.3.0: >= 2.7
DIFFERENT rubygems_version:
5.26.0: 3.6.7
6.3.0: 3.6.9
DIFFERENT version:
5.26.0: 5.26.0
6.3.0: 6.3.0
DIFFERENT files:
5.26.0->6.3.0:
* Deleted:
lib/sentry/metrics/aggregator.rb
lib/sentry/metrics/configuration.rb
lib/sentry/metrics/counter_metric.rb
lib/sentry/metrics/distribution_metric.rb
lib/sentry/metrics/gauge_metric.rb
lib/sentry/metrics/local_aggregator.rb
lib/sentry/metrics/metric.rb
lib/sentry/metrics/set_metric.rb
lib/sentry/metrics/timing.rb
* Added:
lib/sentry/backtrace/line.rb +99/-0
lib/sentry/debug_structured_logger.rb +94/-0
lib/sentry/metric_event.rb +49/-0
lib/sentry/metric_event_buffer.rb +28/-0
lib/sentry/sequel.rb +35/-0
lib/sentry/telemetry_event_buffer.rb +130/-0
lib/sentry/transport/debug_transport.rb +70/-0
lib/sentry/utils/sample_rand.rb +97/-0
lib/sentry/utils/telemetry_attributes.rb +30/-0
* Changed:
Gemfile +26/-4
README.md +2/-2
lib/sentry-ruby.rb +24/-29
lib/sentry/background_worker.rb +1/-4
lib/sentry/backtrace.rb +44/-76
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 +168/-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 +32/-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/rspec.rb +1/-1
lib/sentry/scope.rb +32/-5
lib/sentry/span.rb +2/-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 +3/-5
lib/sentry/transport/dummy_transport.rb +1/-0
lib/sentry/transport/http_transport.rb +9/-5
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 +1/-1
DIFFERENT extra_rdoc_files:
5.26.0->6.3.0:
* Changed:
README.md +2/-2
DIFFERENT Gemfile dependencies
5.26.0->6.3.0:
* Added:
graphql [">= 2.2.6"] (runtime)
sequel [">= 0"] (development)
activerecord-jdbcmysql-adapter [">= 0"] (development)
jdbc-sqlite3 [">= 0"] (development) |
Contributor
gem compare --diff concurrent-ruby 1.3.5 1.3.6Compared 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/20260116-885-reo7ft 2026-01-16 03:33:37.726228942 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb 2026-01-16 03:33:37.717228899 +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/20260116-885-dc9553 2026-01-16 03:33:37.728228952 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb 2026-01-16 03:33:37.717228899 +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/d20260116-885-szbkav/concurrent-ruby-1.3.5/CHANGELOG.md 2026-01-16 03:33:37.691228774 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/CHANGELOG.md 2026-01-16 03:33:37.709228861 +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/d20260116-885-szbkav/concurrent-ruby-1.3.5/README.md 2026-01-16 03:33:37.691228774 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/README.md 2026-01-16 03:33:37.709228861 +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/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb 2026-01-16 03:33:37.697228803 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb 2026-01-16 03:33:37.715228890 +0000
@@ -8,0 +9 @@
+ return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
lib/concurrent-ruby/concurrent/concurrent_ruby.jar
Binary files /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
--- /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb 2026-01-16 03:33:37.702228827 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb 2026-01-16 03:33:37.720228914 +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/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb 2026-01-16 03:33:37.702228827 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb 2026-01-16 03:33:37.720228914 +0000
@@ -48,0 +49 @@
+ wait_for_termination
lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
--- /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb 2026-01-16 03:33:37.702228827 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb 2026-01-16 03:33:37.720228914 +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/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb 2026-01-16 03:33:37.703228832 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb 2026-01-16 03:33:37.720228914 +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/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb 2026-01-16 03:33:37.703228832 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb 2026-01-16 03:33:37.720228914 +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/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb 2026-01-16 03:33:37.703228832 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb 2026-01-16 03:33:37.721228918 +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/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb 2026-01-16 03:33:37.703228832 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb 2026-01-16 03:33:37.721228918 +0000
@@ -13 +12,0 @@
-require 'concurrent/executor/cached_thread_pool'
lib/concurrent-ruby/concurrent/mvar.rb
--- /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb 2026-01-16 03:33:37.704228837 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb 2026-01-16 03:33:37.722228923 +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/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb 2026-01-16 03:33:37.705228842 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb 2026-01-16 03:33:37.722228923 +0000
@@ -170 +170 @@
- # c1.value #=> 45
+ # c1.value #=> 42
lib/concurrent-ruby/concurrent/timer_task.rb
--- /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb 2026-01-16 03:33:37.708228856 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb 2026-01-16 03:33:37.725228938 +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/d20260116-885-szbkav/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb 2026-01-16 03:33:37.708228856 +0000
+++ /tmp/d20260116-885-szbkav/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb 2026-01-16 03:33:37.726228942 +0000
@@ -2 +2 @@
- VERSION = '1.3.5'
+ VERSION = '1.3.6' |
Contributor
gem compare sentry-ruby 5.26.0 6.3.0Compared versions: ["5.26.0", "6.3.0"]
DIFFERENT homepage:
5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
6.3.0: https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby
DIFFERENT metadata:
5.26.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/5.26.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/5.26.0"}
6.3.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.3.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.3.0"}
DIFFERENT required_ruby_version:
5.26.0: >= 2.4
6.3.0: >= 2.7
DIFFERENT rubygems_version:
5.26.0: 3.6.7
6.3.0: 3.6.9
DIFFERENT version:
5.26.0: 5.26.0
6.3.0: 6.3.0
DIFFERENT files:
5.26.0->6.3.0:
* Deleted:
lib/sentry/metrics/aggregator.rb
lib/sentry/metrics/configuration.rb
lib/sentry/metrics/counter_metric.rb
lib/sentry/metrics/distribution_metric.rb
lib/sentry/metrics/gauge_metric.rb
lib/sentry/metrics/local_aggregator.rb
lib/sentry/metrics/metric.rb
lib/sentry/metrics/set_metric.rb
lib/sentry/metrics/timing.rb
* Added:
lib/sentry/backtrace/line.rb +99/-0
lib/sentry/debug_structured_logger.rb +94/-0
lib/sentry/metric_event.rb +49/-0
lib/sentry/metric_event_buffer.rb +28/-0
lib/sentry/sequel.rb +35/-0
lib/sentry/telemetry_event_buffer.rb +130/-0
lib/sentry/transport/debug_transport.rb +70/-0
lib/sentry/utils/sample_rand.rb +97/-0
lib/sentry/utils/telemetry_attributes.rb +30/-0
* Changed:
Gemfile +26/-4
README.md +2/-2
lib/sentry-ruby.rb +24/-29
lib/sentry/background_worker.rb +1/-4
lib/sentry/backtrace.rb +44/-76
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 +168/-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 +32/-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/rspec.rb +1/-1
lib/sentry/scope.rb +32/-5
lib/sentry/span.rb +2/-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 +3/-5
lib/sentry/transport/dummy_transport.rb +1/-0
lib/sentry/transport/http_transport.rb +9/-5
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 +1/-1
DIFFERENT extra_rdoc_files:
5.26.0->6.3.0:
* Changed:
README.md +2/-2
DIFFERENT Gemfile dependencies
5.26.0->6.3.0:
* Added:
graphql [">= 2.2.6"] (runtime)
sequel [">= 0"] (development)
activerecord-jdbcmysql-adapter [">= 0"] (development)
jdbc-sqlite3 [">= 0"] (development) |
Contributor
|
Contributor
gem compare --diff concurrent-ruby 1.3.5 1.3.6Compared 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/20260116-918-bzlsx1 2026-01-16 03:33:45.593708498 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb 2026-01-16 03:33:45.582708504 +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/20260116-918-mj49ym 2026-01-16 03:33:45.595708497 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb 2026-01-16 03:33:45.582708504 +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/d20260116-918-l165rp/concurrent-ruby-1.3.5/CHANGELOG.md 2026-01-16 03:33:45.554708519 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/CHANGELOG.md 2026-01-16 03:33:45.573708509 +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/d20260116-918-l165rp/concurrent-ruby-1.3.5/README.md 2026-01-16 03:33:45.554708519 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/README.md 2026-01-16 03:33:45.573708509 +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/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb 2026-01-16 03:33:45.561708515 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb 2026-01-16 03:33:45.579708505 +0000
@@ -8,0 +9 @@
+ return RUBY_VERSION < "3.0" if Concurrent.on_cruby?
lib/concurrent-ruby/concurrent/concurrent_ruby.jar
Binary files /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/concurrent_ruby.jar and /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/concurrent_ruby.jar differ
lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb
--- /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb 2026-01-16 03:33:45.566708513 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb 2026-01-16 03:33:45.584708503 +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/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb 2026-01-16 03:33:45.566708513 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb 2026-01-16 03:33:45.585708502 +0000
@@ -48,0 +49 @@
+ wait_for_termination
lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb
--- /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb 2026-01-16 03:33:45.566708513 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb 2026-01-16 03:33:45.585708502 +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/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb 2026-01-16 03:33:45.566708513 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb 2026-01-16 03:33:45.585708502 +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/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb 2026-01-16 03:33:45.566708513 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb 2026-01-16 03:33:45.585708502 +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/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/timer_set.rb 2026-01-16 03:33:45.567708512 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executor/timer_set.rb 2026-01-16 03:33:45.586708502 +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/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executors.rb 2026-01-16 03:33:45.567708512 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/executors.rb 2026-01-16 03:33:45.586708502 +0000
@@ -13 +12,0 @@
-require 'concurrent/executor/cached_thread_pool'
lib/concurrent-ruby/concurrent/mvar.rb
--- /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/mvar.rb 2026-01-16 03:33:45.568708511 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/mvar.rb 2026-01-16 03:33:45.587708501 +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/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promise.rb 2026-01-16 03:33:45.568708511 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/promise.rb 2026-01-16 03:33:45.587708501 +0000
@@ -170 +170 @@
- # c1.value #=> 45
+ # c1.value #=> 42
lib/concurrent-ruby/concurrent/timer_task.rb
--- /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/timer_task.rb 2026-01-16 03:33:45.571708510 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/timer_task.rb 2026-01-16 03:33:45.591708499 +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/d20260116-918-l165rp/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/version.rb 2026-01-16 03:33:45.572708509 +0000
+++ /tmp/d20260116-918-l165rp/concurrent-ruby-1.3.6/lib/concurrent-ruby/concurrent/version.rb 2026-01-16 03:33:45.592708499 +0000
@@ -2 +2 @@
- VERSION = '1.3.5'
+ VERSION = '1.3.6' |
Contributor
|
Contributor
gem compare sentry-ruby 5.26.0 6.3.0Compared versions: ["5.26.0", "6.3.0"]
DIFFERENT homepage:
5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
6.3.0: https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby
DIFFERENT metadata:
5.26.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/5.26.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/5.26.0"}
6.3.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.3.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.3.0"}
DIFFERENT required_ruby_version:
5.26.0: >= 2.4
6.3.0: >= 2.7
DIFFERENT rubygems_version:
5.26.0: 3.6.7
6.3.0: 3.6.9
DIFFERENT version:
5.26.0: 5.26.0
6.3.0: 6.3.0
DIFFERENT files:
5.26.0->6.3.0:
* Deleted:
lib/sentry/metrics/aggregator.rb
lib/sentry/metrics/configuration.rb
lib/sentry/metrics/counter_metric.rb
lib/sentry/metrics/distribution_metric.rb
lib/sentry/metrics/gauge_metric.rb
lib/sentry/metrics/local_aggregator.rb
lib/sentry/metrics/metric.rb
lib/sentry/metrics/set_metric.rb
lib/sentry/metrics/timing.rb
* Added:
lib/sentry/backtrace/line.rb +99/-0
lib/sentry/debug_structured_logger.rb +94/-0
lib/sentry/metric_event.rb +49/-0
lib/sentry/metric_event_buffer.rb +28/-0
lib/sentry/sequel.rb +35/-0
lib/sentry/telemetry_event_buffer.rb +130/-0
lib/sentry/transport/debug_transport.rb +70/-0
lib/sentry/utils/sample_rand.rb +97/-0
lib/sentry/utils/telemetry_attributes.rb +30/-0
* Changed:
Gemfile +26/-4
README.md +2/-2
lib/sentry-ruby.rb +24/-29
lib/sentry/background_worker.rb +1/-4
lib/sentry/backtrace.rb +44/-76
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 +168/-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 +32/-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/rspec.rb +1/-1
lib/sentry/scope.rb +32/-5
lib/sentry/span.rb +2/-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 +3/-5
lib/sentry/transport/dummy_transport.rb +1/-0
lib/sentry/transport/http_transport.rb +9/-5
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 +1/-1
DIFFERENT extra_rdoc_files:
5.26.0->6.3.0:
* Changed:
README.md +2/-2
DIFFERENT Gemfile dependencies
5.26.0->6.3.0:
* Added:
graphql [">= 2.2.6"] (runtime)
sequel [">= 0"] (development)
activerecord-jdbcmysql-adapter [">= 0"] (development)
jdbc-sqlite3 [">= 0"] (development) |
Contributor
|
Contributor
gem compare sentry-ruby 5.26.0 6.3.0Compared versions: ["5.26.0", "6.3.0"]
DIFFERENT homepage:
5.26.0: https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby
6.3.0: https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby
DIFFERENT metadata:
5.26.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/5.26.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/5.26.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/5.26.0"}
6.3.0: {"homepage_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby", "source_code_uri" => "https://github.com/getsentry/sentry-ruby/tree/6.3.0/sentry-ruby", "changelog_uri" => "https://github.com/getsentry/sentry-ruby/blob/6.3.0/CHANGELOG.md", "bug_tracker_uri" => "https://github.com/getsentry/sentry-ruby/issues", "documentation_uri" => "http://www.rubydoc.info/gems/sentry-ruby/6.3.0"}
DIFFERENT required_ruby_version:
5.26.0: >= 2.4
6.3.0: >= 2.7
DIFFERENT rubygems_version:
5.26.0: 3.6.7
6.3.0: 3.6.9
DIFFERENT version:
5.26.0: 5.26.0
6.3.0: 6.3.0
DIFFERENT files:
5.26.0->6.3.0:
* Deleted:
lib/sentry/metrics/aggregator.rb
lib/sentry/metrics/configuration.rb
lib/sentry/metrics/counter_metric.rb
lib/sentry/metrics/distribution_metric.rb
lib/sentry/metrics/gauge_metric.rb
lib/sentry/metrics/local_aggregator.rb
lib/sentry/metrics/metric.rb
lib/sentry/metrics/set_metric.rb
lib/sentry/metrics/timing.rb
* Added:
lib/sentry/backtrace/line.rb +99/-0
lib/sentry/debug_structured_logger.rb +94/-0
lib/sentry/metric_event.rb +49/-0
lib/sentry/metric_event_buffer.rb +28/-0
lib/sentry/sequel.rb +35/-0
lib/sentry/telemetry_event_buffer.rb +130/-0
lib/sentry/transport/debug_transport.rb +70/-0
lib/sentry/utils/sample_rand.rb +97/-0
lib/sentry/utils/telemetry_attributes.rb +30/-0
* Changed:
Gemfile +26/-4
README.md +2/-2
lib/sentry-ruby.rb +24/-29
lib/sentry/background_worker.rb +1/-4
lib/sentry/backtrace.rb +44/-76
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 +168/-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 +32/-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/rspec.rb +1/-1
lib/sentry/scope.rb +32/-5
lib/sentry/span.rb +2/-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 +3/-5
lib/sentry/transport/dummy_transport.rb +1/-0
lib/sentry/transport/http_transport.rb +9/-5
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 +1/-1
DIFFERENT extra_rdoc_files:
5.26.0->6.3.0:
* Changed:
README.md +2/-2
DIFFERENT Gemfile dependencies
5.26.0->6.3.0:
* Added:
graphql [">= 2.2.6"] (runtime)
sequel [">= 0"] (development)
activerecord-jdbcmysql-adapter [">= 0"] (development)
jdbc-sqlite3 [">= 0"] (development) |
Contributor
|
Contributor
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Bumps sentry-ruby from 5.26.0 to 6.3.0.
Changelog
Sourced from sentry-ruby's changelog.
... (truncated)
Commits
babf7aarelease: 6.3.08c43650Enable metrics by default (#2835)9cd6a06Lazily start TelemetryEventBuffer threads (#2832)8db45edMax drop limit for TelemetryEventBuffer after which we completely drop events...a354683Unify LogEventBuffer and MetricEventBuffer logic (#2830)8b8bad5feat(std_lib_logger): add support for filtering (#2829)846c2baUnify Logs and Metrics implementations (#2826)c11a499fix: prevent SDK crash when SDK logging fails (#2817)854f4caHandle more extra attribute types when logging (#2815)4fcb941Implement newSentry.metricsfunctionality (#2818)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 rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill 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 versionwill 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 dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)