ruby-concurrency / concurrent-ruby

Modern concurrency tools including agents, futures, promises, thread pools, supervisors, and more. Inspired by Erlang, Clojure, Scala, Go, Java, JavaScript, and classic concurrency patterns.
https://ruby-concurrency.github.io/concurrent-ruby/
Other
5.7k stars 419 forks source link

Next release: v0.5.0 on Monday 17 March 2014? #16

Closed jdantonio closed 10 years ago

jdantonio commented 10 years ago

I've learned that @headius will be talking about this gem during his presentation at RubyConf India on Saturday, 22 March 2014. Because the APIs of Future, ScheduledTask, and Promise (in progress) have changed to include the new #execute method I'd like to release an update prior to his presentation. Unless there is a significant objection from the community I'd like to release version 0.5.0 on Monday, March 17, 2014.

mighe commented 10 years ago

It's fine, Promise will be ready for sure. March 3 could be the last day for add new features, that way we'll have 2 full weeks for bug fixing and stabilize the APIs.

jdantonio commented 10 years ago

I'm working with @lucasallan on some new features for Actor but it is unlikely they will be ready for this release. They are fairly major and would be better for a later release even if we were to finish them.

We definitely want Promise in this release, thank you for your work on this.

It looks like the new features @chrisseaton is working on should be ready with plenty of time to spare.

There are a few pending tests I've been meaning to work on. I will use this release as motivation to implement those tests.

Can anyone think of anything else that should be included in the next release?

lucasallan commented 10 years ago

Sounds great. I'm finishing the new features in the middle of March.

jdantonio commented 10 years ago

What is left to do prior to the 17th? We currently have zero pending specs and 100% code coverage. I am going to add a changelog to the wiki and document the (many) changes in this release. Are we done with all intended refactoring? I'm believe we've also addressed all the tests that were failing intermittently. Are there others anyone knows about? Any known bugs?

@chrisseaton Have you completed everything you planned fro MVar and IVar for this release?

Again, I can't thank everyone enough for the work you put into this gem. Thanks to all of you, especially @mighe and @chrisseaton (and @lucasallan in an upcoming release) this has grown from a fun side-project into something I believe can have real value to the Ruby community. I am insanely proud of what we have created together.

mighe commented 10 years ago

It's the first time I really contribute to an open source project and I'm loving it: you, @chrisseaton and I have very different backgrounds and this is very exciting every time we share our ideas :blush:

The only bug I knew of is about thread pool non-deterministic test, but it seems fixed now.

I'd like to refactor a bit Supervisor and thread pools, just to clean up a bit the code: I didn't see any severe issue in them (just some minor locking inconsistencies in Supervisor), so their APIs won't change.

jdantonio commented 10 years ago

@mighe I know that Code Climate has given Supervisor an F grade, but I'm a little protective of that class (sorry, I'm human!). I put a lot of effort into it to replicate Erlang's behavior and I want to make sure we don't stray from that vision. If there are locking bugs they definitely need fixed, but please don't do anything more than that right now. I'd like to discuss any further potential changes later as part of a future release.

chrisseaton commented 10 years ago

I've no more features to add for this release. TVar and STM won't be ready by then.

I think perhaps we should look at some stress tests. By this I mean outside of RSpec, a set of programs that runs for a long time, doing random operations, checking for synchronisation problems. For example you could build a network of actors and have them pass messages around for half an hour, keep checking for consistency some way, and see if anything goes wrong. I'll do one for MVar and IVar to show what I mean. At the moment I think our specs are unlikely to catch the one in a million errors that are what make concurrency hard.

mighe commented 10 years ago

I don't want to change anything substantially, just fix some small details about locking and remove some style warning, nothing more. No Supervisors will be harmed during this process :blush:

Stress tests will be very very useful, maybe we could write them for 0.5.1 or 0.6.0, I think we're too late for 0.5.0

jdantonio commented 10 years ago

+1 to stress tests. When I was struggling with thread pools last summer I created a set of stress tests which I recently removed from the master branch. They were out of date and initiated as rake tasks. I like the idea of creating something more robust and comprehensive. We use JMeter at work on run those tests from or CI server. I'd love to see us create something like that for this gem.

jdantonio commented 10 years ago

I've pushed a pre-release update (v0.5.0.pre.1) to Rubygems.

headius commented 10 years ago

I have been out of the loop for a bit, so if there's anything I could help with please let me know.

jdantonio commented 10 years ago

@headius Your continued support and promotion of the gem is plenty, and greatly appreciated. I'm working on the changelog tonight and I've very impressed with the work @mighe and @chrisseaton have done on this release. It's vastly more reliable on JRuby and Rubinius. We've even started to implement a few JRuby-specific optimizations. Next Monday's release looks very good.

We've started working on some new features and optimizations for subsequent releases and @lucasallan is helping me work on a number of Actor updates. If there is anything you'd like to see in the gem or anything you'd like to work on yourself we'd love to have your input.

jdantonio commented 10 years ago

I've released v0.5.0 a day early. I found a couple of bugs last weekend but there hasn't been much activity since. And to be honest, I've been pretty obsessed with Titalfall the past week so I haven't had much time for anything else. :-)

I've created a changelog in the wiki. Since I wasn't keeping a changelog during development I had to work from memory and the commit history. Please update the changelog with any errors and omissions.

I will email the mailing list Monday and send out an announcement tweet. Again, I cannot say "thank you" enough times to everyone who has helped improve, promote, and support this gem. You are all awesome.