AsyncGuidesCompatibility

Compatibility

This guide gives an overview of the compatibility of Async with Ruby and other frameworks.

Ruby

Async has two main branches, stable-v1 and main.

Stable V1

[!CAUTION] The stable-v1 branch is now considered legacy and is no longer actively maintained. It is recommended to use the main branch for new projects.

The stable-v1 branch of async is compatible with Ruby 2.5+ & TruffleRuby, and partially compatible with JRuby.

Because it was designed with the interfaces available in Ruby 2.x, the following limitations apply:

Main

The main branch of async is compatible with Ruby 3.1.1+, and partially compatible with TruffleRuby. JRuby is currently incompatble.

Because it was designed with the interfaces available in Ruby 3.x, it supports the fiber scheduler which provides transparent concurrency.

Rails

Rails itself is generally compatible with Async and the fiber scheduler, but certain parts of Rails are not compatible with Async and have ossified ("accidental standardization") around thread-per-request as a general model. These issues are fully addressed in Rails v7.1+, which supports Rack 3 and fiber-per-request.