Releases: ruby-concurrency/concurrent-ruby
0.7.0 Release Candidate 3
Fix bug #150
We recently discovered that Rubinius installs the gem version with pre-compiled extensions. The internal guard logic assumed that the C-native build would only be installed under MRI. As a result we were experiencing unintended behavior on Rubinius. This PR addresses this issue by adding more robust guard clauses, attempting to ensure that C extensions are only loaded on MRI, regardless of what platform a particular interpreter reports.
Because the release of 0.7.0 was put on hold, the guard clauses are very brute-force. They can probably be cleaned up in a later release.
NOTE: It has been suggested that we consider using a gem called Redcarpet for the guard functionality. This gem was unknown to us until yesterday. At this time we have explicitly decided to not include an external gem dependencies. We will consider using Redcarpet in a future release.
0.7.0 Release Candidate 2
Major actor updates plus several bug fixes and minor refactoring. Please see the changelog for details.
- C native
CAtomicBoolean
- C native
CAtomicFixnum
- Refactored intermittently failing tests
- Added
dataflow!
anddataflow_with!
methods to matchFuture#value!
method - Better handling of timeout in
Agent
- Actor Improvements
- 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. - 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
. - Linking was added to be able to monitor actor's events like:
:terminated
,:paused
,:restarted
, etc. - Dead letter routing added. Rejected envelopes are collected in a configurable actor (default:
Concurrent::Actor.root.ask!(:dead_letter_routing)
) - Old
Actor
class removed and replaced by new implementation previously calledActress
.Actress
was kept as an alias forActor
to keep compatibility. Utils::Broadcast
actor which allows Publish–subscribe pattern.
- Fine-grained implementation using chain of behaviors. Each behavior is responsible for single aspect like:
0.7.0 Release Candidate 1
Bug fixes and minor refactoring. Please see the changelog for details.
0.7.0 Release Candidate 0 (Experimental)
This is an experimental release of C and Java native extensions. It merges the ruby-atomic gem into the 0.6.1. It was built using an automated build process that creates pre-compiled binary releases for most major operating systems. We believe this release to be highly stable and highly portable. The C/Java native code we imported was highly battle-tested. Since this is our first release with native extensions we urge cautious experimentation.
0.6.1
- Many improvements to
Concurrent::Actress
- Bug fixes to
Concurrent::RubyThreadPoolExecutor
- Fixed several brittle tests
- Moved documentation to http://ruby-concurrency.github.io/concurrent-ruby/frames.html
0.6.0
This release includes several major optimizations and refactorings, a few new classes, vastly improved tests. Some highlights:
- Gem configuration is now handled through a common configuration class rather than the old global variables.
- Several classes, including
Agent
,TimerTask
,ScheduledTask
, andEvent
have significantly improved performance and stability. - The old thread pools have been completely rewritten, based heavily on Java's executors. Several new executors have been added, and many executors include JRuby optimizations.
- Several new abstractions have been added, including a high-performance
Channel
system, new atomic classes,TimerSet
, and theAsync
mixin module. - Many internal stability, thread-safety, and performance improvements.
- Many improvements to the test suite to remove fragile tests.
- The old
Actor
class has been deprecated in lieu of the vastly more robust (but still experimental)Actress
module (Actress
will be renamedActor
in the 0.7.0 release)
Please see the changelog for more information.
0.6.0 Pre-release 2
This release includes several major optimizations and refactorings, a few new classes, vastly improved tests, and continued evolution of the new Channel
and ActorContext
classes.
Please see the changelog for more information.
0.6.0 Pre-release 1
This pre-release includes several deprecations, new features, and JRuby optimizations. The most important changes are to thread pools. Thread pools have been completely rewritten. The behavior of FixedThreadPool
and CachedThreadPool
have not changed, but they now both extend a common base class called ThreadPoolExecutor
. On JRuby this base class is a thin wrapper around java.util.concurrent.ThreadPoolExecutor
. Subsequently the global thread pool has been updated from an instance of PerThreadExecutor
(formerly NullThreadPool
) to an instance of CachedThreadPool
. This should increase the performance of all tasks using the global thread pool (such as Future
, Agent
, Promise
, and others), especially on JRuby.
Please see the release notes for more information.