concurrent-ruby-edge 0.6.0 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +50 -0
  3. data/{LICENSE.md → LICENSE.txt} +18 -20
  4. data/README.md +52 -31
  5. data/lib/concurrent-ruby-edge/concurrent/actor/behaviour/abstract.rb +2 -0
  6. data/lib/concurrent-ruby-edge/concurrent/actor/behaviour/awaits.rb +2 -0
  7. data/lib/concurrent-ruby-edge/concurrent/actor/behaviour/buffer.rb +2 -0
  8. data/lib/concurrent-ruby-edge/concurrent/actor/behaviour/errors_on_unknown_message.rb +2 -0
  9. data/lib/concurrent-ruby-edge/concurrent/actor/behaviour/executes_context.rb +2 -0
  10. data/lib/concurrent-ruby-edge/concurrent/actor/behaviour/linking.rb +2 -0
  11. data/lib/concurrent-ruby-edge/concurrent/actor/behaviour/pausing.rb +2 -0
  12. data/lib/concurrent-ruby-edge/concurrent/actor/behaviour/removes_child.rb +2 -0
  13. data/lib/concurrent-ruby-edge/concurrent/actor/behaviour/sets_results.rb +2 -0
  14. data/lib/concurrent-ruby-edge/concurrent/actor/behaviour/supervising.rb +2 -0
  15. data/lib/concurrent-ruby-edge/concurrent/actor/behaviour/termination.rb +2 -0
  16. data/lib/concurrent-ruby-edge/concurrent/actor/context.rb +2 -0
  17. data/lib/concurrent-ruby-edge/concurrent/actor/core.rb +3 -3
  18. data/lib/concurrent-ruby-edge/concurrent/actor/default_dead_letter_handler.rb +2 -0
  19. data/lib/concurrent-ruby-edge/concurrent/actor/envelope.rb +2 -0
  20. data/lib/concurrent-ruby-edge/concurrent/actor/errors.rb +2 -0
  21. data/lib/concurrent-ruby-edge/concurrent/actor/internal_delegations.rb +3 -0
  22. data/lib/concurrent-ruby-edge/concurrent/actor/reference.rb +3 -0
  23. data/lib/concurrent-ruby-edge/concurrent/actor/root.rb +3 -0
  24. data/lib/concurrent-ruby-edge/concurrent/actor/utils/ad_hoc.rb +2 -0
  25. data/lib/concurrent-ruby-edge/concurrent/actor/utils/balancer.rb +2 -0
  26. data/lib/concurrent-ruby-edge/concurrent/actor/utils/broadcast.rb +1 -0
  27. data/lib/concurrent-ruby-edge/concurrent/actor/utils/pool.rb +1 -0
  28. data/lib/concurrent-ruby-edge/concurrent/actor.rb +2 -1
  29. data/lib/concurrent-ruby-edge/concurrent/channel/buffer/dropping.rb +1 -0
  30. data/lib/concurrent-ruby-edge/concurrent/channel/buffer/sliding.rb +1 -0
  31. data/lib/concurrent-ruby-edge/concurrent/channel/tick.rb +1 -1
  32. data/lib/concurrent-ruby-edge/concurrent/edge/cancellation.rb +2 -0
  33. data/lib/concurrent-ruby-edge/concurrent/edge/channel.rb +3 -0
  34. data/lib/concurrent-ruby-edge/concurrent/edge/erlang_actor.rb +7 -3
  35. data/lib/concurrent-ruby-edge/concurrent/edge/lock_free_queue.rb +2 -0
  36. data/lib/concurrent-ruby-edge/concurrent/edge/old_channel_integration.rb +2 -0
  37. data/lib/concurrent-ruby-edge/concurrent/edge/processing_actor.rb +4 -0
  38. data/lib/concurrent-ruby-edge/concurrent/edge/throttle.rb +4 -0
  39. data/lib/concurrent-ruby-edge/concurrent/edge/version.rb +1 -1
  40. data/lib/concurrent-ruby-edge/concurrent/executor/wrapping_executor.rb +3 -0
  41. data/lib/concurrent-ruby-edge/concurrent-edge.rb +2 -2
  42. metadata +8 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07bd4fa262a18699bf43156af7556a104b28183a278812f87a2000c6f471aa87
