|
20 | 20 | * Added `at_exit` handler to Ruby thread pools (already in Java thread pools)
|
21 | 21 | - Ruby handler stores the object id and retrieves from `ObjectSpace`
|
22 | 22 | - JRuby disables `ObjectSpace` by default so that handler stores the object reference
|
23 |
| -* Added a `:stop_on_exit` option to thread pools to enable/disable `at_exit` handler |
| 23 | +* Added a `:stop_on_exit` option to thread pools to enable/disable `at_exit` handler |
24 | 24 | * Updated thread pool docs to better explain shutting down thread pools
|
25 | 25 | * Simpler `:executor` option syntax for all abstractions which support this option
|
26 | 26 | * Added `Executor#auto_terminate?` predicate method (for thread pools)
|
|
58 | 58 | - `Channel`
|
59 | 59 | - `Exchanger`
|
60 | 60 | - `LazyRegister`
|
| 61 | + - **new Future Framework** <http://ruby-concurrency.github.io/concurrent-ruby/Concurrent/Edge.html> - unified |
| 62 | + implementation of Futures and Promises which combines Features of previous `Future`, |
| 63 | + `Promise`, `IVar`, `Event`, `Probe`, `dataflow`, `Delay`, `TimerTask` into single framework. It uses extensively |
| 64 | + new synchronization layer to make all the paths **lock-free** with exception of blocking threads on `#wait`. |
| 65 | + It offers better performance and does not block threads when not required. |
| 66 | +* Actor framework changes: |
| 67 | + - fixed reset loop in Pool |
| 68 | + - Pool can use any actor as a worker, abstract worker class is no longer needed. |
| 69 | + - Actor events not have format `[:event_name, *payload]` instead of just the Symbol. |
| 70 | + - Actor now uses new Future/Promise Framework instead of `IVar` for better interoperability |
| 71 | + - Behaviour definition array was simplified to `[BehaviourClass1, [BehaviourClass2, *initialization_args]]` |
| 72 | + - Linking behavior responds to :linked message by returning array of linked actors |
| 73 | + - Supervised behavior is removed in favour of just Linking |
| 74 | + - RestartingContext is supervised by default now, `supervise: true` is not required any more |
| 75 | + - Events can be private and public, so far only difference is that Linking will |
| 76 | + pass to linked actors only public messages. Adding private :restarting and |
| 77 | + :resetting events which are send before the actor restarts or resets allowing |
| 78 | + to add callbacks to cleanup current child actors. |
| 79 | + - Print also object_id in Reference to_s |
| 80 | + - Add AbstractContext#default_executor to be able to override executor class wide |
| 81 | + - Add basic IO example |
| 82 | + - Documentation somewhat improved |
| 83 | + - All messages should have same priority. It's now possible to send `actor << job1 << job2 << :terminate!` and |
| 84 | + be sure that both jobs are processed first. |
61 | 85 | * Refactored `Channel` to use newer synchronization objects
|
62 | 86 | * Added `#reset` and `#cancel` methods to `TimerSet`
|
63 | 87 | * Added `#cancel` method to `Future` and `ScheduledTask`
|
|
0 commit comments