socketry / async

An awesome asynchronous event-driven reactor for Ruby.
MIT License
2.1k stars 86 forks source link

Moving forward with Ruby 3+ only implementation. #112

Closed ioquatix closed 3 years ago

ioquatix commented 3 years ago

https://github.com/socketry/async/issues/23 discusses a fundamental shift in Fiber scheduling which is implemented in https://github.com/socketry/async/pull/111 which may warrant a major version bump, even if Async and its "public" interfaces are largely the same and work almost the same way.

My general thought right now is one of:

The core Async interface is almost the same, the semantic model is almost the same. I ran external tests and most of my systems work the same on async master and this proposed branch. So, from the outside, it looks largely the same. The main issue would be whether bundler can figure out to us 1.29 on Ruby < 3.0 which sadly I don't think is true.

Therefore, I think it might be pragmatic to release Async 2.x and really polish the interfaces with all the knowledge we gained during 1.x and Ruby 3. I still need to think about it.

ioquatix commented 3 years ago

After discussing this we have the following outcome.

We are planning to define a stable interface (LTS) for Async 1.x and 2.x which will be compatible between releases for at least 3 years. Async 1.x will be EOL when Ruby 3.0 is EOL. Until then, we will maintain feature parity between them.