4
- data.tar.gz: efbf99e09ebc0b5a813a1f51827fca255509cd7fca288864a7ef03db09ae705e
3
+ metadata.gz: f167a49a3185f5364fd2f6e4c3aa0b677e24027815a0b6680237b6b782de04a6
4
+ data.tar.gz: e4b1aa280e5901d08e2d86d2c75c6a61a58d74eddc6f09800e454356f26b3ef2
5
5
  SHA512:
6
- metadata.gz: b1f51066075fc76ea212ca3493cb390fa3596445f11fe35d346f7bbac2dfce95233513a07b8d0b31b55f25924212ce4e2804f0921247cee11ef602f8b28f2a3f
7
- data.tar.gz: 1ee466164104b8bfccb7f386d721068d5b3018a65630231b2ba42ae94f04c42b58de8ff3228673f2e30a00c62bcf4a9fdb4b8989206b6a1d088c57990921aaf6
6
+ metadata.gz: d68dba078cb11901127698aa8721c1f4bdb0f5688412ac7bf80b84408768b3687586937b92587b395435a725129b048aba763156282814b26e4e3e39eb2cae48
7
+ data.tar.gz: 704ba13e3e7566beff49e9ef29f33eb1842a8e597e0d2054fec085eb7ff21839878064989894c002327d99ac29e42e38c797d8b118401fbcb40710e12c4040c9
data/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  ## Current
2
2
 
