* [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
@ 2024-10-04 5:57 shioimm (Misaki Shioi) via ruby-core
2024-10-08 2:18 ` [ruby-core:119478] " hsbt (Hiroshi SHIBATA) via ruby-core
` (9 more replies)
0 siblings, 10 replies; 11+ messages in thread
From: shioimm (Misaki Shioi) via ruby-core @ 2024-10-04 5:57 UTC (permalink / raw)
To: ruby-core; +Cc: shioimm (Misaki Shioi)
Issue #20782 has been reported by shioimm (Misaki Shioi).
----------------------------------------
Feature #20782: Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
https://bugs.ruby-lang.org/issues/20782
* Author: shioimm (Misaki Shioi)
* Status: Open
----------------------------------------
This is an implementation of Happy Eyeballs version 2 (RFC 8305) in `TCPSocket.new`.
See https://github.com/ruby/ruby/pull/11653
### Background
Prior to this implementation, I implemented Happy Eyeballs Version 2 (HEv2) for `Socket.tcp` in https://github.com/ruby/ruby/pull/9374.
HEv2 is an algorithm defined in [RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305), aimed at improving network connectivity.
For more details on the specific cases that HEv2 helps, please refer to https://bugs.ruby-lang.org/issues/20108.
### Proposal & Outcome
This proposal implements the same HEv2 algorithm in `TCPSocket.new`.
Since `TCPSocket.new` is used more widely than `Socket.tcp`, this change is expected to broaden the impact of HEv2's benefits.
Like `Socket.tcp`, I have also added `fast_fallback` keyword argument to `TCPSocket.new`.
This option is set to true by default, enabling the HEv2 functionality.
However, users can explicitly set it to false to disable HEv2 and use the previous behavior of `TCPSocket.new`.
It should be noted that HEv2 is enabled only in environments where pthreads are available.
This specification follows the approach taken in https://bugs.ruby-lang.org/issues/19965, where name resolution can be interrupted.
(In environments where pthreads are not available, the `fast_fallback` option is ignored.)
### Performance
Below is the benchmark of 100 requests to `www.ruby-lang.org` with the fast_fallback option set to true and false, respectively.
While there is a slight performance degradation when HEv2 is enabled, the degradation is smaller compared to that seen in `Socket.tcp` .
```ruby
require 'socket'
require 'benchmark'
hostname = "www.ruby-lang.org"
port = 80
n = 100
Benchmark.bmbm do |x|
x.report("fast_fallback: true") do
n.times { TCPSocket.new(hostname, port).close }
end
x.report("fast_fallback: false") do
n.times { TCPSocket.new(hostname, port, fast_fallback: false).close }
end
end
```
```
~/s/build ❯❯❯ ../install/bin/ruby ../ruby/test.rb
Rehearsal --------------------------------------------------------
fast_fallback: true 0.017588 0.097045 0.114633 ( 1.460664)
fast_fallback: false 0.014033 0.078984 0.093017 ( 1.413951)
----------------------------------------------- total: 0.207650sec
user system total real
fast_fallback: true 0.020891 0.124054 0.144945 ( 1.473816)
fast_fallback: false 0.018392 0.110852 0.129244 ( 1.466014)
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 11+ messages in thread
* [ruby-core:119478] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
2024-10-04 5:57 [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new shioimm (Misaki Shioi) via ruby-core
@ 2024-10-08 2:18 ` hsbt (Hiroshi SHIBATA) via ruby-core
2024-11-01 1:57 ` [ruby-core:119665] " hsbt (Hiroshi SHIBATA) via ruby-core
` (8 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: hsbt (Hiroshi SHIBATA) via ruby-core @ 2024-10-08 2:18 UTC (permalink / raw)
To: ruby-core; +Cc: hsbt (Hiroshi SHIBATA)
Issue #20782 has been updated by hsbt (Hiroshi SHIBATA).
Status changed from Open to Assigned
Assignee set to naruse (Yui NARUSE)
----------------------------------------
Feature #20782: Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
https://bugs.ruby-lang.org/issues/20782#change-110095
* Author: shioimm (Misaki Shioi)
* Status: Assigned
* Assignee: naruse (Yui NARUSE)
----------------------------------------
This is an implementation of Happy Eyeballs version 2 (RFC 8305) in `TCPSocket.new`.
See https://github.com/ruby/ruby/pull/11653
### Background
Prior to this implementation, I implemented Happy Eyeballs Version 2 (HEv2) for `Socket.tcp` in https://github.com/ruby/ruby/pull/9374.
HEv2 is an algorithm defined in [RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305), aimed at improving network connectivity.
For more details on the specific cases that HEv2 helps, please refer to https://bugs.ruby-lang.org/issues/20108.
### Proposal & Outcome
This proposal implements the same HEv2 algorithm in `TCPSocket.new`.
Since `TCPSocket.new` is used more widely than `Socket.tcp`, this change is expected to broaden the impact of HEv2's benefits.
Like `Socket.tcp`, I have also added `fast_fallback` keyword argument to `TCPSocket.new`.
This option is set to true by default, enabling the HEv2 functionality.
However, users can explicitly set it to false to disable HEv2 and use the previous behavior of `TCPSocket.new`.
It should be noted that HEv2 is enabled only in environments where pthreads are available.
This specification follows the approach taken in https://bugs.ruby-lang.org/issues/19965, where name resolution can be interrupted.
(In environments where pthreads are not available, the `fast_fallback` option is ignored.)
### Performance
Below is the benchmark of 100 requests to `www.ruby-lang.org` with the fast_fallback option set to true and false, respectively.
While there is a slight performance degradation when HEv2 is enabled, the degradation is smaller compared to that seen in `Socket.tcp` .
```ruby
require 'socket'
require 'benchmark'
hostname = "www.ruby-lang.org"
port = 80
n = 100
Benchmark.bmbm do |x|
x.report("fast_fallback: true") do
n.times { TCPSocket.new(hostname, port).close }
end
x.report("fast_fallback: false") do
n.times { TCPSocket.new(hostname, port, fast_fallback: false).close }
end
end
```
```
~/s/build ❯❯❯ ../install/bin/ruby ../ruby/test.rb
Rehearsal --------------------------------------------------------
fast_fallback: true 0.017588 0.097045 0.114633 ( 1.460664)
fast_fallback: false 0.014033 0.078984 0.093017 ( 1.413951)
----------------------------------------------- total: 0.207650sec
user system total real
fast_fallback: true 0.020891 0.124054 0.144945 ( 1.473816)
fast_fallback: false 0.018392 0.110852 0.129244 ( 1.466014)
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 11+ messages in thread
* [ruby-core:119665] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
2024-10-04 5:57 [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new shioimm (Misaki Shioi) via ruby-core
2024-10-08 2:18 ` [ruby-core:119478] " hsbt (Hiroshi SHIBATA) via ruby-core
@ 2024-11-01 1:57 ` hsbt (Hiroshi SHIBATA) via ruby-core
2024-11-01 23:30 ` [ruby-core:119685] " tenderlovemaking (Aaron Patterson) via ruby-core
` (7 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: hsbt (Hiroshi SHIBATA) via ruby-core @ 2024-11-01 1:57 UTC (permalink / raw)
To: ruby-core; +Cc: hsbt (Hiroshi SHIBATA)
Issue #20782 has been updated by hsbt (Hiroshi SHIBATA).
@matz I propose @shioimm as a Ruby committer. She is best person to maintain HEv2 and Socket related feature. It's good time to commit https://github.com/ruby/ruby/pull/11653 by herself.
I'll support and mentor her.
----------------------------------------
Feature #20782: Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
https://bugs.ruby-lang.org/issues/20782#change-110321
* Author: shioimm (Misaki Shioi)
* Status: Assigned
* Assignee: naruse (Yui NARUSE)
----------------------------------------
This is an implementation of Happy Eyeballs version 2 (RFC 8305) in `TCPSocket.new`.
See https://github.com/ruby/ruby/pull/11653
### Background
Prior to this implementation, I implemented Happy Eyeballs Version 2 (HEv2) for `Socket.tcp` in https://github.com/ruby/ruby/pull/9374.
HEv2 is an algorithm defined in [RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305), aimed at improving network connectivity.
For more details on the specific cases that HEv2 helps, please refer to https://bugs.ruby-lang.org/issues/20108.
### Proposal & Outcome
This proposal implements the same HEv2 algorithm in `TCPSocket.new`.
Since `TCPSocket.new` is used more widely than `Socket.tcp`, this change is expected to broaden the impact of HEv2's benefits.
Like `Socket.tcp`, I have also added `fast_fallback` keyword argument to `TCPSocket.new`.
This option is set to true by default, enabling the HEv2 functionality.
However, users can explicitly set it to false to disable HEv2 and use the previous behavior of `TCPSocket.new`.
It should be noted that HEv2 is enabled only in environments where pthreads are available.
This specification follows the approach taken in https://bugs.ruby-lang.org/issues/19965, where name resolution can be interrupted.
(In environments where pthreads are not available, the `fast_fallback` option is ignored.)
### Performance
Below is the benchmark of 100 requests to `www.ruby-lang.org` with the fast_fallback option set to true and false, respectively.
While there is a slight performance degradation when HEv2 is enabled, the degradation is smaller compared to that seen in `Socket.tcp` .
```ruby
require 'socket'
require 'benchmark'
hostname = "www.ruby-lang.org"
port = 80
n = 100
Benchmark.bmbm do |x|
x.report("fast_fallback: true") do
n.times { TCPSocket.new(hostname, port).close }
end
x.report("fast_fallback: false") do
n.times { TCPSocket.new(hostname, port, fast_fallback: false).close }
end
end
```
```
~/s/build ❯❯❯ ../install/bin/ruby ../ruby/test.rb
Rehearsal --------------------------------------------------------
fast_fallback: true 0.017588 0.097045 0.114633 ( 1.460664)
fast_fallback: false 0.014033 0.078984 0.093017 ( 1.413951)
----------------------------------------------- total: 0.207650sec
user system total real
fast_fallback: true 0.020891 0.124054 0.144945 ( 1.473816)
fast_fallback: false 0.018392 0.110852 0.129244 ( 1.466014)
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 11+ messages in thread
* [ruby-core:119685] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
2024-10-04 5:57 [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new shioimm (Misaki Shioi) via ruby-core
2024-10-08 2:18 ` [ruby-core:119478] " hsbt (Hiroshi SHIBATA) via ruby-core
2024-11-01 1:57 ` [ruby-core:119665] " hsbt (Hiroshi SHIBATA) via ruby-core
@ 2024-11-01 23:30 ` tenderlovemaking (Aaron Patterson) via ruby-core
2024-11-06 2:11 ` [ruby-core:119762] " mame (Yusuke Endoh) via ruby-core
` (6 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: tenderlovemaking (Aaron Patterson) via ruby-core @ 2024-11-01 23:30 UTC (permalink / raw)
To: ruby-core; +Cc: tenderlovemaking (Aaron Patterson)
Issue #20782 has been updated by tenderlovemaking (Aaron Patterson).
hsbt (Hiroshi SHIBATA) wrote in #note-2:
> @matz I propose @shioimm as a Ruby committer. She is best person to maintain HEv2 and Socket related feature. It's good time to commit https://github.com/ruby/ruby/pull/11653 by herself.
>
> I'll support and mentor her.
+1
----------------------------------------
Feature #20782: Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
https://bugs.ruby-lang.org/issues/20782#change-110344
* Author: shioimm (Misaki Shioi)
* Status: Assigned
* Assignee: naruse (Yui NARUSE)
----------------------------------------
This is an implementation of Happy Eyeballs version 2 (RFC 8305) in `TCPSocket.new`.
See https://github.com/ruby/ruby/pull/11653
### Background
Prior to this implementation, I implemented Happy Eyeballs Version 2 (HEv2) for `Socket.tcp` in https://github.com/ruby/ruby/pull/9374.
HEv2 is an algorithm defined in [RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305), aimed at improving network connectivity.
For more details on the specific cases that HEv2 helps, please refer to https://bugs.ruby-lang.org/issues/20108.
### Proposal & Outcome
This proposal implements the same HEv2 algorithm in `TCPSocket.new`.
Since `TCPSocket.new` is used more widely than `Socket.tcp`, this change is expected to broaden the impact of HEv2's benefits.
Like `Socket.tcp`, I have also added `fast_fallback` keyword argument to `TCPSocket.new`.
This option is set to true by default, enabling the HEv2 functionality.
However, users can explicitly set it to false to disable HEv2 and use the previous behavior of `TCPSocket.new`.
It should be noted that HEv2 is enabled only in environments where pthreads are available.
This specification follows the approach taken in https://bugs.ruby-lang.org/issues/19965, where name resolution can be interrupted.
(In environments where pthreads are not available, the `fast_fallback` option is ignored.)
### Performance
Below is the benchmark of 100 requests to `www.ruby-lang.org` with the fast_fallback option set to true and false, respectively.
While there is a slight performance degradation when HEv2 is enabled, the degradation is smaller compared to that seen in `Socket.tcp` .
```ruby
require 'socket'
require 'benchmark'
hostname = "www.ruby-lang.org"
port = 80
n = 100
Benchmark.bmbm do |x|
x.report("fast_fallback: true") do
n.times { TCPSocket.new(hostname, port).close }
end
x.report("fast_fallback: false") do
n.times { TCPSocket.new(hostname, port, fast_fallback: false).close }
end
end
```
```
~/s/build ❯❯❯ ../install/bin/ruby ../ruby/test.rb
Rehearsal --------------------------------------------------------
fast_fallback: true 0.017588 0.097045 0.114633 ( 1.460664)
fast_fallback: false 0.014033 0.078984 0.093017 ( 1.413951)
----------------------------------------------- total: 0.207650sec
user system total real
fast_fallback: true 0.020891 0.124054 0.144945 ( 1.473816)
fast_fallback: false 0.018392 0.110852 0.129244 ( 1.466014)
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 11+ messages in thread
* [ruby-core:119762] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
2024-10-04 5:57 [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new shioimm (Misaki Shioi) via ruby-core
` (2 preceding siblings ...)
2024-11-01 23:30 ` [ruby-core:119685] " tenderlovemaking (Aaron Patterson) via ruby-core
@ 2024-11-06 2:11 ` mame (Yusuke Endoh) via ruby-core
2024-11-06 9:03 ` [ruby-core:119770] " matsuda (Akira Matsuda) via ruby-core
` (5 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: mame (Yusuke Endoh) via ruby-core @ 2024-11-06 2:11 UTC (permalink / raw)
To: ruby-core; +Cc: mame (Yusuke Endoh)
Issue #20782 has been updated by mame (Yusuke Endoh).
+1
----------------------------------------
Feature #20782: Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
https://bugs.ruby-lang.org/issues/20782#change-110427
* Author: shioimm (Misaki Shioi)
* Status: Assigned
* Assignee: naruse (Yui NARUSE)
----------------------------------------
This is an implementation of Happy Eyeballs version 2 (RFC 8305) in `TCPSocket.new`.
See https://github.com/ruby/ruby/pull/11653
### Background
Prior to this implementation, I implemented Happy Eyeballs Version 2 (HEv2) for `Socket.tcp` in https://github.com/ruby/ruby/pull/9374.
HEv2 is an algorithm defined in [RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305), aimed at improving network connectivity.
For more details on the specific cases that HEv2 helps, please refer to https://bugs.ruby-lang.org/issues/20108.
### Proposal & Outcome
This proposal implements the same HEv2 algorithm in `TCPSocket.new`.
Since `TCPSocket.new` is used more widely than `Socket.tcp`, this change is expected to broaden the impact of HEv2's benefits.
Like `Socket.tcp`, I have also added `fast_fallback` keyword argument to `TCPSocket.new`.
This option is set to true by default, enabling the HEv2 functionality.
However, users can explicitly set it to false to disable HEv2 and use the previous behavior of `TCPSocket.new`.
It should be noted that HEv2 is enabled only in environments where pthreads are available.
This specification follows the approach taken in https://bugs.ruby-lang.org/issues/19965, where name resolution can be interrupted.
(In environments where pthreads are not available, the `fast_fallback` option is ignored.)
### Performance
Below is the benchmark of 100 requests to `www.ruby-lang.org` with the fast_fallback option set to true and false, respectively.
While there is a slight performance degradation when HEv2 is enabled, the degradation is smaller compared to that seen in `Socket.tcp` .
```ruby
require 'socket'
require 'benchmark'
hostname = "www.ruby-lang.org"
port = 80
n = 100
Benchmark.bmbm do |x|
x.report("fast_fallback: true") do
n.times { TCPSocket.new(hostname, port).close }
end
x.report("fast_fallback: false") do
n.times { TCPSocket.new(hostname, port, fast_fallback: false).close }
end
end
```
```
~/s/build ❯❯❯ ../install/bin/ruby ../ruby/test.rb
Rehearsal --------------------------------------------------------
fast_fallback: true 0.017588 0.097045 0.114633 ( 1.460664)
fast_fallback: false 0.014033 0.078984 0.093017 ( 1.413951)
----------------------------------------------- total: 0.207650sec
user system total real
fast_fallback: true 0.020891 0.124054 0.144945 ( 1.473816)
fast_fallback: false 0.018392 0.110852 0.129244 ( 1.466014)
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 11+ messages in thread
* [ruby-core:119770] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
2024-10-04 5:57 [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new shioimm (Misaki Shioi) via ruby-core
` (3 preceding siblings ...)
2024-11-06 2:11 ` [ruby-core:119762] " mame (Yusuke Endoh) via ruby-core
@ 2024-11-06 9:03 ` matsuda (Akira Matsuda) via ruby-core
2024-11-07 9:43 ` [ruby-core:119795] " matz (Yukihiro Matsumoto) via ruby-core
` (4 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: matsuda (Akira Matsuda) via ruby-core @ 2024-11-06 9:03 UTC (permalink / raw)
To: ruby-core; +Cc: matsuda (Akira Matsuda)
Issue #20782 has been updated by matsuda (Akira Matsuda).
+1
----------------------------------------
Feature #20782: Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
https://bugs.ruby-lang.org/issues/20782#change-110437
* Author: shioimm (Misaki Shioi)
* Status: Assigned
* Assignee: naruse (Yui NARUSE)
----------------------------------------
This is an implementation of Happy Eyeballs version 2 (RFC 8305) in `TCPSocket.new`.
See https://github.com/ruby/ruby/pull/11653
### Background
Prior to this implementation, I implemented Happy Eyeballs Version 2 (HEv2) for `Socket.tcp` in https://github.com/ruby/ruby/pull/9374.
HEv2 is an algorithm defined in [RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305), aimed at improving network connectivity.
For more details on the specific cases that HEv2 helps, please refer to https://bugs.ruby-lang.org/issues/20108.
### Proposal & Outcome
This proposal implements the same HEv2 algorithm in `TCPSocket.new`.
Since `TCPSocket.new` is used more widely than `Socket.tcp`, this change is expected to broaden the impact of HEv2's benefits.
Like `Socket.tcp`, I have also added `fast_fallback` keyword argument to `TCPSocket.new`.
This option is set to true by default, enabling the HEv2 functionality.
However, users can explicitly set it to false to disable HEv2 and use the previous behavior of `TCPSocket.new`.
It should be noted that HEv2 is enabled only in environments where pthreads are available.
This specification follows the approach taken in https://bugs.ruby-lang.org/issues/19965, where name resolution can be interrupted.
(In environments where pthreads are not available, the `fast_fallback` option is ignored.)
### Performance
Below is the benchmark of 100 requests to `www.ruby-lang.org` with the fast_fallback option set to true and false, respectively.
While there is a slight performance degradation when HEv2 is enabled, the degradation is smaller compared to that seen in `Socket.tcp` .
```ruby
require 'socket'
require 'benchmark'
hostname = "www.ruby-lang.org"
port = 80
n = 100
Benchmark.bmbm do |x|
x.report("fast_fallback: true") do
n.times { TCPSocket.new(hostname, port).close }
end
x.report("fast_fallback: false") do
n.times { TCPSocket.new(hostname, port, fast_fallback: false).close }
end
end
```
```
~/s/build ❯❯❯ ../install/bin/ruby ../ruby/test.rb
Rehearsal --------------------------------------------------------
fast_fallback: true 0.017588 0.097045 0.114633 ( 1.460664)
fast_fallback: false 0.014033 0.078984 0.093017 ( 1.413951)
----------------------------------------------- total: 0.207650sec
user system total real
fast_fallback: true 0.020891 0.124054 0.144945 ( 1.473816)
fast_fallback: false 0.018392 0.110852 0.129244 ( 1.466014)
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 11+ messages in thread
* [ruby-core:119795] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
2024-10-04 5:57 [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new shioimm (Misaki Shioi) via ruby-core
` (4 preceding siblings ...)
2024-11-06 9:03 ` [ruby-core:119770] " matsuda (Akira Matsuda) via ruby-core
@ 2024-11-07 9:43 ` matz (Yukihiro Matsumoto) via ruby-core
2024-11-07 10:03 ` [ruby-core:119797] " shioimm (Misaki Shioi) via ruby-core
` (3 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: matz (Yukihiro Matsumoto) via ruby-core @ 2024-11-07 9:43 UTC (permalink / raw)
To: ruby-core; +Cc: matz (Yukihiro Matsumoto)
Issue #20782 has been updated by matz (Yukihiro Matsumoto).
Accepted.
Matz.
----------------------------------------
Feature #20782: Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
https://bugs.ruby-lang.org/issues/20782#change-110480
* Author: shioimm (Misaki Shioi)
* Status: Assigned
* Assignee: naruse (Yui NARUSE)
----------------------------------------
This is an implementation of Happy Eyeballs version 2 (RFC 8305) in `TCPSocket.new`.
See https://github.com/ruby/ruby/pull/11653
### Background
Prior to this implementation, I implemented Happy Eyeballs Version 2 (HEv2) for `Socket.tcp` in https://github.com/ruby/ruby/pull/9374.
HEv2 is an algorithm defined in [RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305), aimed at improving network connectivity.
For more details on the specific cases that HEv2 helps, please refer to https://bugs.ruby-lang.org/issues/20108.
### Proposal & Outcome
This proposal implements the same HEv2 algorithm in `TCPSocket.new`.
Since `TCPSocket.new` is used more widely than `Socket.tcp`, this change is expected to broaden the impact of HEv2's benefits.
Like `Socket.tcp`, I have also added `fast_fallback` keyword argument to `TCPSocket.new`.
This option is set to true by default, enabling the HEv2 functionality.
However, users can explicitly set it to false to disable HEv2 and use the previous behavior of `TCPSocket.new`.
It should be noted that HEv2 is enabled only in environments where pthreads are available.
This specification follows the approach taken in https://bugs.ruby-lang.org/issues/19965, where name resolution can be interrupted.
(In environments where pthreads are not available, the `fast_fallback` option is ignored.)
### Performance
Below is the benchmark of 100 requests to `www.ruby-lang.org` with the fast_fallback option set to true and false, respectively.
While there is a slight performance degradation when HEv2 is enabled, the degradation is smaller compared to that seen in `Socket.tcp` .
```ruby
require 'socket'
require 'benchmark'
hostname = "www.ruby-lang.org"
port = 80
n = 100
Benchmark.bmbm do |x|
x.report("fast_fallback: true") do
n.times { TCPSocket.new(hostname, port).close }
end
x.report("fast_fallback: false") do
n.times { TCPSocket.new(hostname, port, fast_fallback: false).close }
end
end
```
```
~/s/build ❯❯❯ ../install/bin/ruby ../ruby/test.rb
Rehearsal --------------------------------------------------------
fast_fallback: true 0.017588 0.097045 0.114633 ( 1.460664)
fast_fallback: false 0.014033 0.078984 0.093017 ( 1.413951)
----------------------------------------------- total: 0.207650sec
user system total real
fast_fallback: true 0.020891 0.124054 0.144945 ( 1.473816)
fast_fallback: false 0.018392 0.110852 0.129244 ( 1.466014)
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 11+ messages in thread
* [ruby-core:119797] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
2024-10-04 5:57 [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new shioimm (Misaki Shioi) via ruby-core
` (5 preceding siblings ...)
2024-11-07 9:43 ` [ruby-core:119795] " matz (Yukihiro Matsumoto) via ruby-core
@ 2024-11-07 10:03 ` shioimm (Misaki Shioi) via ruby-core
2024-11-08 0:21 ` [ruby-core:119829] " hsbt (Hiroshi SHIBATA) via ruby-core
` (2 subsequent siblings)
9 siblings, 0 replies; 11+ messages in thread
From: shioimm (Misaki Shioi) via ruby-core @ 2024-11-07 10:03 UTC (permalink / raw)
To: ruby-core; +Cc: shioimm (Misaki Shioi)
Issue #20782 has been updated by shioimm (Misaki Shioi).
Thank you it's honor to be a Ruby committer...!
----------------------------------------
Feature #20782: Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
https://bugs.ruby-lang.org/issues/20782#change-110482
* Author: shioimm (Misaki Shioi)
* Status: Assigned
* Assignee: naruse (Yui NARUSE)
----------------------------------------
This is an implementation of Happy Eyeballs version 2 (RFC 8305) in `TCPSocket.new`.
See https://github.com/ruby/ruby/pull/11653
### Background
Prior to this implementation, I implemented Happy Eyeballs Version 2 (HEv2) for `Socket.tcp` in https://github.com/ruby/ruby/pull/9374.
HEv2 is an algorithm defined in [RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305), aimed at improving network connectivity.
For more details on the specific cases that HEv2 helps, please refer to https://bugs.ruby-lang.org/issues/20108.
### Proposal & Outcome
This proposal implements the same HEv2 algorithm in `TCPSocket.new`.
Since `TCPSocket.new` is used more widely than `Socket.tcp`, this change is expected to broaden the impact of HEv2's benefits.
Like `Socket.tcp`, I have also added `fast_fallback` keyword argument to `TCPSocket.new`.
This option is set to true by default, enabling the HEv2 functionality.
However, users can explicitly set it to false to disable HEv2 and use the previous behavior of `TCPSocket.new`.
It should be noted that HEv2 is enabled only in environments where pthreads are available.
This specification follows the approach taken in https://bugs.ruby-lang.org/issues/19965, where name resolution can be interrupted.
(In environments where pthreads are not available, the `fast_fallback` option is ignored.)
### Performance
Below is the benchmark of 100 requests to `www.ruby-lang.org` with the fast_fallback option set to true and false, respectively.
While there is a slight performance degradation when HEv2 is enabled, the degradation is smaller compared to that seen in `Socket.tcp` .
```ruby
require 'socket'
require 'benchmark'
hostname = "www.ruby-lang.org"
port = 80
n = 100
Benchmark.bmbm do |x|
x.report("fast_fallback: true") do
n.times { TCPSocket.new(hostname, port).close }
end
x.report("fast_fallback: false") do
n.times { TCPSocket.new(hostname, port, fast_fallback: false).close }
end
end
```
```
~/s/build ❯❯❯ ../install/bin/ruby ../ruby/test.rb
Rehearsal --------------------------------------------------------
fast_fallback: true 0.017588 0.097045 0.114633 ( 1.460664)
fast_fallback: false 0.014033 0.078984 0.093017 ( 1.413951)
----------------------------------------------- total: 0.207650sec
user system total real
fast_fallback: true 0.020891 0.124054 0.144945 ( 1.473816)
fast_fallback: false 0.018392 0.110852 0.129244 ( 1.466014)
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 11+ messages in thread
* [ruby-core:119829] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
2024-10-04 5:57 [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new shioimm (Misaki Shioi) via ruby-core
` (6 preceding siblings ...)
2024-11-07 10:03 ` [ruby-core:119797] " shioimm (Misaki Shioi) via ruby-core
@ 2024-11-08 0:21 ` hsbt (Hiroshi SHIBATA) via ruby-core
2024-11-08 3:58 ` [ruby-core:119831] " shioimm (Misaki Shioi) via ruby-core
2024-11-08 4:32 ` [ruby-core:119833] " hsbt (Hiroshi SHIBATA) via ruby-core
9 siblings, 0 replies; 11+ messages in thread
From: hsbt (Hiroshi SHIBATA) via ruby-core @ 2024-11-08 0:21 UTC (permalink / raw)
To: ruby-core; +Cc: hsbt (Hiroshi SHIBATA)
Issue #20782 has been updated by hsbt (Hiroshi SHIBATA).
@shioimm Can you provide required/optional information at https://github.com/ruby/ruby/wiki/Committer-How-To#how-to-register-you-as-a-committer to cvs-admin@ruby-lang.org? After that, I will prepare your account for Ruby committer.
----------------------------------------
Feature #20782: Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
https://bugs.ruby-lang.org/issues/20782#change-110517
* Author: shioimm (Misaki Shioi)
* Status: Assigned
* Assignee: naruse (Yui NARUSE)
----------------------------------------
This is an implementation of Happy Eyeballs version 2 (RFC 8305) in `TCPSocket.new`.
See https://github.com/ruby/ruby/pull/11653
### Background
Prior to this implementation, I implemented Happy Eyeballs Version 2 (HEv2) for `Socket.tcp` in https://github.com/ruby/ruby/pull/9374.
HEv2 is an algorithm defined in [RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305), aimed at improving network connectivity.
For more details on the specific cases that HEv2 helps, please refer to https://bugs.ruby-lang.org/issues/20108.
### Proposal & Outcome
This proposal implements the same HEv2 algorithm in `TCPSocket.new`.
Since `TCPSocket.new` is used more widely than `Socket.tcp`, this change is expected to broaden the impact of HEv2's benefits.
Like `Socket.tcp`, I have also added `fast_fallback` keyword argument to `TCPSocket.new`.
This option is set to true by default, enabling the HEv2 functionality.
However, users can explicitly set it to false to disable HEv2 and use the previous behavior of `TCPSocket.new`.
It should be noted that HEv2 is enabled only in environments where pthreads are available.
This specification follows the approach taken in https://bugs.ruby-lang.org/issues/19965, where name resolution can be interrupted.
(In environments where pthreads are not available, the `fast_fallback` option is ignored.)
### Performance
Below is the benchmark of 100 requests to `www.ruby-lang.org` with the fast_fallback option set to true and false, respectively.
While there is a slight performance degradation when HEv2 is enabled, the degradation is smaller compared to that seen in `Socket.tcp` .
```ruby
require 'socket'
require 'benchmark'
hostname = "www.ruby-lang.org"
port = 80
n = 100
Benchmark.bmbm do |x|
x.report("fast_fallback: true") do
n.times { TCPSocket.new(hostname, port).close }
end
x.report("fast_fallback: false") do
n.times { TCPSocket.new(hostname, port, fast_fallback: false).close }
end
end
```
```
~/s/build ❯❯❯ ../install/bin/ruby ../ruby/test.rb
Rehearsal --------------------------------------------------------
fast_fallback: true 0.017588 0.097045 0.114633 ( 1.460664)
fast_fallback: false 0.014033 0.078984 0.093017 ( 1.413951)
----------------------------------------------- total: 0.207650sec
user system total real
fast_fallback: true 0.020891 0.124054 0.144945 ( 1.473816)
fast_fallback: false 0.018392 0.110852 0.129244 ( 1.466014)
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 11+ messages in thread
* [ruby-core:119831] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
2024-10-04 5:57 [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new shioimm (Misaki Shioi) via ruby-core
` (7 preceding siblings ...)
2024-11-08 0:21 ` [ruby-core:119829] " hsbt (Hiroshi SHIBATA) via ruby-core
@ 2024-11-08 3:58 ` shioimm (Misaki Shioi) via ruby-core
2024-11-08 4:32 ` [ruby-core:119833] " hsbt (Hiroshi SHIBATA) via ruby-core
9 siblings, 0 replies; 11+ messages in thread
From: shioimm (Misaki Shioi) via ruby-core @ 2024-11-08 3:58 UTC (permalink / raw)
To: ruby-core; +Cc: shioimm (Misaki Shioi)
Issue #20782 has been updated by shioimm (Misaki Shioi).
@hsbt
I sent them to cvs-admin, thank you.
----------------------------------------
Feature #20782: Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
https://bugs.ruby-lang.org/issues/20782#change-110519
* Author: shioimm (Misaki Shioi)
* Status: Assigned
* Assignee: naruse (Yui NARUSE)
----------------------------------------
This is an implementation of Happy Eyeballs version 2 (RFC 8305) in `TCPSocket.new`.
See https://github.com/ruby/ruby/pull/11653
### Background
Prior to this implementation, I implemented Happy Eyeballs Version 2 (HEv2) for `Socket.tcp` in https://github.com/ruby/ruby/pull/9374.
HEv2 is an algorithm defined in [RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305), aimed at improving network connectivity.
For more details on the specific cases that HEv2 helps, please refer to https://bugs.ruby-lang.org/issues/20108.
### Proposal & Outcome
This proposal implements the same HEv2 algorithm in `TCPSocket.new`.
Since `TCPSocket.new` is used more widely than `Socket.tcp`, this change is expected to broaden the impact of HEv2's benefits.
Like `Socket.tcp`, I have also added `fast_fallback` keyword argument to `TCPSocket.new`.
This option is set to true by default, enabling the HEv2 functionality.
However, users can explicitly set it to false to disable HEv2 and use the previous behavior of `TCPSocket.new`.
It should be noted that HEv2 is enabled only in environments where pthreads are available.
This specification follows the approach taken in https://bugs.ruby-lang.org/issues/19965, where name resolution can be interrupted.
(In environments where pthreads are not available, the `fast_fallback` option is ignored.)
### Performance
Below is the benchmark of 100 requests to `www.ruby-lang.org` with the fast_fallback option set to true and false, respectively.
While there is a slight performance degradation when HEv2 is enabled, the degradation is smaller compared to that seen in `Socket.tcp` .
```ruby
require 'socket'
require 'benchmark'
hostname = "www.ruby-lang.org"
port = 80
n = 100
Benchmark.bmbm do |x|
x.report("fast_fallback: true") do
n.times { TCPSocket.new(hostname, port).close }
end
x.report("fast_fallback: false") do
n.times { TCPSocket.new(hostname, port, fast_fallback: false).close }
end
end
```
```
~/s/build ❯❯❯ ../install/bin/ruby ../ruby/test.rb
Rehearsal --------------------------------------------------------
fast_fallback: true 0.017588 0.097045 0.114633 ( 1.460664)
fast_fallback: false 0.014033 0.078984 0.093017 ( 1.413951)
----------------------------------------------- total: 0.207650sec
user system total real
fast_fallback: true 0.020891 0.124054 0.144945 ( 1.473816)
fast_fallback: false 0.018392 0.110852 0.129244 ( 1.466014)
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 11+ messages in thread
* [ruby-core:119833] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
2024-10-04 5:57 [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new shioimm (Misaki Shioi) via ruby-core
` (8 preceding siblings ...)
2024-11-08 3:58 ` [ruby-core:119831] " shioimm (Misaki Shioi) via ruby-core
@ 2024-11-08 4:32 ` hsbt (Hiroshi SHIBATA) via ruby-core
9 siblings, 0 replies; 11+ messages in thread
From: hsbt (Hiroshi SHIBATA) via ruby-core @ 2024-11-08 4:32 UTC (permalink / raw)
To: ruby-core; +Cc: hsbt (Hiroshi SHIBATA)
Issue #20782 has been updated by hsbt (Hiroshi SHIBATA).
Thanks. I've finished your accounts.
You can merge https://github.com/ruby/ruby/pull/11653 by yourself.
----------------------------------------
Feature #20782: Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new
https://bugs.ruby-lang.org/issues/20782#change-110521
* Author: shioimm (Misaki Shioi)
* Status: Assigned
* Assignee: naruse (Yui NARUSE)
----------------------------------------
This is an implementation of Happy Eyeballs version 2 (RFC 8305) in `TCPSocket.new`.
See https://github.com/ruby/ruby/pull/11653
### Background
Prior to this implementation, I implemented Happy Eyeballs Version 2 (HEv2) for `Socket.tcp` in https://github.com/ruby/ruby/pull/9374.
HEv2 is an algorithm defined in [RFC 8305](https://datatracker.ietf.org/doc/html/rfc8305), aimed at improving network connectivity.
For more details on the specific cases that HEv2 helps, please refer to https://bugs.ruby-lang.org/issues/20108.
### Proposal & Outcome
This proposal implements the same HEv2 algorithm in `TCPSocket.new`.
Since `TCPSocket.new` is used more widely than `Socket.tcp`, this change is expected to broaden the impact of HEv2's benefits.
Like `Socket.tcp`, I have also added `fast_fallback` keyword argument to `TCPSocket.new`.
This option is set to true by default, enabling the HEv2 functionality.
However, users can explicitly set it to false to disable HEv2 and use the previous behavior of `TCPSocket.new`.
It should be noted that HEv2 is enabled only in environments where pthreads are available.
This specification follows the approach taken in https://bugs.ruby-lang.org/issues/19965, where name resolution can be interrupted.
(In environments where pthreads are not available, the `fast_fallback` option is ignored.)
### Performance
Below is the benchmark of 100 requests to `www.ruby-lang.org` with the fast_fallback option set to true and false, respectively.
While there is a slight performance degradation when HEv2 is enabled, the degradation is smaller compared to that seen in `Socket.tcp` .
```ruby
require 'socket'
require 'benchmark'
hostname = "www.ruby-lang.org"
port = 80
n = 100
Benchmark.bmbm do |x|
x.report("fast_fallback: true") do
n.times { TCPSocket.new(hostname, port).close }
end
x.report("fast_fallback: false") do
n.times { TCPSocket.new(hostname, port, fast_fallback: false).close }
end
end
```
```
~/s/build ❯❯❯ ../install/bin/ruby ../ruby/test.rb
Rehearsal --------------------------------------------------------
fast_fallback: true 0.017588 0.097045 0.114633 ( 1.460664)
fast_fallback: false 0.014033 0.078984 0.093017 ( 1.413951)
----------------------------------------------- total: 0.207650sec
user system total real
fast_fallback: true 0.020891 0.124054 0.144945 ( 1.473816)
fast_fallback: false 0.018392 0.110852 0.129244 ( 1.466014)
```
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-11-08 4:33 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-10-04 5:57 [ruby-core:119442] [Ruby master Feature#20782] Introduction of Happy Eyeballs Version 2 (RFC8305) in TCPSocket.new shioimm (Misaki Shioi) via ruby-core
2024-10-08 2:18 ` [ruby-core:119478] " hsbt (Hiroshi SHIBATA) via ruby-core
2024-11-01 1:57 ` [ruby-core:119665] " hsbt (Hiroshi SHIBATA) via ruby-core
2024-11-01 23:30 ` [ruby-core:119685] " tenderlovemaking (Aaron Patterson) via ruby-core
2024-11-06 2:11 ` [ruby-core:119762] " mame (Yusuke Endoh) via ruby-core
2024-11-06 9:03 ` [ruby-core:119770] " matsuda (Akira Matsuda) via ruby-core
2024-11-07 9:43 ` [ruby-core:119795] " matz (Yukihiro Matsumoto) via ruby-core
2024-11-07 10:03 ` [ruby-core:119797] " shioimm (Misaki Shioi) via ruby-core
2024-11-08 0:21 ` [ruby-core:119829] " hsbt (Hiroshi SHIBATA) via ruby-core
2024-11-08 3:58 ` [ruby-core:119831] " shioimm (Misaki Shioi) via ruby-core
2024-11-08 4:32 ` [ruby-core:119833] " hsbt (Hiroshi SHIBATA) via ruby-core
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).