Concurrent Ruby v0.7.0 Release Notes

Release Date: 2014-08-13 // over 9 years ago
    • 🔀 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