3
+ ## Release v1.2.0 (23 Jan 2023)
4
+
5
+ * (#962) Fix ReentrantReadWriteLock to use the same granularity for locals as for Mutex it uses.
6
+ * (#983) Add FiberLocalVar
7
+ * (#934) concurrent-ruby now supports requiring individual classes (public classes listed in the docs), e.g., `require 'concurrent/map'`
8
+ * (#976) Let `Promises.any_fulfilled_future` take an `Event`
9
+ * Improve documentation of various classes
10
+ * (#975) Set the Ruby compatibility version at 2.3
11
+ * (#972) Remove Rubinius-related code
12
+
13
+ ## Release v1.1.10 (22 Mar 2022)
14
+
15
+ concurrent-ruby:
16
+
17
+ * (#951) Set the Ruby compatibility version at 2.2
18
+ * (#939, #933) The `caller_runs` fallback policy no longer blocks reads from the job queue by worker threads
19
+ * (#938, #761, #652) You can now explicitly `prune_pool` a thread pool (Sylvain Joyeux)
20
+ * (#937, #757, #670) We switched the Yahoo stock API for demos to Alpha Vantage (Gustavo Caso)
21
+ * (#932, #931) We changed how `SafeTaskExecutor` handles local jump errors (Aaron Jensen)
22
+ * (#927) You can use keyword arguments in your initialize when using `Async` (Matt Larraz)
23
+ * (#926, #639) We removed timeout from `TimerTask` because it wasn't sound, and now it's a no-op with a warning (Jacob Atzen)
24
+ * (#919) If you double-lock a re-entrant read-write lock, we promote to locked for writing (zp yuan)
25
+ * (#915) `monotonic_time` now accepts an optional unit parameter, as Ruby's `clock_gettime` (Jean Boussier)
26
+
27
+ ## Release v1.1.9 (5 Jun 2021)
28
+
29
+ concurrent-ruby:
30
+
31
+ * (#866) Child promise state not set to :pending immediately after #execute when parent has completed
32
+ * (#905, #872) Fix RubyNonConcurrentPriorityQueue#delete method
33
+ * (2df0337d) Make sure locks are not shared on shared when objects are dup/cloned
34
+ * (#900, #906, #796, #847, #911) Fix Concurrent::Set tread-safety issues on CRuby
35
+ * (#907) Add new ConcurrentMap backend for TruffleRuby
36
+
37
+ ## Release v1.1.8 (20 January 2021)
38
+
39
+ concurrent-ruby:
40
+
41
+ * (#885) Fix race condition in TVar for stale reads
42
+ * (#884) RubyThreadLocalVar: Do not iterate over hash which might conflict with new pair addition
43
+
44
+ ## Release v1.1.7 (6 August 2020)
45
+
46
+ concurrent-ruby:
47
+
48
+ * (#879) Consider falsy value on `Concurrent::Map#compute_if_absent` for fast non-blocking path
49
+ * (#876) Reset Async queue on forking, makes Async fork-safe
50
+ * (#856) Avoid running problematic code in RubyThreadLocalVar on MRI that occasionally results in segfault
51
+ * (#853) Introduce ThreadPoolExecutor without a Queue
52
+
3
53
  ## Release v1.1.6, edge v0.6.0 (10 Feb 2020)
4
54
 
5
55
  concurrent-ruby:
@@ -1,23 +1,21 @@
1
- ```
2
1
  Copyright (c) Jerry D'Antonio -- released under the MIT license.
3
2
 
4
- http://www.opensource.org/licenses/mit-license.php
3
+ http://www.opensource.org/licenses/mit-license.php
5
4
 
6
- Permission is hereby granted, free of charge, to any person obtaining a copy
7
- of this software and associated documentation files (the "Software"), to deal
8
- in the Software without restriction, including without limitation the rights
9
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- copies of the Software, and to permit persons to whom the Software is
11
- furnished to do so, subject to the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be included in
14
- all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- THE SOFTWARE.
23
- ```
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # Concurrent Ruby
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/concurrent-ruby.svg)](http://badge.fury.io/rb/concurrent-ruby)
4
- [![Build Status](https://travis-ci.org/ruby-concurrency/concurrent-ruby.svg?branch=master)](https://travis-ci.org/ruby-concurrency/concurrent-ruby)
5
- [![Build status](https://ci.appveyor.com/api/projects/status/iq8aboyuu3etad4w?svg=true)](https://ci.appveyor.com/project/rubyconcurrency/concurrent-ruby)
6
4
  [![License](https://img.shields.io/badge/license-MIT-green.svg)](http://opensource.org/licenses/MIT)
7
5
  [![Gitter chat](https://img.shields.io/badge/IRC%20(gitter)-devs%20%26%20users-brightgreen.svg)](https://gitter.im/ruby-concurrency/concurrent-ruby)
8
6
 
@@ -39,11 +37,13 @@ The design goals of this gem are:
39
37
  appreciate your help. Would you like to contribute? Great! Have a look at
40
38
  [issues with `looking-for-contributor` label](https://github.com/ruby-concurrency/concurrent-ruby/issues?q=is%3Aissue+is%3Aopen+label%3Alooking-for-contributor).** And if you pick something up let us know on the issue.
41
39
 
40
+ You can also get started by triaging issues which may include reproducing bug reports or asking for vital information, such as version numbers or reproduction instructions. If you would like to start triaging issues, one easy way to get started is to [subscribe to concurrent-ruby on CodeTriage](https://www.codetriage.com/ruby-concurrency/concurrent-ruby). [![Open Source Helpers](https://www.codetriage.com/ruby-concurrency/concurrent-ruby/badges/users.svg)](https://www.codetriage.com/ruby-concurrency/concurrent-ruby)
41
+
42
42
  ## Thread Safety
43
43
 
44
44
  *Concurrent Ruby makes one of the strongest thread safety guarantees of any Ruby concurrency
45
- library, providing consistent behavior and guarantees on all four of the main Ruby interpreters
46
- (MRI/CRuby, JRuby, Rubinius, TruffleRuby).*
45
+ library, providing consistent behavior and guarantees on all three main Ruby interpreters
46
+ (MRI/CRuby, JRuby, TruffleRuby).*
47
47
 
48
48
  Every abstraction in this library is thread safe. Specific thread safety guarantees are documented
49
49
  with each abstraction.
@@ -58,9 +58,9 @@ other Ruby library, many of which support the mantra of
58
58
  Concurrent Ruby is also the only Ruby library which provides a full suite of thread safe and
59
59
  immutable variable types and data structures.
60
60
 
61
- We've also initiated discussion to document [memory model](docs-source/synchronization.md) of Ruby which
62
- would provide consistent behaviour and guarantees on all four of the main Ruby interpreters
63
- (MRI/CRuby, JRuby, Rubinius, TruffleRuby).
61
+ We've also initiated discussion to document the [memory model](docs-source/synchronization.md) of Ruby which
62
+ would provide consistent behaviour and guarantees on all three main Ruby interpreters
63
+ (MRI/CRuby, JRuby, TruffleRuby).
64
64
 
65
65
  ## Features & Documentation
66
66
 
@@ -105,9 +105,9 @@ We also have a [IRC (gitter)](https://gitter.im/ruby-concurrency/concurrent-ruby
105
105
  Collection classes that were originally part of the (deprecated) `thread_safe` gem:
106
106
 
107
107
  * [Array](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Array.html) A thread-safe
108
- subclass of Ruby's standard [Array](http://ruby-doc.org/core-2.2.0/Array.html).
108
+ subclass of Ruby's standard [Array](http://ruby-doc.org/core/Array.html).
109
109
  * [Hash](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Hash.html) A thread-safe
110
- subclass of Ruby's standard [Hash](http://ruby-doc.org/core-2.2.0/Hash.html).
110
+ subclass of Ruby's standard [Hash](http://ruby-doc.org/core/Hash.html).
111
111
  * [Set](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Set.html) A thread-safe
112
112
  subclass of Ruby's standard [Set](http://ruby-doc.org/stdlib-2.4.0/libdoc/set/rdoc/Set.html).
113
113
  * [Map](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/Map.html) A hash-like object
@@ -122,7 +122,7 @@ Value objects inspired by other languages:
122
122
  immutable object representing an optional value, based on
123
123
  [Haskell Data.Maybe](https://hackage.haskell.org/package/base-4.2.0.1/docs/Data-Maybe.html).
124
124
 
125
- Structure classes derived from Ruby's [Struct](http://ruby-doc.org/core-2.2.0/Struct.html):
125
+ Structure classes derived from Ruby's [Struct](http://ruby-doc.org/core/Struct.html):
126
126
 
127
127
  * [ImmutableStruct](http://ruby-concurrency.github.io/concurrent-ruby/master/Concurrent/ImmutableStruct.html)
128
128
  Immutable struct where values are set at construction and cannot be changed later.
@@ -259,16 +259,9 @@ be obeyed though. Features developed in `concurrent-ruby-edge` are expected to m
259
259
 
260
260
  ## Supported Ruby versions
261
261
 
262
- * MRI 2.0 and above
263
- * JRuby 9000
264
- * TruffleRuby are supported.
265
- * Any Ruby interpreter that is compliant with Ruby 2.0 or newer.
266
-
267
- Actually we still support mri 1.9.3 and jruby 1.7.27 but we are looking at ways how to drop the support.
268
- Java 8 is preferred for JRuby but every Java version on which JRuby 9000 runs is supported.
269
-
270
- The legacy support for Rubinius is kept but it is no longer maintained, if you would like to help
271
- please respond to [#739](https://github.com/ruby-concurrency/concurrent-ruby/issues/739).
262
+ * MRI 2.3 and above
263
+ * Latest JRuby 9000
264
+ * Latest TruffleRuby
272
265
 
273
266
  ## Usage
274
267
 
@@ -278,7 +271,12 @@ Everything within this gem can be loaded simply by requiring it:
278
271
  require 'concurrent'
279
272
  ```
280
273
 
281
- *Requiring only specific abstractions from Concurrent Ruby is not yet supported.*
274
+ You can also require a specific abstraction [part of the public documentation](https://ruby-concurrency.github.io/concurrent-ruby/master/index.html) since concurrent-ruby 1.2.0, for example:
275
+ ```ruby
276
+ require 'concurrent/map'
277
+ require 'concurrent/atomic/atomic_reference'
278
+ require 'concurrent/executor/fixed_thread_pool'
279
+ ```
282
280
 
283
281
  To use the tools in the Edge gem it must be required separately:
284
282
 
@@ -353,23 +351,46 @@ and load the appropriate C extensions.
353
351
  No gems should depend on `concurrent-ruby-ext`. Doing so will force C extensions on your users. The
354
352
  best practice is to depend on `concurrent-ruby` and let users to decide if they want C extensions.
355
353
 
354
+ ## Building the gem
355
+
356
+ ### Requirements
357
+
358
+ * Recent CRuby
359
+ * JRuby, `rbenv install jruby-9.2.17.0`
360
+ * Set env variable `CONCURRENT_JRUBY_HOME` to point to it, e.g. `/usr/local/opt/rbenv/versions/jruby-9.2.17.0`
361
+ * Install Docker, required for Windows builds
362
+
363
+ ### Publishing the Gem
364
+
365
+ * Update `version.rb`
366
+ * Update the CHANGELOG
367
+ * Add the new version to `docs-source/signpost.md`. Needs to be done only if there are visible changes in the documentation.
368
+ * Commit (and push) the changes.
369
+ * Use `bundle exec rake release` to release the gem.
370
+ It consists of `['release:checks', 'release:build', 'release:test', 'release:publish']` steps.
371
+ It will ask at the end before publishing anything. Steps can also be executed individually.
372
+
356
373
  ## Maintainers
357
374
 
358
- * [Petr Chalupa](https://github.com/pitr-ch) (lead maintainer, point-of-contact)
359
- * [Jerry D'Antonio](https://github.com/jdantonio) (creator)
360
- * [Chris Seaton](https://github.com/chrisseaton)
375
+ * [Benoit Daloze](https://github.com/eregon)
376
+ * [Matthew Draper](https://github.com/matthewd)
377
+ * [Rafael França](https://github.com/rafaelfranca)
378
+ * [Samuel Williams](https://github.com/ioquatix)
361
379
 
362
380
  ### Special Thanks to
363
381
 
364
- * [Brian Durand](https://github.com/bdurand) for the `ref` gem
365
- * [Charles Oliver Nutter](https://github.com/headius) for the `atomic` and `thread_safe` gems
366
- * [thedarkone](https://github.com/thedarkone) for the `thread_safe` gem
382
+ * [Jerry D'Antonio](https://github.com/jdantonio) for creating the gem
383
+ * [Brian Durand](https://github.com/bdurand) for the `ref` gem
384
+ * [Charles Oliver Nutter](https://github.com/headius) for the `atomic` and `thread_safe` gems
385
+ * [thedarkone](https://github.com/thedarkone) for the `thread_safe` gem
367
386
 
368
- and to the past maintainers
387
+ to the past maintainers
369
388
 
370
- * [Michele Della Torre](https://github.com/mighe)
371
- * [Paweł Obrok](https://github.com/obrok)
372
- * [Lucas Allan](https://github.com/lucasallan)
389
+ * [Chris Seaton](https://github.com/chrisseaton)
390
+ * [Petr Chalupa](https://github.com/pitr-ch)
391
+ * [Michele Della Torre](https://github.com/mighe)
392
+ * [Paweł Obrok](https://github.com/obrok)
393
+ * [Lucas Allan](https://github.com/lucasallan)
373
394
 
374
395
  and to [Ruby Association](https://www.ruby.or.jp/en/) for sponsoring a project
375
396
  ["Enhancing Ruby’s concurrency tooling"](https://www.ruby.or.jp/en/news/20181106) in 2018.
@@ -1,4 +1,6 @@
1
1
  require 'concurrent/concern/logging'
2
+ require 'concurrent/actor/type_check'
3
+ require 'concurrent/actor/internal_delegations'
2
4
 
3
5
  module Concurrent
4
6
  module Actor
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/behaviour/abstract'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Behaviour
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/behaviour/abstract'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Behaviour
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/behaviour/abstract'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Behaviour
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/behaviour/abstract'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Behaviour
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/behaviour/abstract'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Behaviour
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/behaviour/abstract'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Behaviour
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/behaviour/abstract'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Behaviour
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/behaviour/abstract'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Behaviour
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/behaviour/abstract'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Behaviour
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/behaviour/abstract'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Behaviour
@@ -1,4 +1,6 @@
1
1
  require 'concurrent/concern/logging'
2
+ require 'concurrent/actor/type_check'
3
+ require 'concurrent/actor/internal_delegations'
2
4
 
3
5
  module Concurrent
4
6
  module Actor
@@ -1,11 +1,11 @@
1
+ require 'set'
2
+ require 'concurrent/actor/type_check'
1
3
  require 'concurrent/concern/logging'
2
4
  require 'concurrent/executors'
5
+ require 'concurrent/synchronization/lockable_object'
3
6
 
4
7
  module Concurrent
5
8
  module Actor
6
-
7
- require 'set'
8
-
9
9
  # Core of the actor.
10
10
  # @note Whole class should be considered private. An user should use {Context}s and {Reference}s only.
11
11
  # @note devel: core should not block on anything, e.g. it cannot wait on children to terminate
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/context'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  class DefaultDeadLetterHandler < RestartingContext
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/type_check'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  class Envelope
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/type_check'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  Error = Class.new(StandardError)
@@ -1,3 +1,6 @@
1
+ require 'logger'
2
+ require 'concurrent/actor/public_delegations'
3
+
1
4
  module Concurrent
2
5
  module Actor
3
6
  module InternalDelegations
@@ -1,3 +1,6 @@
1
+ require 'concurrent/actor/type_check'
2
+ require 'concurrent/actor/public_delegations'
3
+
1
4
  module Concurrent
2
5
  module Actor
3
6
 
@@ -1,3 +1,6 @@
1
+ require 'concurrent/actor/context'
2
+ require 'concurrent/actor/core'
3
+
1
4
  module Concurrent
2
5
  module Actor
3
6
  # implements the root actor
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/context'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Utils
@@ -1,3 +1,5 @@
1
+ require 'concurrent/actor/context'
2
+
1
3
  module Concurrent
2
4
  module Actor
3
5
  module Utils
@@ -1,4 +1,5 @@
1
1
  require 'set'
2
+ require 'concurrent/actor/context'
2
3
 
3
4
  module Concurrent
4
5
  module Actor
@@ -1,4 +1,5 @@
1
1
  require 'concurrent/actor/utils/balancer'
2
+ require 'concurrent/actor/context'
2
3
 
3
4
  module Concurrent
4
5
  module Actor
@@ -1,6 +1,7 @@
1
+ # NOTE: finer grained than require 'concurrent/actor' not supported
2
+
1
3
  require 'concurrent/configuration'
2
4
  require 'concurrent/executor/serialized_execution'
3
- require 'concurrent/synchronization'
4
5
  require 'concurrent/edge/promises'
5
6
 
6
7
  module Concurrent
@@ -1,4 +1,5 @@
1
1
  require 'concurrent/channel/buffer/base'
2
+ require 'concurrent/channel/buffer/buffered'
2
3
 
3
4
  module Concurrent
4
5
  class Channel
@@ -1,4 +1,5 @@
1
1
  require 'concurrent/channel/buffer/base'
2
+ require 'concurrent/channel/buffer/buffered'
2
3
 
3
4
  module Concurrent
4
5
  class Channel
@@ -1,4 +1,4 @@
1
- require 'concurrent/synchronization'
1
+ require 'concurrent/synchronization/object'
2
2
  require 'concurrent/utility/monotonic_time'
3
3
 
4
4
  module Concurrent
@@ -1,4 +1,6 @@
1
1
  require 'concurrent/concern/deprecation'
2
+ require 'concurrent/synchronization/object'
3
+ require 'concurrent/promises'
2
4
 
3
5
  module Concurrent
4
6
 
@@ -1,3 +1,6 @@
1
+ require 'concurrent/synchronization/object'
2
+ require 'concurrent/edge/promises'
3
+
1
4
  # @!macro warn.edge
2
5
  module Concurrent
3
6
  module Promises
@@ -1,6 +1,10 @@
1
- if Concurrent.ruby_version :<, 2, 1, 0
2
- raise 'ErlangActor requires at least ruby version 2.1'
3
- end
1
+ require 'set'
2
+ require 'concurrent/atomic/count_down_latch'
3
+ require 'concurrent/concern/logging'
4
+ require 'concurrent/edge/channel'
5
+ require 'concurrent/errors'
6
+ require 'concurrent/promises'
7
+ require 'concurrent/synchronization/object'
4
8
 
5
9
  module Concurrent
6
10
 
@@ -1,3 +1,5 @@
1
+ require 'concurrent/synchronization/object'
2
+
1
3
  module Concurrent
2
4
 
3
5
  # @!visibility private
@@ -1,3 +1,5 @@
1
+ require 'concurrent/promises'
2
+
1
3
  module Concurrent
2
4
  module Promises
3
5
  module FactoryMethods
@@ -1,3 +1,7 @@
1
+ require 'concurrent/synchronization/object'
2
+ require 'concurrent/promises'
3
+ require 'concurrent/edge/channel'
4
+
1
5
  module Concurrent
2
6
 
3
7
  # A new implementation of actor which also simulates the process, therefore it can be used
@@ -1,3 +1,7 @@
1
+ require 'concurrent/edge/lock_free_queue'
2
+ require 'concurrent/promises'
3
+ require 'concurrent/synchronization/object'
4
+
1
5
  module Concurrent
2
6
  # A tool managing concurrency level of tasks.
3
7
  # The maximum capacity is set in constructor.
@@ -1,3 +1,3 @@
1
1
  module Concurrent
2
- EDGE_VERSION = '0.6.0'
2
+ EDGE_VERSION = '0.7.0'
3
3
  end
@@ -1,3 +1,6 @@
1
+ require 'concurrent/synchronization/object'
2
+ require 'concurrent/executor/executor_service'
3
+
1
4
  module Concurrent
2
5
 
3
6
  # A delegating executor which modifies each task with arguments
@@ -6,7 +6,7 @@ require 'concurrent/actor'
6
6
  require 'concurrent/agent'
7
7
  require 'concurrent/channel'
8
8
  require 'concurrent/lazy_register'
9
- require 'concurrent/executor/wrapping_executor' if Concurrent.ruby_version :>=, 2, 1, 0
9
+ require 'concurrent/executor/wrapping_executor'
10
10
 
11
11
  require 'concurrent/edge/lock_free_linked_set'
12
12
  require 'concurrent/edge/lock_free_queue'
@@ -16,4 +16,4 @@ require 'concurrent/edge/throttle'
16
16
  require 'concurrent/edge/channel'
17
17
 
18
18
  require 'concurrent/edge/processing_actor'
19
- require 'concurrent/edge/erlang_actor' if Concurrent.ruby_version :>=, 2, 1, 0
19
+ require 'concurrent/edge/erlang_actor'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concurrent-ruby-edge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jerry D'Antonio
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-02-10 00:00:00.000000000 Z
13
+ date: 2023-01-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: concurrent-ruby
@@ -18,14 +18,14 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: 1.1.6
21
+ version: 1.2.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
- version: 1.1.6
28
+ version: 1.2.0
29
29
  description: |
30
30
  These features are under active development and may change frequently. They are expected not to
31
31
  keep backward compatibility (there may also lack tests and documentation). Semantic versions will
@@ -36,11 +36,11 @@ executables: []
36
36
  extensions: []
37
37
  extra_rdoc_files:
38
38
  - README.md
39
- - LICENSE.md
39
+ - LICENSE.txt
40
40
  - CHANGELOG.md
41
41
  files:
42
42
  - CHANGELOG.md
43
- - LICENSE.md
43
+ - LICENSE.txt
44
44
  - README.md
45
45
  - lib/concurrent-ruby-edge/concurrent-edge.rb
46
46
  - lib/concurrent-ruby-edge/concurrent/actor.rb
@@ -114,15 +114,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 1.9.3
117
+ version: '2.3'
118
118
  required_rubygems_version: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  requirements: []
124
- rubyforge_project:
125
- rubygems_version: 2.7.9
124
+ rubygems_version: 3.3.26
126
125
  signing_key:
127
126
  specification_version: 4
128
127
  summary: Edge features and additions to the concurrent-ruby gem.