Skip to content

Commit 97e5e3c

Browse files
committed
Moved changelog from wiki to MD file in the repo.
1 parent 281207a commit 97e5e3c

File tree

1 file changed

+135
-0
lines changed

1 file changed

+135
-0
lines changed

CHANGELOG.md

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
### Upcoming Release v0.7.1 (TBD)
2+
3+
Please see the [roadmap](https://github.com/ruby-concurrency/concurrent-ruby/issues/142) for more information on the next planned release.
4+
5+
* Added `flat_map` method to `Promise`
6+
* Added `zip` method to `Promise`
7+
* Fixed bug with logging in `Actor`
8+
* Improvements to `Promise` tests
9+
* Removed actor-experimental warning
10+
* Added an `IndirectImmediateExecutor` class
11+
* Allow disabling auto termination of global executors
12+
* Fix thread leaking in `ThreadLocalVar` (uses `Ref` gem on non-JRuby systems)
13+
* Fix thread leaking when pruning pure-Ruby thread pools
14+
* Prevent `Actor` from using an `ImmediateExecutor` (causes deadlock)
15+
* Added missing synchronizations to `TimerSet`
16+
* Removed confusing warning when not using native extenstions
17+
* Improved documentation
18+
19+
## Current Release v0.7.0 (13 August 2014)
20+
21+
* Merge the [atomic](https://github.com/ruby-concurrency/atomic) gem
22+
- Pure Ruby `MutexAtomic` atomic reference class
23+
- Platform native atomic reference classes `CAtomic`, `JavaAtomic`, and `RbxAtomic`
24+
- Automated [build process](https://github.com/ruby-concurrency/rake-compiler-dev-box)
25+
- Fat binary releases for [multiple platforms](https://rubygems.org/gems/concurrent-ruby/versions) including Windows (32/64), Linux (32/64), OS X (64-bit), Solaris (64-bit), and JRuby
26+
* C native `CAtomicBoolean`
27+
* C native `CAtomicFixnum`
28+
* Refactored intermittently failing tests
29+
* Added `dataflow!` and `dataflow_with!` methods to match `Future#value!` method
30+
* Better handling of timeout in `Agent`
31+
* Actor Improvements
32+
- Fine-grained implementation using chain of behaviors. Each behavior is responsible for single aspect like: `Termination`, `Pausing`, `Linking`, `Supervising`, etc. Users can create custom Actors easily based on their needs.
33+
- Supervision was added. `RestartingContext` will pause on error waiting on its supervisor to decide what to do next ( options are `:terminate!`, `:resume!`, `:reset!`, `:restart!`). Supervising behavior also supports strategies `:one_for_one` and `:one_for_all`.
34+
- Linking was added to be able to monitor actor's events like: `:terminated`, `:paused`, `:restarted`, etc.
35+
- Dead letter routing added. Rejected envelopes are collected in a configurable actor (default: `Concurrent::Actor.root.ask!(:dead_letter_routing)`)
36+
- Old `Actor` class removed and replaced by new implementation previously called `Actress`. `Actress` was kept as an alias for `Actor` to keep compatibility.
37+
- `Utils::Broadcast` actor which allows Publish–subscribe pattern.
38+
* More executors for managing serialized operations
39+
- `SerializedExecution` mixin module
40+
- `SerializedExecutionDelegator` for serializing *any* executor
41+
* Updated `Async` with serialized execution
42+
* Updated `ImmediateExecutor` and `PerThreadExecutor` with full executor service lifecycle
43+
* Added a `Delay` to root `Actress` initialization
44+
* Minor bug fixes to thread pools
45+
* Refactored many intermittently failing specs
46+
* Removed Java interop warning `executor.rb:148 warning: ambiguous Java methods found, using submit(java.lang.Runnable)`
47+
* Fixed minor bug in `RubyCachedThreadPool` overflow policy
48+
* Updated tests to use [RSpec 3.0](http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3)
49+
* Removed deprecated `Actor` class
50+
* Better support for Rubinius
51+
52+
### Release v0.6.1 (14 June 2014)
53+
54+
* Many improvements to `Concurrent::Actress`
55+
* Bug fixes to `Concurrent::RubyThreadPoolExecutor`
56+
* Fixed several brittle tests
57+
* Moved documentation to http://ruby-concurrency.github.io/concurrent-ruby/frames.html
58+
59+
### Release v0.6.0 (25 May 2014)
60+
61+
* Added `Concurrent::Observable` to encapsulate our thread safe observer sets
62+
* Improvements to new `Channel`
63+
* Major improvements to `CachedThreadPool` and `FixedThreadPool`
64+
* Added `SingleThreadExecutor`
65+
* Added `Current::timer` function
66+
* Added `TimerSet` executor
67+
* Added `AtomicBoolean`
68+
* `ScheduledTask` refactoring
69+
* Pure Ruby and JRuby-optimized `PriorityQueue` classes
70+
* Updated `Agent` behavior to more closely match Clojure
71+
* Observer sets support block callbacks to the `add_observer` method
72+
* New algorithm for thread creation in `RubyThreadPoolExecutor`
73+
* Minor API updates to `Event`
74+
* Rewritten `TimerTask` now an `Executor` instead of a `Runnable`
75+
* Fixed many brittle specs
76+
* Renamed `FixedThreadPool` and `CachedThreadPool` to `RubyFixedThreadPool` and `RubyCachedThreadPool`
77+
* Created JRuby optimized `JavaFixedThreadPool` and `JavaCachedThreadPool`
78+
* Consolidated fixed thread pool tests into `spec/concurrent/fixed_thread_pool_shared.rb` and `spec/concurrent/cached_thread_pool_shared.rb`
79+
* `FixedThreadPool` now subclasses `RubyFixedThreadPool` or `JavaFixedThreadPool` as appropriate
80+
* `CachedThreadPool` now subclasses `RubyCachedThreadPool` or `JavaCachedThreadPool` as appropriate
81+
* New `Delay` class
82+
* `Concurrent::processor_count` helper function
83+
* New `Async` module
84+
* Renamed `NullThreadPool` to `PerThreadExecutor`
85+
* Deprecated `Channel` (we are planning a new implementation based on [Go](http://golangtutorials.blogspot.com/2011/06/channels-in-go.html))
86+
* Added gem-level [configuration](http://robots.thoughtbot.com/mygem-configure-block)
87+
* Deprecated `$GLOBAL_THREAD_POOL` in lieu of gem-level configuration
88+
* Removed support for Ruby [1.9.2](https://www.ruby-lang.org/en/news/2013/12/17/maintenance-of-1-8-7-and-1-9-2/)
89+
* New `RubyThreadPoolExecutor` and `JavaThreadPoolExecutor` classes
90+
* All thread pools now extend the appropriate thread pool executor classes
91+
* All thread pools now support `:overflow_policy` (based on Java's [reject policies](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ThreadPoolExecutor.html))
92+
* Deprecated `UsesGlobalThreadPool` in lieu of explicit `:executor` option (dependency injection) on `Future`, `Promise`, and `Agent`
93+
* Added `Concurrent::dataflow_with(executor, *inputs)` method to support executor dependency injection for dataflow
94+
* Software transactional memory with `TVar` and `Concurrent::atomically`
95+
* First implementation of [new, high-performance](https://github.com/ruby-concurrency/concurrent-ruby/pull/49) `Channel`
96+
* `Actor` is deprecated in favor of new experimental actor implementation [#73](https://github.com/ruby-concurrency/concurrent-ruby/pull/73). To avoid namespace collision it is living in `Actress` namespace until `Actor` is removed in next release.
97+
98+
### Release v0.5.0
99+
100+
This is the most significant release of this gem since its inception. This release includes many improvements and optimizations. It also includes several bug fixes. The major areas of focus for this release were:
101+
102+
* Stability improvements on Ruby versions with thread-level parallelism ([JRuby](http://jruby.org/) and [Rubinius](http://rubini.us/))
103+
* Creation of new low-level concurrency abstractions
104+
* Internal refactoring to use the new low-level abstractions
105+
106+
Most of these updates had no effect on the gem API. There are a few notable exceptions which were unavoidable. Please read the [release notes](API-Updates-in-v0.5.0) for more information.
107+
108+
Specific changes include:
109+
110+
* New class `IVar`
111+
* New class `MVar`
112+
* New class `ThreadLocalVar`
113+
* New class `AtomicFixnum`
114+
* New class method `dataflow`
115+
* New class `Condition`
116+
* New class `CountDownLatch`
117+
* New class `DependencyCounter`
118+
* New class `SafeTaskExecutor`
119+
* New class `CopyOnNotifyObserverSet`
120+
* New class `CopyOnWriteObserverSet`
121+
* `Future` updated with `execute` API
122+
* `ScheduledTask` updated with `execute` API
123+
* New `Promise` API
124+
* `Future` now extends `IVar`
125+
* `Postable#post?` now returns an `IVar`
126+
* Thread safety fixes to `Dereferenceable`
127+
* Thread safety fixes to `Obligation`
128+
* Thread safety fixes to `Supervisor`
129+
* Thread safety fixes to `Event`
130+
* Various other thread safety (race condition) fixes
131+
* Refactored brittle tests
132+
* Implemented pending tests
133+
* Added JRuby and Rubinius as Travis CI build targets
134+
* Added [CodeClimate](https://codeclimate.com/) code review
135+
* Improved YARD documentation

0 commit comments

Comments
 (0)