[前][次][番号順一覧][スレッド一覧]

ruby-changes:66471

From: Samuel <ko1@a...>
Date: Mon, 14 Jun 2021 13:21:30 +0900 (JST)
Subject: [ruby-changes:66471] 2792acc8f2 (master): Add scheduler hook `Addrinfo.getaddrinfo`. (#4375)

https://git.ruby-lang.org/ruby.git/commit/?id=2792acc8f2

From 2792acc8f29c6ee1d04b57b7b70d43519a0ceda8 Mon Sep 17 00:00:00 2001
From: Samuel Williams <samuel.williams@o...>
Date: Mon, 14 Jun 2021 16:21:08 +1200
Subject: Add scheduler hook `Addrinfo.getaddrinfo`. (#4375)

Co-authored-by: Bruno Sutic <code@b...>
---
 doc/fiber.md                       |   7 +
 ext/socket/depend                  | 435 +++++++++++++++++++------------------
 ext/socket/raddrinfo.c             | 125 ++++++++---
 ext/socket/rubysocket.h            |   2 +-
 ext/socket/socket.c                |  32 +--
 include/ruby/fiber/scheduler.h     |   2 +
 scheduler.c                        |  14 ++
 test/fiber/scheduler.rb            |   6 +
 test/fiber/test_address_resolve.rb | 281 ++++++++++++++++++++++++
 9 files changed, 626 insertions(+), 278 deletions(-)
 create mode 100644 test/fiber/test_address_resolve.rb

diff --git a/doc/fiber.md b/doc/fiber.md
index 840bebd..9baab4e 100644
--- a/doc/fiber.md
+++ b/doc/fiber.md
@@ -90,6 +90,13 @@ class Scheduler https://github.com/ruby/ruby/blob/trunk/doc/fiber.md#L90
   def timeout_after(duration, klass, *arguments, &block)
   end
 
+  # Resolve hostname to an array of IP addresses.
+  # This hook is optional.
+  # @parameter hostname [String] Example: "www.ruby-lang.org".
+  # @returns [Array] An array of IPv4 and/or IPv6 address strings that the hostname resolves to.
+  def address_resolve(hostname)
+  end
+
   # Block the calling fiber.
   # @parameter blocker [Object] What we are waiting on, informational only.
   # @parameter timeout [Numeric | Nil] The amount of time to wait for in seconds.
diff --git a/ext/socket/depend b/ext/socket/depend
index 4997df1..7538345 100644
--- a/ext/socket/depend
+++ b/ext/socket/depend
@@ -13,6 +13,21 @@ constdefs.c: constdefs.h https://github.com/ruby/ruby/blob/trunk/ext/socket/depend#L13
 ancdata.o: $(RUBY_EXTCONF_H)
 ancdata.o: $(arch_hdrdir)/ruby/config.h
 ancdata.o: $(hdrdir)/ruby.h
+ancdata.o: $(hdrdir)/ruby/assert.h
+ancdata.o: $(hdrdir)/ruby/backward.h
+ancdata.o: $(hdrdir)/ruby/backward/2/assume.h
+ancdata.o: $(hdrdir)/ruby/backward/2/attributes.h
+ancdata.o: $(hdrdir)/ruby/backward/2/bool.h
+ancdata.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h
+ancdata.o: $(hdrdir)/ruby/backward/2/inttypes.h
+ancdata.o: $(hdrdir)/ruby/backward/2/limits.h
+ancdata.o: $(hdrdir)/ruby/backward/2/long_long.h
+ancdata.o: $(hdrdir)/ruby/backward/2/stdalign.h
+ancdata.o: $(hdrdir)/ruby/backward/2/stdarg.h
+ancdata.o: $(hdrdir)/ruby/defines.h
+ancdata.o: $(hdrdir)/ruby/encoding.h
+ancdata.o: $(hdrdir)/ruby/fiber/scheduler.h
+ancdata.o: $(hdrdir)/ruby/intern.h
 ancdata.o: $(hdrdir)/ruby/internal/anyargs.h
 ancdata.o: $(hdrdir)/ruby/internal/arithmetic.h
 ancdata.o: $(hdrdir)/ruby/internal/arithmetic/char.h
@@ -152,20 +167,6 @@ ancdata.o: $(hdrdir)/ruby/internal/value_type.h https://github.com/ruby/ruby/blob/trunk/ext/socket/depend#L167
 ancdata.o: $(hdrdir)/ruby/internal/variable.h
 ancdata.o: $(hdrdir)/ruby/internal/warning_push.h
 ancdata.o: $(hdrdir)/ruby/internal/xmalloc.h
-ancdata.o: $(hdrdir)/ruby/assert.h
-ancdata.o: $(hdrdir)/ruby/backward.h
-ancdata.o: $(hdrdir)/ruby/backward/2/assume.h
-ancdata.o: $(hdrdir)/ruby/backward/2/attributes.h
-ancdata.o: $(hdrdir)/ruby/backward/2/bool.h
-ancdata.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h
-ancdata.o: $(hdrdir)/ruby/backward/2/inttypes.h
-ancdata.o: $(hdrdir)/ruby/backward/2/limits.h
-ancdata.o: $(hdrdir)/ruby/backward/2/long_long.h
-ancdata.o: $(hdrdir)/ruby/backward/2/stdalign.h
-ancdata.o: $(hdrdir)/ruby/backward/2/stdarg.h
-ancdata.o: $(hdrdir)/ruby/defines.h
-ancdata.o: $(hdrdir)/ruby/encoding.h
-ancdata.o: $(hdrdir)/ruby/intern.h
 ancdata.o: $(hdrdir)/ruby/io.h
 ancdata.o: $(hdrdir)/ruby/missing.h
 ancdata.o: $(hdrdir)/ruby/onigmo.h
@@ -194,6 +195,21 @@ ancdata.o: sockport.h https://github.com/ruby/ruby/blob/trunk/ext/socket/depend#L195
 basicsocket.o: $(RUBY_EXTCONF_H)
 basicsocket.o: $(arch_hdrdir)/ruby/config.h
 basicsocket.o: $(hdrdir)/ruby.h
+basicsocket.o: $(hdrdir)/ruby/assert.h
+basicsocket.o: $(hdrdir)/ruby/backward.h
+basicsocket.o: $(hdrdir)/ruby/backward/2/assume.h
+basicsocket.o: $(hdrdir)/ruby/backward/2/attributes.h
+basicsocket.o: $(hdrdir)/ruby/backward/2/bool.h
+basicsocket.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h
+basicsocket.o: $(hdrdir)/ruby/backward/2/inttypes.h
+basicsocket.o: $(hdrdir)/ruby/backward/2/limits.h
+basicsocket.o: $(hdrdir)/ruby/backward/2/long_long.h
+basicsocket.o: $(hdrdir)/ruby/backward/2/stdalign.h
+basicsocket.o: $(hdrdir)/ruby/backward/2/stdarg.h
+basicsocket.o: $(hdrdir)/ruby/defines.h
+basicsocket.o: $(hdrdir)/ruby/encoding.h
+basicsocket.o: $(hdrdir)/ruby/fiber/scheduler.h
+basicsocket.o: $(hdrdir)/ruby/intern.h
 basicsocket.o: $(hdrdir)/ruby/internal/anyargs.h
 basicsocket.o: $(hdrdir)/ruby/internal/arithmetic.h
 basicsocket.o: $(hdrdir)/ruby/internal/arithmetic/char.h
@@ -333,20 +349,6 @@ basicsocket.o: $(hdrdir)/ruby/internal/value_type.h https://github.com/ruby/ruby/blob/trunk/ext/socket/depend#L349
 basicsocket.o: $(hdrdir)/ruby/internal/variable.h
 basicsocket.o: $(hdrdir)/ruby/internal/warning_push.h
 basicsocket.o: $(hdrdir)/ruby/internal/xmalloc.h
-basicsocket.o: $(hdrdir)/ruby/assert.h
-basicsocket.o: $(hdrdir)/ruby/backward.h
-basicsocket.o: $(hdrdir)/ruby/backward/2/assume.h
-basicsocket.o: $(hdrdir)/ruby/backward/2/attributes.h
-basicsocket.o: $(hdrdir)/ruby/backward/2/bool.h
-basicsocket.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h
-basicsocket.o: $(hdrdir)/ruby/backward/2/inttypes.h
-basicsocket.o: $(hdrdir)/ruby/backward/2/limits.h
-basicsocket.o: $(hdrdir)/ruby/backward/2/long_long.h
-basicsocket.o: $(hdrdir)/ruby/backward/2/stdalign.h
-basicsocket.o: $(hdrdir)/ruby/backward/2/stdarg.h
-basicsocket.o: $(hdrdir)/ruby/defines.h
-basicsocket.o: $(hdrdir)/ruby/encoding.h
-basicsocket.o: $(hdrdir)/ruby/intern.h
 basicsocket.o: $(hdrdir)/ruby/io.h
 basicsocket.o: $(hdrdir)/ruby/missing.h
 basicsocket.o: $(hdrdir)/ruby/onigmo.h
@@ -375,6 +377,21 @@ basicsocket.o: sockport.h https://github.com/ruby/ruby/blob/trunk/ext/socket/depend#L377
 constants.o: $(RUBY_EXTCONF_H)
 constants.o: $(arch_hdrdir)/ruby/config.h
 constants.o: $(hdrdir)/ruby.h
+constants.o: $(hdrdir)/ruby/assert.h
+constants.o: $(hdrdir)/ruby/backward.h
+constants.o: $(hdrdir)/ruby/backward/2/assume.h
+constants.o: $(hdrdir)/ruby/backward/2/attributes.h
+constants.o: $(hdrdir)/ruby/backward/2/bool.h
+constants.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h
+constants.o: $(hdrdir)/ruby/backward/2/inttypes.h
+constants.o: $(hdrdir)/ruby/backward/2/limits.h
+constants.o: $(hdrdir)/ruby/backward/2/long_long.h
+constants.o: $(hdrdir)/ruby/backward/2/stdalign.h
+constants.o: $(hdrdir)/ruby/backward/2/stdarg.h
+constants.o: $(hdrdir)/ruby/defines.h
+constants.o: $(hdrdir)/ruby/encoding.h
+constants.o: $(hdrdir)/ruby/fiber/scheduler.h
+constants.o: $(hdrdir)/ruby/intern.h
 constants.o: $(hdrdir)/ruby/internal/anyargs.h
 constants.o: $(hdrdir)/ruby/internal/arithmetic.h
 constants.o: $(hdrdir)/ruby/internal/arithmetic/char.h
@@ -514,20 +531,6 @@ constants.o: $(hdrdir)/ruby/internal/value_type.h https://github.com/ruby/ruby/blob/trunk/ext/socket/depend#L531
 constants.o: $(hdrdir)/ruby/internal/variable.h
 constants.o: $(hdrdir)/ruby/internal/warning_push.h
 constants.o: $(hdrdir)/ruby/internal/xmalloc.h
-constants.o: $(hdrdir)/ruby/assert.h
-constants.o: $(hdrdir)/ruby/backward.h
-constants.o: $(hdrdir)/ruby/backward/2/assume.h
-constants.o: $(hdrdir)/ruby/backward/2/attributes.h
-constants.o: $(hdrdir)/ruby/backward/2/bool.h
-constants.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h
-constants.o: $(hdrdir)/ruby/backward/2/inttypes.h
-constants.o: $(hdrdir)/ruby/backward/2/limits.h
-constants.o: $(hdrdir)/ruby/backward/2/long_long.h
-constants.o: $(hdrdir)/ruby/backward/2/stdalign.h
-constants.o: $(hdrdir)/ruby/backward/2/stdarg.h
-constants.o: $(hdrdir)/ruby/defines.h
-constants.o: $(hdrdir)/ruby/encoding.h
-constants.o: $(hdrdir)/ruby/intern.h
 constants.o: $(hdrdir)/ruby/io.h
 constants.o: $(hdrdir)/ruby/missing.h
 constants.o: $(hdrdir)/ruby/onigmo.h
@@ -557,6 +560,21 @@ constants.o: sockport.h https://github.com/ruby/ruby/blob/trunk/ext/socket/depend#L560
 ifaddr.o: $(RUBY_EXTCONF_H)
 ifaddr.o: $(arch_hdrdir)/ruby/config.h
 ifaddr.o: $(hdrdir)/ruby.h
+ifaddr.o: $(hdrdir)/ruby/assert.h
+ifaddr.o: $(hdrdir)/ruby/backward.h
+ifaddr.o: $(hdrdir)/ruby/backward/2/assume.h
+ifaddr.o: $(hdrdir)/ruby/backward/2/attributes.h
+ifaddr.o: $(hdrdir)/ruby/backward/2/bool.h
+ifaddr.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h
+ifaddr.o: $(hdrdir)/ruby/backward/2/inttypes.h
+ifaddr.o: $(hdrdir)/ruby/backward/2/limits.h
+ifaddr.o: $(hdrdir)/ruby/backward/2/long_long.h
+ifaddr.o: $(hdrdir)/ruby/backward/2/stdalign.h
+ifaddr.o: $(hdrdir)/ruby/backward/2/stdarg.h
+ifaddr.o: $(hdrdir)/ruby/defines.h
+ifaddr.o: $(hdrdir)/ruby/encoding.h
+ifaddr.o: $(hdrdir)/ruby/fiber/scheduler.h
+ifaddr.o: $(hdrdir)/ruby/intern.h
 ifaddr.o: $(hdrdir)/ruby/internal/anyargs.h
 ifaddr.o: $(hdrdir)/ruby/internal/arithmetic.h
 ifaddr.o: $(hdrdir)/ruby/internal/arithmetic/char.h
@@ -696,20 +714,6 @@ ifaddr.o: $(hdrdir)/ruby/internal/value_type.h https://github.com/ruby/ruby/blob/trunk/ext/socket/depend#L714
 ifaddr.o: $(hdrdir)/ruby/internal/variable.h
 ifaddr.o: $(hdrdir)/ruby/internal/warning_push.h
 ifaddr.o: $(hdrdir)/ruby/internal/xmalloc.h
-ifaddr.o: $(hdrdir)/ruby/assert.h
-ifaddr.o: $(hdrdir)/ruby/backward.h
-ifaddr.o: $(hdrdir)/ruby/backward/2/assume.h
-ifaddr.o: $(hdrdir)/ruby/backward/2/attributes.h
-ifaddr.o: $(hdrdir)/ruby/backward/2/bool.h
-ifaddr.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h
-ifaddr.o: $(hdrdir)/ruby/backward/2/inttypes.h
-ifaddr.o: $(hdrdir)/ruby/backward/2/limits.h
-ifaddr.o: $(hdrdir)/ruby/backward/2/long_long.h
-ifaddr.o: $(hdrdir)/ruby/backward/2/stdalign.h
-ifaddr.o: $(hdrdir)/ruby/backward/2/stdarg.h
-ifaddr.o: $(hdrdir)/ruby/defines.h
-ifaddr.o: $(hdrdir)/ruby/encoding.h
-ifaddr.o: $(hdrdir)/ruby/intern.h
 ifad (... truncated)

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]