Description
It's been suggested (#246) that we're ready for a 1.0 release. People are using this gem in production and the Rails team is considering making concurrent-ruby
a dependency of Rails (#251). I believe we've reached a level of maturity, stability, and performance that warrants a 1.0 release. Our community deserves it. So with that in mind I would like to set a final 1.0 roadmap. Because of the major refactoring of the global configuration object (#255) being undertaken--and the number of method calls this will deprecate--I want to have one more major release before 1.0. The goals for these releases will be:
- 0.9 Stabilize the API and fix known bugs
- 1.0 Performance, stability, test cleanup, and documentation
- Post 1.0 Major functionality and API updates
v0.9 (codename Ultron)
Target Date: 18 May 2015
This goal of this release is to stabilize the API. The core update in this release is the refactor of the global configuration object and the renaming of the global thread pools (#255). Other features are merged/in-progress updates (monotonic clock) and bug fixes.
- Monotonic clock updates (Replace
Time.now
with new monotonic clock #256 -- @jdantonio) - Gem configuration and global thread pool refactor (Thread Pool Updates #255, Concurrent::RejectedExecutionError when running with minitest/autorun via JRuby #248, Document or improve global-pool's auto termination #227, Remove configuration of global pools #149 -- @jdantonio)
Depend onref
gem version 2.0 (@lucasallan)- Read-write lock (Provide a read-write lock #146 -- @jdantonio)
- Bug fixes
-
unlock
s outside of ensure block (unlock
s outside of ensure block #244 -- @jdantonio) - Atomic get_and_set faulty in C (Atomic get_and_set faulty in C #233 -- @jdantonio)
-
- Actor updates (@pitr-ch)
- Update all dev/test gem dependencies to latest versions
-
Promise
becomes subclass ofIVar
(@jdantonio, @pitr-ch)
v1.0.pre1 (codename Fury Road)
Target Date: 29 May 2015
The goal of this pre-release is to clean up everything that is being removed and create the first build of the edge gem. Pre-release and release candidate builds of the edge gem will occur simultaneously with pre-release and release candidate builds of the core gem. Only the version number will be different.
- Remove all deprecated code
- Move
Actor
andChannel
to the edge gem - Merge thread_safe gem (Merging the
thread_safe
gem #230 -- @jdantonio) - Release
concurrent-ruby-edge
v0.1.0.pre1 (PR Edge Gem #268)
v1.0 (codename Ant-Man)
Target Date: 17 July 2015
This release will have no major API updates (with the possible exception of Actor). It will focus on stability, performance, and documentation.
- Remove all deprecated code (@jdantonio)
- Actor updates (@pitr-ch)
- TimerSet: cancel/reset task (TimerSet: cancel/reset task #76 -- @jdantonio)
- Stress tests (@chrisseaton)
- Test suite improvements
- Improve test coverage
- Remove brutal thread killing in tests (Remove brutal thread killing in tests #226 -- @jdantonio)
- Intermittently Failing Tests (Intermittently Failing Tests #263 -- @jdantonio)
- Replace sleep based testing (Replace sleep based testing #225 -- @jdantonio)
- LazyRegister
- Documentation updates
- Improve inch score
- Merge markdown files into source files when appropriate
- Channel (Channel documentation #234)
- Memory model (Document what "memory model" guarantees each Atomic method provides #232)
- Global configuration yardoc
- Actor yardoc
- Exchanger yardoc
- LazyRegister yardoc
- ScheduledTask yardoc (@jdantonio)
- ThreadLocalVar yardoc
Post 1.0
These items are not a priority right now. We will revisit them once 1.0 has been released. However, should any of these features get implemented before the 1.0 release we will consider merging them, so long as they are stable, well documented/tested, and we are comfortable with the API.
- Common synchronization layer (Migrate form using mutex to synchronization layer #242, Synchronization layer #241)
- Parallel Enumerable (Parallel Enumerable #222)
- Actors un/become or state machine (Actors un/become or state machine #148)
- Remote actors (Remote Actors #147)
- I/O connector for Actors (IO example #144)
- Consolidate
IVar
childen into one object (Consolidate IVar childen into one object #139) - Safe final immutable objects Safe final immutable objects #120
- Fail subsequent posts to Agent after failure (Fail subsequent posts to Agent after failure #70)
- Fork/join
Target Dates
The target dates listed above are soft targets. Quality and correctness are tantamount. Everything else is secondary. We will adjust these target dates as necessary to ensure quality and correctness.