From 115976c16e8abc717e7ea05e2b87508aa34c5aa0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Mar 2022 14:05:56 -0400 Subject: [PATCH 1/3] build(deps): bump concurrent-ruby in /Library/Homebrew Bumps [concurrent-ruby](https://github.com/ruby-concurrency/concurrent-ruby) from 1.1.9 to 1.1.10. - [Release notes](https://github.com/ruby-concurrency/concurrent-ruby/releases) - [Changelog](https://github.com/ruby-concurrency/concurrent-ruby/blob/master/CHANGELOG.md) - [Commits](https://github.com/ruby-concurrency/concurrent-ruby/compare/v1.1.9...v1.1.10) --- updated-dependencies: - dependency-name: concurrent-ruby dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- Library/Homebrew/Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/Gemfile.lock b/Library/Homebrew/Gemfile.lock index 19d4a51c63..783dabae71 100644 --- a/Library/Homebrew/Gemfile.lock +++ b/Library/Homebrew/Gemfile.lock @@ -17,7 +17,7 @@ GEM coderay (1.1.3) commander (4.6.0) highline (~> 2.0.0) - concurrent-ruby (1.1.9) + concurrent-ruby (1.1.10) connection_pool (2.2.5) did_you_mean (1.6.1) diff-lcs (1.5.0) From 25dcb7e675eacc675353006592ad0ad6a33c26fb Mon Sep 17 00:00:00 2001 From: BrewTestBot <1589480+BrewTestBot@users.noreply.github.com> Date: Tue, 22 Mar 2022 18:18:48 +0000 Subject: [PATCH 2/3] brew vendor-gems: commit updates. --- .../Homebrew/vendor/bundle/bundler/setup.rb | 2 +- .../lib/concurrent-ruby/concurrent-ruby.rb | 5 + .../lib/concurrent-ruby/concurrent.rb | 0 .../lib/concurrent-ruby/concurrent/agent.rb | 0 .../lib/concurrent-ruby/concurrent/array.rb | 0 .../lib/concurrent-ruby/concurrent/async.rb | 1 + .../lib/concurrent-ruby/concurrent/atom.rb | 0 .../atomic/abstract_thread_local_var.rb | 0 .../concurrent/atomic/atomic_boolean.rb | 0 .../concurrent/atomic/atomic_fixnum.rb | 0 .../atomic/atomic_markable_reference.rb | 0 .../concurrent/atomic/atomic_reference.rb | 1 + .../concurrent/atomic/count_down_latch.rb | 0 .../concurrent/atomic/cyclic_barrier.rb | 0 .../concurrent/atomic/event.rb | 4 +- .../atomic/java_count_down_latch.rb | 0 .../atomic/java_thread_local_var.rb | 0 .../concurrent/atomic/mutex_atomic_boolean.rb | 0 .../concurrent/atomic/mutex_atomic_fixnum.rb | 0 .../atomic/mutex_count_down_latch.rb | 0 .../concurrent/atomic/mutex_semaphore.rb | 20 +++- .../concurrent/atomic/read_write_lock.rb | 0 .../atomic/reentrant_read_write_lock.rb | 10 +- .../atomic/ruby_thread_local_var.rb | 0 .../concurrent/atomic/semaphore.rb | 31 +++++- .../concurrent/atomic/thread_local_var.rb | 0 .../atomic_reference/mutex_atomic.rb | 0 .../atomic_reference/numeric_cas_wrapper.rb | 0 .../lib/concurrent-ruby/concurrent/atomics.rb | 0 .../collection/copy_on_notify_observer_set.rb | 0 .../collection/copy_on_write_observer_set.rb | 0 .../java_non_concurrent_priority_queue.rb | 0 .../concurrent/collection/lock_free_stack.rb | 0 .../map/atomic_reference_map_backend.rb | 0 .../collection/map/mri_map_backend.rb | 0 .../map/non_concurrent_map_backend.rb | 0 .../map/synchronized_map_backend.rb | 0 .../collection/map/truffleruby_map_backend.rb | 0 .../non_concurrent_priority_queue.rb | 0 .../ruby_non_concurrent_priority_queue.rb | 0 .../concurrent/concern/deprecation.rb | 0 .../concurrent/concern/dereferenceable.rb | 0 .../concurrent/concern/logging.rb | 0 .../concurrent/concern/obligation.rb | 0 .../concurrent/concern/observable.rb | 0 .../concurrent/concurrent_ruby.jar | Bin 0 -> 137917 bytes .../concurrent/configuration.rb | 0 .../concurrent-ruby/concurrent/constants.rb | 0 .../concurrent-ruby/concurrent/dataflow.rb | 0 .../lib/concurrent-ruby/concurrent/delay.rb | 0 .../lib/concurrent-ruby/concurrent/errors.rb | 0 .../concurrent-ruby/concurrent/exchanger.rb | 0 .../executor/abstract_executor_service.rb | 29 +++--- .../concurrent/executor/cached_thread_pool.rb | 0 .../concurrent/executor/executor_service.rb | 0 .../concurrent/executor/fixed_thread_pool.rb | 16 +++- .../concurrent/executor/immediate_executor.rb | 0 .../executor/indirect_immediate_executor.rb | 0 .../executor/java_executor_service.rb | 2 +- .../executor/java_single_thread_executor.rb | 0 .../executor/java_thread_pool_executor.rb | 4 + .../executor/ruby_executor_service.rb | 14 ++- .../executor/ruby_single_thread_executor.rb | 0 .../executor/ruby_thread_pool_executor.rb | 63 +++++------- .../concurrent/executor/safe_task_executor.rb | 10 +- .../executor/serial_executor_service.rb | 0 .../executor/serialized_execution.rb | 0 .../serialized_execution_delegator.rb | 0 .../executor/simple_executor_service.rb | 0 .../executor/single_thread_executor.rb | 0 .../executor/thread_pool_executor.rb | 0 .../concurrent/executor/timer_set.rb | 0 .../concurrent-ruby/concurrent/executors.rb | 0 .../lib/concurrent-ruby/concurrent/future.rb | 0 .../lib/concurrent-ruby/concurrent/hash.rb | 0 .../concurrent/immutable_struct.rb | 0 .../lib/concurrent-ruby/concurrent/ivar.rb | 0 .../lib/concurrent-ruby/concurrent/map.rb | 1 - .../lib/concurrent-ruby/concurrent/maybe.rb | 0 .../concurrent/mutable_struct.rb | 0 .../lib/concurrent-ruby/concurrent/mvar.rb | 0 .../lib/concurrent-ruby/concurrent/options.rb | 0 .../lib/concurrent-ruby/concurrent/promise.rb | 0 .../concurrent-ruby/concurrent/promises.rb | 0 .../concurrent-ruby/concurrent/re_include.rb | 0 .../concurrent/scheduled_task.rb | 49 ++++++---- .../lib/concurrent-ruby/concurrent/set.rb | 0 .../concurrent/settable_struct.rb | 0 .../concurrent/synchronization.rb | 0 .../abstract_lockable_object.rb | 0 .../synchronization/abstract_object.rb | 0 .../synchronization/abstract_struct.rb | 0 .../concurrent/synchronization/condition.rb | 0 .../synchronization/jruby_lockable_object.rb | 0 .../synchronization/jruby_object.rb | 0 .../concurrent/synchronization/lock.rb | 0 .../synchronization/lockable_object.rb | 4 +- .../concurrent/synchronization/mri_object.rb | 0 .../synchronization/mutex_lockable_object.rb | 0 .../concurrent/synchronization/object.rb | 0 .../synchronization/rbx_lockable_object.rb | 0 .../concurrent/synchronization/rbx_object.rb | 0 .../synchronization/truffleruby_object.rb | 0 .../concurrent/synchronization/volatile.rb | 0 .../thread_safe/synchronized_delegator.rb | 0 .../concurrent/thread_safe/util.rb | 0 .../concurrent/thread_safe/util/adder.rb | 0 .../thread_safe/util/cheap_lockable.rb | 0 .../thread_safe/util/data_structures.rb | 0 .../thread_safe/util/power_of_two_tuple.rb | 0 .../concurrent/thread_safe/util/striped64.rb | 0 .../concurrent/thread_safe/util/volatile.rb | 0 .../thread_safe/util/xor_shift_random.rb | 0 .../concurrent-ruby/concurrent/timer_task.rb | 44 +++------ .../lib/concurrent-ruby/concurrent/tuple.rb | 0 .../lib/concurrent-ruby/concurrent/tvar.rb | 80 ++++------------ .../concurrent/utility/engine.rb | 0 .../concurrent/utility/monotonic_time.rb | 90 ++++++++++++++++++ .../utility/native_extension_loader.rb | 0 .../concurrent/utility/native_integer.rb | 0 .../concurrent/utility/processor_counter.rb | 37 +------ .../lib/concurrent-ruby/concurrent/version.rb | 2 +- .../lib/concurrent-ruby/concurrent-ruby.rb | 1 - .../concurrent/concurrent_ruby.jar | Bin 137050 -> 0 bytes .../concurrent/utility/monotonic_time.rb | 58 ----------- 125 files changed, 289 insertions(+), 289 deletions(-) create mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent-ruby.rb rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/agent.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/array.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/async.rb (99%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atom.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb (99%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/event.rb (98%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/java_thread_local_var.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb (90%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb (98%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/semaphore.rb (78%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/atomics.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/collection/map/atomic_reference_map_backend.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/collection/map/synchronized_map_backend.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/collection/map/truffleruby_map_backend.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/concern/deprecation.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/concern/logging.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/concern/obligation.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/concern/observable.rb (100%) create mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concurrent_ruby.jar rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/configuration.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/constants.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/dataflow.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/delay.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/errors.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/exchanger.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/abstract_executor_service.rb (83%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/executor_service.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb (94%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/immediate_executor.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb (97%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb (98%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb (84%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb (88%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb (91%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executor/timer_set.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/executors.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/future.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/hash.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/immutable_struct.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/ivar.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/map.rb (99%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/maybe.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/mutable_struct.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/mvar.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/options.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/promise.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/promises.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/re_include.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/scheduled_task.rb (91%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/set.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/settable_struct.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/condition.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/jruby_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/lock.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb (91%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/mri_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/rbx_lockable_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/rbx_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/truffleruby_object.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/synchronization/volatile.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/thread_safe/util.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/thread_safe/util/adder.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/thread_safe/util/cheap_lockable.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/thread_safe/util/striped64.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/thread_safe/util/xor_shift_random.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/timer_task.rb (86%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/tuple.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/tvar.rb (75%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/utility/engine.rb (100%) create mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/utility/native_integer.rb (100%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/utility/processor_counter.rb (72%) rename Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/{concurrent-ruby-1.1.9 => concurrent-ruby-1.1.10}/lib/concurrent-ruby/concurrent/version.rb (51%) delete mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent-ruby.rb delete mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concurrent_ruby.jar delete mode 100644 Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb diff --git a/Library/Homebrew/vendor/bundle/bundler/setup.rb b/Library/Homebrew/vendor/bundle/bundler/setup.rb index 05e8aed922..c726576426 100644 --- a/Library/Homebrew/vendor/bundle/bundler/setup.rb +++ b/Library/Homebrew/vendor/bundle/bundler/setup.rb @@ -3,7 +3,7 @@ require 'rbconfig' ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby' ruby_version = RbConfig::CONFIG["ruby_version"] path = File.expand_path('..', __FILE__) -$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby" +$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/i18n-1.10.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/minitest-5.15.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/tzinfo-2.0.4/lib" diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent-ruby.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent-ruby.rb new file mode 100644 index 0000000000..e9a3dea4ab --- /dev/null +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent-ruby.rb @@ -0,0 +1,5 @@ +# This file is here so that there is a file with the same name as the gem that +# can be required by Bundler.require. Applications should normally +# require 'concurrent'. + +require_relative "concurrent" diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/agent.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/agent.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/agent.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/agent.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/array.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/array.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/array.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/array.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/async.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/async.rb similarity index 99% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/async.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/async.rb index 5e125e4a09..f9f8adf00d 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/async.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/async.rb @@ -272,6 +272,7 @@ module Concurrent obj.send(:init_synchronization) obj end + ruby2_keywords :new if respond_to?(:ruby2_keywords, true) end private_constant :ClassMethods diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atom.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atom.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atom.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atom.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/abstract_thread_local_var.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb similarity index 99% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb index 620c0698e7..674f866d05 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb @@ -170,6 +170,7 @@ module Concurrent alias_method :compare_and_swap, :compare_and_set alias_method :swap, :get_and_set end + TruffleRubyAtomicReference when Concurrent.on_rbx? # @note Extends `Rubinius::AtomicReference` version adding aliases # and numeric logic. diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/event.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/event.rb similarity index 98% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/event.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/event.rb index 825f38a031..31700ce22b 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/event.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/event.rb @@ -19,7 +19,7 @@ module Concurrent # t1 = Thread.new do # puts "t1 is waiting" # event.wait(1) - # puts "event ocurred" + # puts "event occurred" # end # # t2 = Thread.new do @@ -30,8 +30,8 @@ module Concurrent # [t1, t2].each(&:join) # # # prints: - # # t2 calling set # # t1 is waiting + # # t2 calling set # # event occurred class Event < Synchronization::LockableObject diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/java_thread_local_var.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/java_thread_local_var.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/java_thread_local_var.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/java_thread_local_var.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb similarity index 90% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb index 2042f73056..b6ac45f9c0 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb @@ -23,7 +23,14 @@ module Concurrent synchronize do try_acquire_timed(permits, nil) - nil + end + + return unless block_given? + + begin + yield + ensure + release(permits) end end @@ -48,13 +55,22 @@ module Concurrent Utility::NativeInteger.ensure_integer_and_bounds permits Utility::NativeInteger.ensure_positive permits - synchronize do + acquired = synchronize do if timeout.nil? try_acquire_now(permits) else try_acquire_timed(permits, timeout) end end + + return acquired unless block_given? + return unless acquired + + begin + yield + ensure + release(permits) + end end # @!macro semaphore_method_release diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb similarity index 98% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb index 42d7f3c3ec..92c96fd16d 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb @@ -267,12 +267,10 @@ module Concurrent # running right now, AND no writers who came before us still waiting to # acquire the lock # Additionally, if any read locks have been taken, we must hold all of them - if c == held - # If we successfully swap the RUNNING_WRITER bit on, then we can go ahead - if @Counter.compare_and_set(c, c+RUNNING_WRITER) - @HeldCount.value = held + WRITE_LOCK_HELD - return true - end + if held > 0 && @Counter.compare_and_set(1, c+RUNNING_WRITER) + # If we are the only one reader and successfully swap the RUNNING_WRITER bit on, then we can go ahead + @HeldCount.value = held + WRITE_LOCK_HELD + return true elsif @Counter.compare_and_set(c, c+WAITING_WRITER) while true # Now we have successfully incremented, so no more readers will be able to increment diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/ruby_thread_local_var.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/semaphore.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/semaphore.rb similarity index 78% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/semaphore.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/semaphore.rb index 1b2bd8c95d..cc6a8925bc 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/semaphore.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/semaphore.rb @@ -16,14 +16,16 @@ module Concurrent # @!macro semaphore_method_acquire # # Acquires the given number of permits from this semaphore, - # blocking until all are available. + # blocking until all are available. If a block is given, + # yields to it and releases the permits afterwards. # # @param [Fixnum] permits Number of permits to acquire # # @raise [ArgumentError] if `permits` is not an integer or is less than # one # - # @return [nil] + # @return [nil, BasicObject] Without a block, `nil` is returned. If a block + # is given, its return value is returned. # @!macro semaphore_method_available_permits # @@ -41,7 +43,9 @@ module Concurrent # # Acquires the given number of permits from this semaphore, # only if all are available at the time of invocation or within - # `timeout` interval + # `timeout` interval. If a block is given, yields to it if the permits + # were successfully acquired, and releases them afterward, returning the + # block's return value. # # @param [Fixnum] permits the number of permits to acquire # @@ -51,8 +55,10 @@ module Concurrent # @raise [ArgumentError] if `permits` is not an integer or is less than # one # - # @return [Boolean] `false` if no permits are available, `true` when - # acquired a permit + # @return [true, false, nil, BasicObject] `false` if no permits are + # available, `true` when acquired a permit. If a block is given, the + # block's return value is returned if the permits were acquired; if not, + # `nil` is returned. # @!macro semaphore_method_release # @@ -106,6 +112,8 @@ module Concurrent # releasing a blocking acquirer. # However, no actual permit objects are used; the Semaphore just keeps a # count of the number available and acts accordingly. + # Alternatively, permits may be acquired within a block, and automatically + # released after the block finishes executing. # # @!macro semaphore_public_api # @example @@ -140,6 +148,19 @@ module Concurrent # # Thread 4 releasing semaphore # # Thread 1 acquired semaphore # + # @example + # semaphore = Concurrent::Semaphore.new(1) + # + # puts semaphore.available_permits + # semaphore.acquire do + # puts semaphore.available_permits + # end + # puts semaphore.available_permits + # + # # prints: + # # 1 + # # 0 + # # 1 class Semaphore < SemaphoreImplementation end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomics.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomics.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/atomics.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/atomics.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/map/atomic_reference_map_backend.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/map/atomic_reference_map_backend.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/map/atomic_reference_map_backend.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/map/atomic_reference_map_backend.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/map/synchronized_map_backend.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/map/synchronized_map_backend.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/map/synchronized_map_backend.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/map/synchronized_map_backend.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/map/truffleruby_map_backend.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/map/truffleruby_map_backend.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/map/truffleruby_map_backend.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/map/truffleruby_map_backend.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concern/deprecation.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concern/deprecation.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concern/deprecation.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concern/deprecation.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concern/logging.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concern/logging.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concern/logging.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concern/logging.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concern/obligation.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concern/obligation.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concern/obligation.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concern/obligation.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concern/observable.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concern/observable.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concern/observable.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concern/observable.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concurrent_ruby.jar b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/concurrent_ruby.jar new file mode 100644 index 0000000000000000000000000000000000000000..e0d30ecb0f9daeae3e453e71a51581cf98424a44 GIT binary patch literal 137917 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

~yHC{cYaGgHR1=3AR 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 ex - # let it fail - log DEBUG, ex - end - true + lambda { + begin + yield(*args) + rescue => ex + # let it fail + log DEBUG, ex + end + true + } else - fail "Unknown fallback policy #{fallback_policy}" + lambda { fail "Unknown fallback policy #{fallback_policy}" } end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/executor_service.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/executor_service.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/executor_service.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/executor_service.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb similarity index 94% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb index b665f6c569..4de512a5ff 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb @@ -71,9 +71,16 @@ module Concurrent # @return [Integer] Number of tasks that may be enqueued before reaching `max_queue` and rejecting # new tasks. A value of -1 indicates that the queue may grow without bound. - - - + # @!macro thread_pool_executor_method_prune_pool + # Prune the thread pool of unneeded threads + # + # What is being pruned is controlled by the min_threads and idletime + # parameters passed at pool creation time + # + # 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 explicitely in case your application post jobs in bursts (a + # lot of jobs and then nothing for long periods) # @!macro thread_pool_executor_public_api # @@ -111,6 +118,9 @@ module Concurrent # # @!method can_overflow? # @!macro executor_service_method_can_overflow_question + # + # @!method prune_pool + # @!macro thread_pool_executor_method_prune_pool diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/immediate_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/immediate_executor.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/immediate_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/immediate_executor.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb similarity index 97% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb index 9c0f3100cf..e63e89812e 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb @@ -20,7 +20,7 @@ if Concurrent.on_jruby? def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? - return handle_fallback(*args, &task) unless running? + return fallback_action(*args, &task).call unless running? @executor.submit Job.new(args, task) true rescue Java::JavaUtilConcurrent::RejectedExecutionException diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb similarity index 98% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb index e67066385e..1213a95fb0 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb @@ -93,6 +93,10 @@ if Concurrent.on_jruby? super && !@executor.isTerminating end + # @!macro thread_pool_executor_method_prune_pool + def prune_pool + end + private def ns_initialize(opts) diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb similarity index 84% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb index 06658d3769..1f7301b947 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb @@ -16,10 +16,16 @@ module Concurrent def post(*args, &task) raise ArgumentError.new('no block given') unless block_given? - synchronize do - # If the executor is shut down, reject this task - return handle_fallback(*args, &task) unless running? - ns_execute(*args, &task) + deferred_action = synchronize { + if running? + ns_execute(*args, &task) + else + fallback_action(*args, &task) + end + } + if deferred_action + deferred_action.call + else true end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb similarity index 88% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb index dc20d765b0..298dd7fed0 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb @@ -93,13 +93,8 @@ module Concurrent end # @!visibility private - def ready_worker(worker) - synchronize { ns_ready_worker worker } - end - - # @!visibility private - def worker_not_old_enough(worker) - synchronize { ns_worker_not_old_enough worker } + def ready_worker(worker, last_message) + synchronize { ns_ready_worker worker, last_message } end # @!visibility private @@ -112,6 +107,11 @@ module Concurrent synchronize { @completed_task_count += 1 } end + # @!macro thread_pool_executor_method_prune_pool + def prune_pool + synchronize { ns_prune_pool } + end + private # @!visibility private @@ -156,10 +156,11 @@ module Concurrent if ns_assign_worker(*args, &task) || ns_enqueue(*args, &task) @scheduled_task_count += 1 else - handle_fallback(*args, &task) + return fallback_action(*args, &task) end ns_prune_pool if @next_gc_time < Concurrent.monotonic_time + nil end # @!visibility private @@ -192,7 +193,7 @@ module Concurrent # @!visibility private def ns_assign_worker(*args, &task) # keep growing if the pool is not at the minimum yet - worker = (@ready.pop if @pool.size >= @min_length) || ns_add_busy_worker + worker, _ = (@ready.pop if @pool.size >= @min_length) || ns_add_busy_worker if worker worker << [task, args] true @@ -223,7 +224,7 @@ module Concurrent def ns_worker_died(worker) ns_remove_busy_worker worker replacement_worker = ns_add_busy_worker - ns_ready_worker replacement_worker, false if replacement_worker + ns_ready_worker replacement_worker, Concurrent.monotonic_time, false if replacement_worker end # creates new worker which has to receive work to do after it's added @@ -242,29 +243,21 @@ module Concurrent # handle ready worker, giving it new job or assigning back to @ready # # @!visibility private - def ns_ready_worker(worker, success = true) + def ns_ready_worker(worker, last_message, success = true) task_and_args = @queue.shift if task_and_args worker << task_and_args else # stop workers when !running?, do not return them to @ready if running? - @ready.push(worker) + raise unless last_message + @ready.push([worker, last_message]) else worker.stop end end end - # returns back worker to @ready which was not idle for enough time - # - # @!visibility private - def ns_worker_not_old_enough(worker) - # let's put workers coming from idle_test back to the start (as the oldest worker) - @ready.unshift(worker) - true - end - # removes a worker which is not in not tracked in @ready # # @!visibility private @@ -278,10 +271,17 @@ module Concurrent # # @!visibility private def ns_prune_pool - return if @pool.size <= @min_length - - last_used = @ready.shift - last_used << :idle_test if last_used + 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 + end @next_gc_time = Concurrent.monotonic_time + @gc_interval end @@ -330,19 +330,10 @@ module Concurrent def create_worker(queue, pool, idletime) Thread.new(queue, pool, idletime) do |my_queue, my_pool, my_idletime| - last_message = Concurrent.monotonic_time catch(:stop) do loop do case message = my_queue.pop - when :idle_test - if (Concurrent.monotonic_time - last_message) > my_idletime - my_pool.remove_busy_worker(self) - throw :stop - else - my_pool.worker_not_old_enough(self) - end - when :stop my_pool.remove_busy_worker(self) throw :stop @@ -350,9 +341,7 @@ module Concurrent else task, args = message run_task my_pool, task, args - last_message = Concurrent.monotonic_time - - my_pool.ready_worker(self) + my_pool.ready_worker(self, Concurrent.monotonic_time) end end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb similarity index 91% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb index 414aa641f5..17acfd567c 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb @@ -16,10 +16,10 @@ module Concurrent # @return [Array] def execute(*args) - synchronize do - success = false - value = reason = nil + success = true + value = reason = nil + synchronize do begin value = @task.call(*args) success = true @@ -27,9 +27,9 @@ module Concurrent reason = ex success = false end - - [success, value, reason] end + + [success, value, reason] end end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/timer_set.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/timer_set.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executor/timer_set.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/timer_set.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executors.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executors.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/executors.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executors.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/future.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/future.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/future.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/future.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/hash.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/hash.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/hash.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/hash.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/immutable_struct.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/immutable_struct.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/immutable_struct.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/immutable_struct.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/ivar.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/ivar.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/ivar.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/ivar.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/map.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/map.rb similarity index 99% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/map.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/map.rb index 00731a3f16..808757fa4b 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/map.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/map.rb @@ -281,7 +281,6 @@ module Concurrent each_pair { |k, v| return k if v == value } nil end unless method_defined?(:key) - alias_method :index, :key if RUBY_VERSION < '1.9' # Is map empty? # @return [true, false] diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/maybe.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/maybe.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/maybe.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/maybe.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/mutable_struct.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/mutable_struct.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/mutable_struct.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/mutable_struct.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/mvar.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/mvar.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/mvar.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/mvar.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/options.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/options.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/options.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/options.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/promise.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/promise.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/promise.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/promise.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/promises.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/promises.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/promises.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/promises.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/re_include.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/re_include.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/re_include.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/re_include.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/scheduled_task.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/scheduled_task.rb similarity index 91% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/scheduled_task.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/scheduled_task.rb index 90f78b00ce..96c8272178 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/scheduled_task.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/scheduled_task.rb @@ -58,29 +58,42 @@ module Concurrent # @example Basic usage # # require 'concurrent' - # require 'thread' # for Queue - # require 'open-uri' # for open(uri) + # require 'csv' + # require 'open-uri' # # class Ticker - # def get_year_end_closing(symbol, year) - # uri = "http://ichart.finance.yahoo.com/table.csv?s=#{symbol}&a=11&b=01&c=#{year}&d=11&e=31&f=#{year}&g=m" - # data = open(uri) {|f| f.collect{|line| line.strip } } - # data[1].split(',')[4].to_f - # end + # def get_year_end_closing(symbol, year, api_key) + # uri = "https://www.alphavantage.co/query?function=TIME_SERIES_MONTHLY&symbol=#{symbol}&apikey=#{api_key}&datatype=csv" + # data = [] + # csv = URI.parse(uri).read + # if csv.include?('call frequency') + # return :rate_limit_exceeded + # end + # CSV.parse(csv, headers: true) do |row| + # data << row['close'].to_f if row['timestamp'].include?(year.to_s) + # end + # year_end = data.first + # year_end + # rescue => e + # p e + # end # end # - # # Future - # price = Concurrent::Future.execute{ Ticker.new.get_year_end_closing('TWTR', 2013) } - # price.state #=> :pending - # sleep(1) # do other stuff - # price.value #=> 63.65 - # price.state #=> :fulfilled + # api_key = ENV['ALPHAVANTAGE_KEY'] + # abort(error_message) unless api_key # - # # ScheduledTask - # task = Concurrent::ScheduledTask.execute(2){ Ticker.new.get_year_end_closing('INTC', 2013) } - # task.state #=> :pending - # sleep(3) # do other stuff - # task.value #=> 25.96 + # # Future + # price = Concurrent::Future.execute{ Ticker.new.get_year_end_closing('TWTR', 2013, api_key) } + # price.state #=> :pending + # price.pending? #=> true + # price.value(0) #=> nil (does not block) + # + # sleep(1) # do other stuff + # + # price.value #=> 63.65 (after blocking if necessary) + # price.state #=> :fulfilled + # price.fulfilled? #=> true + # price.value #=> 63.65 # # @example Successful task execution # diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/set.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/set.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/set.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/set.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/settable_struct.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/settable_struct.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/settable_struct.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/settable_struct.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/condition.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/condition.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/condition.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/condition.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/jruby_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/jruby_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/jruby_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/jruby_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/lock.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/lock.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/lock.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/lock.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb similarity index 91% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb index cdbe4d4377..ae28e5bc8e 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb @@ -4,9 +4,7 @@ module Concurrent # @!visibility private # @!macro internal_implementation_note LockableObjectImplementation = case - when Concurrent.on_cruby? && Concurrent.ruby_version(:<=, 1, 9, 3) - MonitorLockableObject - when Concurrent.on_cruby? && Concurrent.ruby_version(:>, 1, 9, 3) + when Concurrent.on_cruby? MutexLockableObject when Concurrent.on_jruby? JRubyLockableObject diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/mri_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/mri_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/mri_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/mri_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/rbx_lockable_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/rbx_lockable_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/rbx_lockable_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/rbx_lockable_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/rbx_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/rbx_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/rbx_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/rbx_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/truffleruby_object.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/truffleruby_object.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/truffleruby_object.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/truffleruby_object.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/volatile.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/volatile.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/synchronization/volatile.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/synchronization/volatile.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/adder.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/adder.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/adder.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/adder.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/cheap_lockable.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/cheap_lockable.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/cheap_lockable.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/cheap_lockable.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/striped64.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/striped64.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/striped64.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/striped64.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/xor_shift_random.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/xor_shift_random.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/thread_safe/util/xor_shift_random.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/thread_safe/util/xor_shift_random.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/timer_task.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/timer_task.rb similarity index 86% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/timer_task.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/timer_task.rb index a0b7233335..b69cfc8d8a 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/timer_task.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/timer_task.rb @@ -25,9 +25,7 @@ module Concurrent # Should the task experience an unrecoverable crash only the task thread will # crash. This makes the `TimerTask` very fault tolerant. Additionally, the # `TimerTask` thread can respond to the success or failure of the task, - # performing logging or ancillary operations. `TimerTask` can also be - # configured with a timeout value allowing it to kill a task that runs too - # long. + # performing logging or ancillary operations. # # One other advantage of `TimerTask` is that it forces the business logic to # be completely decoupled from the concurrency logic. The business logic can @@ -48,9 +46,7 @@ module Concurrent # {http://ruby-doc.org/stdlib-2.0/libdoc/observer/rdoc/Observable.html # Observable} module. On execution the `TimerTask` will notify the observers # with three arguments: time of execution, the result of the block (or nil on - # failure), and any raised exceptions (or nil on success). If the timeout - # interval is exceeded the observer will receive a `Concurrent::TimeoutError` - # object as the third argument. + # failure), and any raised exceptions (or nil on success). # # @!macro copy_options # @@ -59,20 +55,18 @@ module Concurrent # task.execute # # task.execution_interval #=> 60 (default) - # task.timeout_interval #=> 30 (default) # # # wait 60 seconds... # #=> 'Boom!' # # task.shutdown #=> true # - # @example Configuring `:execution_interval` and `:timeout_interval` - # task = Concurrent::TimerTask.new(execution_interval: 5, timeout_interval: 5) do + # @example Configuring `:execution_interval` + # task = Concurrent::TimerTask.new(execution_interval: 5) do # puts 'Boom!' # end # # task.execution_interval #=> 5 - # task.timeout_interval #=> 5 # # @example Immediate execution with `:run_now` # task = Concurrent::TimerTask.new(run_now: true){ puts 'Boom!' } @@ -115,15 +109,13 @@ module Concurrent # def update(time, result, ex) # if result # print "(#{time}) Execution successfully returned #{result}\n" - # elsif ex.is_a?(Concurrent::TimeoutError) - # print "(#{time}) Execution timed out\n" # else # print "(#{time}) Execution failed with error #{ex}\n" # end # end # end # - # task = Concurrent::TimerTask.new(execution_interval: 1, timeout_interval: 1){ 42 } + # task = Concurrent::TimerTask.new(execution_interval: 1){ 42 } # task.add_observer(TaskObserver.new) # task.execute # sleep 4 @@ -133,7 +125,7 @@ module Concurrent # #=> (2013-10-13 19:09:00 -0400) Execution successfully returned 42 # task.shutdown # - # task = Concurrent::TimerTask.new(execution_interval: 1, timeout_interval: 1){ sleep } + # task = Concurrent::TimerTask.new(execution_interval: 1){ sleep } # task.add_observer(TaskObserver.new) # task.execute # @@ -169,8 +161,6 @@ module Concurrent # @param [Hash] opts the options defining task execution. # @option opts [Integer] :execution_interval number of seconds between # task executions (default: EXECUTION_INTERVAL) - # @option opts [Integer] :timeout_interval number of seconds a task can - # run before it is considered to have failed (default: TIMEOUT_INTERVAL) # @option opts [Boolean] :run_now Whether to run the task immediately # upon instantiation or to wait until the first # execution_interval # has passed (default: false) @@ -256,18 +246,14 @@ module Concurrent # @return [Fixnum] Number of seconds the task can run before it is # considered to have failed. def timeout_interval - synchronize { @timeout_interval } + warn 'TimerTask timeouts are now ignored as these were not able to be implemented correctly' end # @!attribute [rw] timeout_interval # @return [Fixnum] Number of seconds the task can run before it is # considered to have failed. def timeout_interval=(value) - if (value = value.to_f) <= 0.0 - raise ArgumentError.new('must be greater than zero') - else - synchronize { @timeout_interval = value } - end + warn 'TimerTask timeouts are now ignored as these were not able to be implemented correctly' end private :post, :<< @@ -278,7 +264,9 @@ module Concurrent set_deref_options(opts) self.execution_interval = opts[:execution] || opts[:execution_interval] || EXECUTION_INTERVAL - self.timeout_interval = opts[:timeout] || opts[:timeout_interval] || TIMEOUT_INTERVAL + if opts[:timeout] || opts[:timeout_interval] + warn 'TimeTask timeouts are now ignored as these were not able to be implemented correctly' + end @run_now = opts[:now] || opts[:run_now] @executor = Concurrent::SafeTaskExecutor.new(task) @running = Concurrent::AtomicBoolean.new(false) @@ -308,7 +296,6 @@ module Concurrent # @!visibility private def execute_task(completion) return nil unless @running.true? - ScheduledTask.execute(timeout_interval, args: [completion], &method(:timeout_task)) _success, value, reason = @executor.execute(self) if completion.try? self.value = value @@ -320,14 +307,5 @@ module Concurrent end nil end - - # @!visibility private - def timeout_task(completion) - return unless @running.true? - if completion.try? - schedule_next_task - observers.notify_observers(Time.now, nil, Concurrent::TimeoutError.new) - end - end end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/tuple.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/tuple.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/tuple.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/tuple.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/tvar.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/tvar.rb similarity index 75% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/tvar.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/tvar.rb index d6fe3b1a35..104761ff60 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/tvar.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/tvar.rb @@ -15,7 +15,6 @@ module Concurrent # Create a new `TVar` with an initial value. def initialize(value) @value = value - @version = 0 @lock = Mutex.new end @@ -43,16 +42,6 @@ module Concurrent @value = value end - # @!visibility private - def unsafe_version # :nodoc: - @version - end - - # @!visibility private - def unsafe_increment_version # :nodoc: - @version += 1 - end - # @!visibility private def unsafe_lock # :nodoc: @lock @@ -164,53 +153,39 @@ module Concurrent ABORTED = ::Object.new - ReadLogEntry = Struct.new(:tvar, :version) + OpenEntry = Struct.new(:value, :modified) AbortError = Class.new(StandardError) LeaveError = Class.new(StandardError) def initialize - @read_log = [] - @write_log = {} + @open_tvars = {} end def read(tvar) - Concurrent::abort_transaction unless valid? - - if @write_log.has_key? tvar - @write_log[tvar] - else - @read_log.push(ReadLogEntry.new(tvar, tvar.unsafe_version)) - tvar.unsafe_value - end + entry = open(tvar) + entry.value end def write(tvar, value) - # Have we already written to this TVar? + entry = open(tvar) + entry.modified = true + entry.value = value + end - if @write_log.has_key? tvar - # Record the value written - @write_log[tvar] = value - else - # Try to lock the TVar + def open(tvar) + entry = @open_tvars[tvar] + unless entry unless tvar.unsafe_lock.try_lock - # Someone else is writing to this TVar - abort Concurrent::abort_transaction end - # Record the value written - - @write_log[tvar] = value - - # If we previously read from it, check the version hasn't changed - - @read_log.each do |log_entry| - if log_entry.tvar == tvar and tvar.unsafe_version > log_entry.version - Concurrent::abort_transaction - end - end + entry = OpenEntry.new(tvar.unsafe_value, false) + @open_tvars[tvar] = entry end + + entry end def abort @@ -218,32 +193,17 @@ module Concurrent end def commit - return false unless valid? - - @write_log.each_pair do |tvar, value| - tvar.unsafe_value = value - tvar.unsafe_increment_version - end - - unlock - - true - end - - def valid? - @read_log.each do |log_entry| - unless @write_log.has_key? log_entry.tvar - if log_entry.tvar.unsafe_version > log_entry.version - return false - end + @open_tvars.each do |tvar, entry| + if entry.modified + tvar.unsafe_value = entry.value end end - true + unlock end def unlock - @write_log.each_key do |tvar| + @open_tvars.each_key do |tvar| tvar.unsafe_lock.unlock end end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/engine.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/engine.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/engine.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/engine.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb new file mode 100644 index 0000000000..0fa5c5094e --- /dev/null +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb @@ -0,0 +1,90 @@ +require 'concurrent/synchronization' + +module Concurrent + + # @!macro monotonic_get_time + # + # Returns the current time a tracked by the application monotonic clock. + # + # @param [Symbol] unit the time unit to be returned, can be either + # :float_second, :float_millisecond, :float_microsecond, :second, + # :millisecond, :microsecond, or :nanosecond default to :float_second. + # + # @return [Float] The current monotonic time since some unspecified + # starting point + # + # @!macro monotonic_clock_warning + if defined?(Process::CLOCK_MONOTONIC) + + def monotonic_time(unit = :float_second) + Process.clock_gettime(Process::CLOCK_MONOTONIC, unit) + end + + elsif Concurrent.on_jruby? + + # @!visibility private + TIME_UNITS = Hash.new { |_hash, key| raise ArgumentError, "unexpected unit: #{key}" }.compare_by_identity + TIME_UNITS.merge!( + second: 1_000_000_000, + millisecond: 1_000_000, + microsecond: 1_000, + nanosecond: 1, + float_second: 1_000_000_000.0, + float_millisecond: 1_000_000.0, + float_microsecond: 1_000.0, + ) + TIME_UNITS.freeze + private_constant :TIME_UNITS + + def monotonic_time(unit = :float_second) + java.lang.System.nanoTime() / TIME_UNITS[unit] + end + + else + + class_definition = Class.new(Synchronization::LockableObject) do + def initialize + @last_time = Time.now.to_f + @time_units = Hash.new { |_hash, key| raise ArgumentError, "unexpected unit: #{key}" }.compare_by_identity + @time_units.merge!( + second: [nil, true], + millisecond: [1_000, true], + microsecond: [1_000_000, true], + nanosecond: [1_000_000_000, true], + float_second: [nil, false], + float_millisecond: [1_000.0, false], + float_microsecond: [1_000_000.0, false], + ) + super() + end + + # @!visibility private + def get_time(unit) + synchronize do + now = Time.now.to_f + if @last_time < now + @last_time = now + else # clock has moved back in time + @last_time += 0.000_001 + end + scale, to_int = @time_units[unit] + now *= scale if scale + now = now.to_i if to_int + now + end + end + end + + # Clock that cannot be set and represents monotonic time since + # some unspecified starting point. + # + # @!visibility private + GLOBAL_MONOTONIC_CLOCK = class_definition.new + private_constant :GLOBAL_MONOTONIC_CLOCK + + def monotonic_time(unit = :float_second) + GLOBAL_MONOTONIC_CLOCK.get_time(unit) + end + end + module_function :monotonic_time +end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/native_integer.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/native_integer.rb similarity index 100% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/native_integer.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/native_integer.rb diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/processor_counter.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/processor_counter.rb similarity index 72% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/processor_counter.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/processor_counter.rb index 531ca0a3c9..c59f9817a5 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/processor_counter.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/utility/processor_counter.rb @@ -79,47 +79,14 @@ module Concurrent def compute_processor_count if Concurrent.on_jruby? java.lang.Runtime.getRuntime.availableProcessors - elsif Etc.respond_to?(:nprocessors) && (nprocessor = Etc.nprocessors rescue nil) - nprocessor else - os_name = RbConfig::CONFIG["target_os"] - if os_name =~ /mingw|mswin/ - require 'win32ole' - result = WIN32OLE.connect("winmgmts://").ExecQuery( - "select NumberOfLogicalProcessors from Win32_Processor") - result.to_enum.collect(&:NumberOfLogicalProcessors).reduce(:+) - elsif File.readable?("/proc/cpuinfo") && (cpuinfo_count = IO.read("/proc/cpuinfo").scan(/^processor/).size) > 0 - cpuinfo_count - elsif File.executable?("/usr/bin/nproc") - IO.popen("/usr/bin/nproc --all", &:read).to_i - elsif File.executable?("/usr/bin/hwprefs") - IO.popen("/usr/bin/hwprefs thread_count", &:read).to_i - elsif File.executable?("/usr/sbin/psrinfo") - IO.popen("/usr/sbin/psrinfo", &:read).scan(/^.*on-*line/).size - elsif File.executable?("/usr/sbin/ioscan") - IO.popen("/usr/sbin/ioscan -kC processor", &:read).scan(/^.*processor/).size - elsif File.executable?("/usr/sbin/pmcycles") - IO.popen("/usr/sbin/pmcycles -m", &:read).count("\n") - elsif File.executable?("/usr/sbin/lsdev") - IO.popen("/usr/sbin/lsdev -Cc processor -S 1", &:read).count("\n") - elsif File.executable?("/usr/sbin/sysconf") and os_name =~ /irix/i - IO.popen("/usr/sbin/sysconf NPROC_ONLN", &:read).to_i - elsif File.executable?("/usr/sbin/sysctl") - IO.popen("/usr/sbin/sysctl -n hw.ncpu", &:read).to_i - elsif File.executable?("/sbin/sysctl") - IO.popen("/sbin/sysctl -n hw.ncpu", &:read).to_i - else - # TODO (pitr-ch 05-Nov-2016): warn about failures - 1 - end + Etc.nprocessors end - rescue - return 1 end def compute_physical_processor_count ppc = case RbConfig::CONFIG["target_os"] - when /darwin1/ + when /darwin\d\d/ IO.popen("/usr/sbin/sysctl -n hw.physicalcpu", &:read).to_i when /linux/ cores = {} # unique physical ID / core ID combinations diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/version.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/version.rb similarity index 51% rename from Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/version.rb rename to Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/version.rb index 7bc7970be0..4372d0d7b3 100644 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/version.rb +++ b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/version.rb @@ -1,3 +1,3 @@ module Concurrent - VERSION = '1.1.9' + VERSION = '1.1.10' end diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent-ruby.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent-ruby.rb deleted file mode 100644 index 08917e3bb7..0000000000 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent-ruby.rb +++ /dev/null @@ -1 +0,0 @@ -require_relative "./concurrent" diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concurrent_ruby.jar b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/concurrent_ruby.jar deleted file mode 100644 index 887aa1643d2391b66ff6b27bf8c2343bf18ec798..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 137050 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%0D>F9(|-CK{> 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 diff --git a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb b/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb deleted file mode 100644 index c9f4b369a4..0000000000 --- a/Library/Homebrew/vendor/bundle/ruby/2.6.0/gems/concurrent-ruby-1.1.9/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb +++ /dev/null @@ -1,58 +0,0 @@ -require 'concurrent/synchronization' - -module Concurrent - - class_definition = Class.new(Synchronization::LockableObject) do - def initialize - @last_time = Time.now.to_f - super() - end - - if defined?(Process::CLOCK_MONOTONIC) - # @!visibility private - def get_time - Process.clock_gettime(Process::CLOCK_MONOTONIC) - end - elsif Concurrent.on_jruby? - # @!visibility private - def get_time - java.lang.System.nanoTime() / 1_000_000_000.0 - end - else - - # @!visibility private - def get_time - synchronize do - now = Time.now.to_f - if @last_time < now - @last_time = now - else # clock has moved back in time - @last_time += 0.000_001 - end - end - end - - end - end - - # Clock that cannot be set and represents monotonic time since - # some unspecified starting point. - # - # @!visibility private - GLOBAL_MONOTONIC_CLOCK = class_definition.new - private_constant :GLOBAL_MONOTONIC_CLOCK - - # @!macro monotonic_get_time - # - # Returns the current time a tracked by the application monotonic clock. - # - # @return [Float] The current monotonic time since some unspecified - # starting point - # - # @!macro monotonic_clock_warning - def monotonic_time - GLOBAL_MONOTONIC_CLOCK.get_time - end - - module_function :monotonic_time -end From d0f5a1e1495a52771aec7c140afcf96c98259d8a Mon Sep 17 00:00:00 2001 From: BrewTestBot <1589480+BrewTestBot@users.noreply.github.com> Date: Tue, 22 Mar 2022 18:24:48 +0000 Subject: [PATCH 3/3] Update RBI files for concurrent-ruby. --- ...y@1.1.9.rbi => concurrent-ruby@1.1.10.rbi} | 33 ++++++++----------- .../sorbet/rbi/hidden-definitions/hidden.rbi | 16 +++++++-- 2 files changed, 28 insertions(+), 21 deletions(-) rename Library/Homebrew/sorbet/rbi/gems/{concurrent-ruby@1.1.9.rbi => concurrent-ruby@1.1.10.rbi} (99%) diff --git a/Library/Homebrew/sorbet/rbi/gems/concurrent-ruby@1.1.9.rbi b/Library/Homebrew/sorbet/rbi/gems/concurrent-ruby@1.1.10.rbi similarity index 99% rename from Library/Homebrew/sorbet/rbi/gems/concurrent-ruby@1.1.9.rbi rename to Library/Homebrew/sorbet/rbi/gems/concurrent-ruby@1.1.10.rbi index 097fda524c..3c8ddd94ee 100644 --- a/Library/Homebrew/sorbet/rbi/gems/concurrent-ruby@1.1.9.rbi +++ b/Library/Homebrew/sorbet/rbi/gems/concurrent-ruby@1.1.10.rbi @@ -1,9 +1,9 @@ +# typed: true + # DO NOT EDIT MANUALLY # This is an autogenerated file for types exported from the `concurrent-ruby` gem. # Please instead update this file by running `bin/tapioca gem concurrent-ruby`. -# typed: true - module Concurrent extend ::Concurrent::Utility::EngineDetector extend ::Concurrent::Utility::NativeExtensionLoader @@ -21,7 +21,7 @@ module Concurrent def dataflow_with(executor, *inputs, &block); end def dataflow_with!(executor, *inputs, &block); end def leave_transaction; end - def monotonic_time; end + def monotonic_time(unit = T.unsafe(nil)); end class << self def abort_transaction; end @@ -42,7 +42,7 @@ module Concurrent def global_logger=(value); end def global_timer_set; end def leave_transaction; end - def monotonic_time; end + def monotonic_time(unit = T.unsafe(nil)); end def new_fast_executor(opts = T.unsafe(nil)); end def new_io_executor(opts = T.unsafe(nil)); end def physical_processor_count; end @@ -89,7 +89,7 @@ class Concurrent::AbstractExecutorService < ::Concurrent::Synchronization::Locka private - def handle_fallback(*args); end + def fallback_action(*args); end def ns_auto_terminate?; end def ns_execute(*args, &task); end def ns_kill_execution; end @@ -722,7 +722,6 @@ Concurrent::GLOBAL_FAST_EXECUTOR = T.let(T.unsafe(nil), Concurrent::Delay) Concurrent::GLOBAL_IMMEDIATE_EXECUTOR = T.let(T.unsafe(nil), Concurrent::ImmediateExecutor) Concurrent::GLOBAL_IO_EXECUTOR = T.let(T.unsafe(nil), Concurrent::Delay) Concurrent::GLOBAL_LOGGER = T.let(T.unsafe(nil), Concurrent::AtomicReference) -Concurrent::GLOBAL_MONOTONIC_CLOCK = T.let(T.unsafe(nil), T.untyped) Concurrent::GLOBAL_TIMER_SET = T.let(T.unsafe(nil), Concurrent::Delay) class Concurrent::Hash < ::Hash; end Concurrent::HashImplementation = Hash @@ -1784,14 +1783,14 @@ class Concurrent::RubyThreadPoolExecutor < ::Concurrent::RubyExecutorService def max_length; end def max_queue; end def min_length; end + def prune_pool; end def queue_length; end - def ready_worker(worker); end + def ready_worker(worker, last_message); end def remaining_capacity; end def remove_busy_worker(worker); end def scheduled_task_count; end def synchronous; end def worker_died(worker); end - def worker_not_old_enough(worker); end def worker_task_completed; end private @@ -1804,12 +1803,11 @@ class Concurrent::RubyThreadPoolExecutor < ::Concurrent::RubyExecutorService def ns_kill_execution; end def ns_limited_queue?; end def ns_prune_pool; end - def ns_ready_worker(worker, success = T.unsafe(nil)); end + def ns_ready_worker(worker, last_message, success = T.unsafe(nil)); end def ns_remove_busy_worker(worker); end def ns_reset_if_forked; end def ns_shutdown_execution; end def ns_worker_died(worker); end - def ns_worker_not_old_enough(worker); end end Concurrent::RubyThreadPoolExecutor::DEFAULT_MAX_POOL_SIZE = T.let(T.unsafe(nil), Integer) @@ -2216,11 +2214,9 @@ end class Concurrent::TVar < ::Concurrent::Synchronization::Object def initialize(value); end - def unsafe_increment_version; end def unsafe_lock; end def unsafe_value; end def unsafe_value=(value); end - def unsafe_version; end def value; end def value=(value); end @@ -2285,7 +2281,6 @@ class Concurrent::TimerTask < ::Concurrent::RubyExecutorService def ns_kill_execution; end def ns_shutdown_execution; end def schedule_next_task(interval = T.unsafe(nil)); end - def timeout_task(completion); end class << self def execute(opts = T.unsafe(nil), &task); end @@ -2300,9 +2295,9 @@ class Concurrent::Transaction def abort; end def commit; end + def open(tvar); end def read(tvar); end def unlock; end - def valid?; end def write(tvar, value); end class << self @@ -2315,11 +2310,11 @@ Concurrent::Transaction::ABORTED = T.let(T.unsafe(nil), Object) class Concurrent::Transaction::AbortError < ::StandardError; end class Concurrent::Transaction::LeaveError < ::StandardError; end -class Concurrent::Transaction::ReadLogEntry < ::Struct - def tvar; end - def tvar=(_); end - def version; end - def version=(_); end +class Concurrent::Transaction::OpenEntry < ::Struct + def modified; end + def modified=(_); end + def value; end + def value=(_); end class << self def [](*_arg0); end diff --git a/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi b/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi index cd9d22ae24..f6bb8c1d63 100644 --- a/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi +++ b/Library/Homebrew/sorbet/rbi/hidden-definitions/hidden.rbi @@ -3488,7 +3488,13 @@ end Net::HTTPFatalErrorCode = Net::HTTPClientError -Net::HTTPInformationCode = Net::HTTPInformation +class Net::HTTPInformation +end + +Net::HTTPInformationCode::EXCEPTION_TYPE = Net::HTTPError + +class Net::HTTPInformation +end class Net::HTTPLoopDetected HAS_BODY = ::T.let(nil, ::T.untyped) @@ -3548,7 +3554,13 @@ Net::HTTPServerErrorCode = Net::HTTPServerError Net::HTTPSession = Net::HTTP -Net::HTTPSuccessCode = Net::HTTPSuccess +class Net::HTTPSuccess +end + +Net::HTTPSuccessCode::EXCEPTION_TYPE = Net::HTTPError + +class Net::HTTPSuccess +end class Net::HTTPURITooLong HAS_BODY = ::T.let(nil, ::T.untyped)