Skip to content

Releases: ruby-concurrency/concurrent-ruby

Extension Gem Pre-release 2

15 Jan 03:57
Compare
Choose a tag to compare
Pre-release

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.

Extension Gem Pre-release 1

18 Dec 00:17
Compare
Choose a tag to compare
Pre-release

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.

0.7.1

05 Dec 01:51
Compare
Choose a tag to compare
  • Added flat_map method to Promise
  • Added zip method to Promise
  • 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 (uses Ref gem on non-JRuby systems)
  • Fix thread leaking when pruning pure-Ruby thread pools
  • Prevent Actor from using an ImmediateExecutor (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

13 Aug 20:49
Compare
Choose a tag to compare
  • Merge the atomic gem
    • Pure Ruby MutexAtomic atomic reference class
    • Platform native atomic reference classes CAtomic, JavaAtomic, and RbxAtomic
    • 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
  • C native CAtomicBoolean
  • C native CAtomicFixnum
  • Refactored intermittently failing tests
  • Added dataflow! and dataflow_with! methods to match Future#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 called Actress. Actress was kept as an alias for Actor to keep compatibility.
    • Utils::Broadcast actor which allows Publish–subscribe pattern.
  • More executors for managing serialized operations
    • SerializedExecution mixin module
    • SerializedExecutionDelegator for serializing any executor
  • Updated Async with serialized execution
  • Updated ImmediateExecutor and PerThreadExecutor with full executor service lifecycle
  • Added a Delay to root Actress 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

0.7.0 Release Candidate 3

12 Aug 21:13
Compare
Choose a tag to compare
Pre-release

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

30 Jul 15:43
Compare
Choose a tag to compare
Pre-release

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! and dataflow_with! methods to match Future#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 called Actress. Actress was kept as an alias for Actor to keep compatibility.
    • Utils::Broadcast actor which allows Publish–subscribe pattern.

0.7.0 Release Candidate 1

27 Jun 14:04
Compare
Choose a tag to compare
Pre-release

Bug fixes and minor refactoring. Please see the changelog for details.

0.7.0 Release Candidate 0 (Experimental)

19 Jun 00:13
Compare
Choose a tag to compare

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

15 Jun 03:03
Compare
Choose a tag to compare

0.6.0

26 May 14:36
Compare
Choose a tag to compare

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, and Event 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 the Async 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 renamed Actor in the 0.7.0 release)

Please see the changelog for more information.