[#104307] Float truncate — Eustáquio Rangel <eustaquiorangel@...>
Hi!
4 messages
2021/06/16
[ruby-core:104384] [Ruby master Feature#18004] Add Async to the stdlib
From:
konsolebox@...
Date:
2021-06-23 09:04:15 UTC
List:
ruby-core #104384
Issue #18004 has been updated by konsolebox (K B).
shan (Shannon Skipper) wrote in #note-2:
> ```
> It seemed nice for Ruby to also ship with a concurrent I/O library if a preferred one can be adopted.
Or implement Promises plus await/async in Ruby maybe? The async and await combo especially is very powerful at simplifying asynchronous code. They are more than just a syntactic sugar.
----------------------------------------
Feature #18004: Add Async to the stdlib
https://bugs.ruby-lang.org/issues/18004#change-92620
* Author: shan (Shannon Skipper)
* Status: Open
* Priority: Normal
----------------------------------------
Adding Async to the stdlib would signal a clear concurrency story for Ruby 3 to compliment Ractor-based parallelism. I don't know how ioquatix feels about adding Async to stdlib, but I wanted to propose it since we keep getting questions about concurrent I/O with Ruby 3 in the community.
Ractors get a fair amount of attention on the #ruby IRC channels and Ruby Discord. When Ractors are discussed, question around concurrent I/O in Ruby 3 often follow. Folk don't seem to be aware of Async, so we often cite the Ruby 3 release notes Async Net::HTTP example shown below.
``` ruby
require 'async'
require 'net/http'
require 'uri'
Async do
["ruby", "rails", "async"].each do |topic|
Async do
Net::HTTP.get(URI "https://www.google.com/search?q=#{topic}")
end
end
end
```
The main downside I see for this proposal is the bloat from Async's several gem dependencies. For what it's worth, nio4r has been a staple for a long time and is also the only dependency of Puma.
```
Async is a composable asynchronous I/O framework for Ruby based on nio4r and timers.
```
Async is just so useful it would be awesome to add to the stdlib. It fills and important gap for concurrent I/O with Ruby 3 and would be exciting to see included in a future release.
See https://github.com/socketry/async#readme
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>