Async GuidesCompatibility

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

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.0.2+, 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.

Enabling Fiber Per Request

Ensure you have the following configuration in your application:

class Application < Rails::Application
	config.active_support.isolation_level = :fiber
end

Pain Points