Releases: ruby-concurrency/concurrent-ruby
v0.9.0.pre3
Finalizing API and Yardoc. We plan mostly bug/test fixes between now and the full release of 0.9.0.
v0.9.0.pre2
Finalizing API and Yardoc. We plan mostly bug/test fixes between now and the full release of 0.9.0.
v0.9.0.pre1
Nearing finalization of the API. Some internal restructuring is still necessary. The changelog and readme are out of date and do not accurately reflect all the changes since the last release.
0.8.0
This is the first release to use the new model for C and Java native extensions. Java native extensions are built into the core gem and published as a pre-compiled Java build (in addition to the pure-Ruby core gem). C native extensions for MRI are published as a separate extension gem. The main extension gem must be compiled on installation, but pre-compiled Windows binaries (x32 and x64) are published as well. Specific features in this build include:
- C extension for MRI have been extracted into the
concurrent-ruby-ext
companion gem.
Please see the README for more detail. - Better variable isolation in
Promise
andFuture
via an:args
option - Continued to update intermittently failing tests
Extension Gem Pre-release 3
A private release used to fix and test pre-compiled extensions for Windows. It was never pushed to Rubygems.
0.7.2
- New
Semaphore
class based on java.util.concurrent.Semaphore - New
Promise.all?
andPromise.any?
class methods - Renamed
:overflow_policy
on thread pools to:fallback_policy
- Thread pools still accept the
:overflow_policy
option but display a warning - Thread pools now implement
fallback_policy
behavior when not running (rather than universally rejecting tasks) - Fixed minor
set_deref_options
constructor bug inPromise
class - Fixed minor
require
bug inThreadLocalVar
class - Fixed race condition bug in
TimerSet
class - Fixed race condition bug in
TimerSet
class - Fixed signal bug in
TimerSet#post
method - Numerous non-functional updates to clear warning when running in debug mode
- Fixed more intermittently failing tests
- Tests now run on new Travis build environment
- Multiple documentation updates
Extension Gem Pre-release 2
This release builds two gems from this repo: concurrent-ruby
and concurrent-ruby-ext
, the latter of which contains the C-native extensions that were added to the core gem in the 0.7 release.
- Background describing why we're making this change: New Approach to C/Java Native Extensions #186
- The PR from which this pre-release was created: Builds two gems from one repo. #205
- A prior attempt to to create two gems from two separate repos (rejected): Moved C extensions into a companion gem. #197
Extension Gem Pre-release 1
This release builds two gems from this repo: concurrent-ruby
and concurrent-ruby-ext
, the latter of which contains the C-native extensions that were added to the core gem in the 0.7 release.
- Background describing why we're making this change: New Approach to C/Java Native Extensions #186
- The PR from which this pre-release was created: Builds two gems from one repo. #205
- A prior attempt to to create two gems from two separate repos (rejected): Moved C extensions into a companion gem. #197
0.7.1
- Added
flat_map
method toPromise
- Added
zip
method toPromise
- Fixed bug with logging in
Actor
- Improvements to
Promise
tests - Removed actor-experimental warning
- Added an
IndirectImmediateExecutor
class - Allow disabling auto termination of global executors
- Fix thread leaking in
ThreadLocalVar
(usesRef
gem on non-JRuby systems) - Fix thread leaking when pruning pure-Ruby thread pools
- Prevent
Actor
from using anImmediateExecutor
(causes deadlock) - Added missing synchronizations to
TimerSet
- Fixed bug with return value of
Concurrent::Actor::Utils::Pool#ask
- Fixed timing bug in
TimerTask
- Fixed bug when creating a
JavaThreadPoolExecutor
with minimum pool size of zero - Removed confusing warning when not using native extenstions
- Improved documentation
0.7.0
- Merge the atomic gem
- Pure Ruby
MutexAtomic
atomic 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.
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:
- More executors for managing serialized operations
SerializedExecution
mixin moduleSerializedExecutionDelegator
for serializing any executor
- Updated
Async
with serialized execution - Updated
ImmediateExecutor
andPerThreadExecutor
with full executor service lifecycle - Added a
Delay
to rootActress
initialization - 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
RubyCachedThreadPool
overflow policy - Updated tests to use RSpec 3.0
- Removed deprecated
Actor
class - Better support for Rubinius