Releases: ruby-concurrency/concurrent-ruby
0.7.0
- Merge the atomic gem
- Pure Ruby MutexAtomicatomic reference class
- Platform native atomic reference classes CAtomic,JavaAtomic, andRbxAtomic
- Automated build process
- Fat binary releases for multiple platforms including Windows (32/64), Linux (32/64), OS X (64-bit), Solaris (64-bit), and JRuby
 
- Pure Ruby 
- 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. RestartingContextwill 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_oneand: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 Actorclass removed and replaced by new implementation previously calledActress.Actresswas kept as an alias forActorto keep compatibility.
- Utils::Broadcastactor which allows Publish–subscribe pattern.
 
- Fine-grained implementation using chain of behaviors. Each behavior is responsible for single aspect like: 
- More executors for managing serialized operations
- SerializedExecutionmixin module
- SerializedExecutionDelegatorfor serializing any executor
 
- Updated Asyncwith serialized execution
- Updated ImmediateExecutorandPerThreadExecutorwith full executor service lifecycle
- Added a Delayto rootActressinitialization
- Minor bug fixes to thread pools
- Refactored many intermittently failing specs
- Removed Java interop warning executor.rb:148 warning: ambiguous Java methods found, using submit(java.lang.Runnable)
- Fixed minor bug in RubyCachedThreadPooloverflow policy
- Updated tests to use RSpec 3.0
- Removed deprecated Actorclass
- Better support for Rubinius
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. RestartingContextwill 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_oneand: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 Actorclass removed and replaced by new implementation previously calledActress.Actresswas kept as an alias forActorto keep compatibility.
- Utils::Broadcastactor 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, andEventhave 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 Channelsystem, new atomic classes,TimerSet, and theAsyncmixin module.
- Many internal stability, thread-safety, and performance improvements.
- Many improvements to the test suite to remove fragile tests.
- The old Actorclass has been deprecated in lieu of the vastly more robust (but still experimental)Actressmodule (Actresswill be renamedActorin 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.