<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/ext, branch v3_4_9</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>Bump zlib version to 3.2.3.</title>
<updated>2026-03-07T05:50:06+00:00</updated>
<author>
<name>nagachika</name>
<email>nagachika@ruby-lang.org</email>
</author>
<published>2026-03-07T05:13:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=3e9494c70bb7b23a5982e8b21087938e8a753b91'/>
<id>3e9494c70bb7b23a5982e8b21087938e8a753b91</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>objspace_dump: Skip invalid CME when dumping CCs</title>
<updated>2026-03-07T05:17:15+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2026-02-10T02:39:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=153fa85994f3f06c93e2b10726c98b6f3b824225'/>
<id>153fa85994f3f06c93e2b10726c98b6f3b824225</id>
<content type='text'>
When a CC is invalidated only the klass field is set to 0. After it's
invalidated it isn't safe to access the CME, as it may have been freed.

I made a similar change in Ruby 4.0 in
640a2f1dc77c0ecf226dbd71cf7a1eb876a1f037, but assumed it was due to the
changes we'd made to callcaches making klass a weak-reference.

Co-authored-by: Christian Bruckmayer &lt;christian.bruckmayer@shopify.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When a CC is invalidated only the klass field is set to 0. After it's
invalidated it isn't safe to access the CME, as it may have been freed.

I made a similar change in Ruby 4.0 in
640a2f1dc77c0ecf226dbd71cf7a1eb876a1f037, but assumed it was due to the
changes we'd made to callcaches making klass a weak-reference.

Co-authored-by: Christian Bruckmayer &lt;christian.bruckmayer@shopify.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) bc2a8a002a6c41fc1b28e02e15e2fb2b72d1b66e, c26057ebafb23b063190d31d5b4d19a0e0a1306c: [Backport #21779]</title>
<updated>2025-12-16T23:53:03+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-12-16T23:53:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=252b718582baf5760a6db2efdb58b84a0bf3f47f'/>
<id>252b718582baf5760a6db2efdb58b84a0bf3f47f</id>
<content type='text'>
	[PATCH] [Bug #21779] Uniquify `InitVM` functions as well as `Init`

	Avoid possible name conflict when `--with-static-linked-ext`.

	[PATCH] [Bug #21779] Do not export InitVM functions

	Fix ruby/io-console#105.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[PATCH] [Bug #21779] Uniquify `InitVM` functions as well as `Init`

	Avoid possible name conflict when `--with-static-linked-ext`.

	[PATCH] [Bug #21779] Do not export InitVM functions

	Fix ruby/io-console#105.
</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) beb85e7eeee4163cd45b69645a60cdb942f72c05: [Backport #21705]</title>
<updated>2025-12-08T22:46:06+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-12-08T22:46:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=955decc1da6cd2441c24d22e8909a3e995973769'/>
<id>955decc1da6cd2441c24d22e8909a3e995973769</id>
<content type='text'>
	[PATCH] [Bug #21705] Fix segfaults on Windows

	It should check the type of the argument and coercion before
	converting the encoding.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[PATCH] [Bug #21705] Fix segfaults on Windows

	It should check the type of the argument and coercion before
	converting the encoding.
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid spawning thread for trivial getnameinfo calls</title>
<updated>2025-11-17T21:28:01+00:00</updated>
<author>
<name>John Hawthorn</name>
<email>john@hawthorn.email</email>
</author>
<published>2025-08-20T02:13:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=7482835d0b5c9f55662fb7c6586f456354e2b66e'/>
<id>7482835d0b5c9f55662fb7c6586f456354e2b66e</id>
<content type='text'>
When calling getnameinfo we spawn a thread because it may do a slow,
blocking reverse-DNS lookup. Spawning a thread is relatively fast (~20µs
on my Linux machine) but still an order of magnitude slower than when
getnameinfo is simply translating to a numeric IP or port, which, at
least in my tests on Linux, doesn't even make a syscall.

This commit adds a fast path for when reverse DNS isn't required: either
host isn't being fetched or NI_NUMERICHOST is set AND either the
service name isn't required or NI_NUMERICSERV is set. The service name
should only need to read /etc/services, which should be fast-ish, but
is still I/O so I kept the existing behaviour (it could be on a network
fs I guess).

I tested with:

    s = TCPSocket.open("www.ruby-lang.org", 80)
    500_000.times { Socket.unpack_sockaddr_in(s.getpeername) }

Before: 12.935s
After: 0.338s
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When calling getnameinfo we spawn a thread because it may do a slow,
blocking reverse-DNS lookup. Spawning a thread is relatively fast (~20µs
on my Linux machine) but still an order of magnitude slower than when
getnameinfo is simply translating to a numeric IP or port, which, at
least in my tests on Linux, doesn't even make a syscall.

This commit adds a fast path for when reverse DNS isn't required: either
host isn't being fetched or NI_NUMERICHOST is set AND either the
service name isn't required or NI_NUMERICSERV is set. The service name
should only need to read /etc/services, which should be fast-ish, but
is still I/O so I kept the existing behaviour (it could be on a network
fs I guess).

I tested with:

    s = TCPSocket.open("www.ruby-lang.org", 80)
    500_000.times { Socket.unpack_sockaddr_in(s.getpeername) }

Before: 12.935s
After: 0.338s
</pre>
</div>
</content>
</entry>
<entry>
<title>ext/socket: Set raddrinfo thread as detached before thread start (#15194)</title>
<updated>2025-11-14T19:48:40+00:00</updated>
<author>
<name>Luke Gruber</name>
<email>luke.gruber@shopify.com</email>
</author>
<published>2025-11-14T19:48:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9e4829699b544370dd3a83df3e2c6b9168c34159'/>
<id>9e4829699b544370dd3a83df3e2c6b9168c34159</id>
<content type='text'>
Backport of https://github.com/ruby/ruby/pull/15142

[Bug #21679]</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Backport of https://github.com/ruby/ruby/pull/15142

[Bug #21679]</pre>
</div>
</content>
</entry>
<entry>
<title>[Backport #21625] Allow io/wait methods with `IO#ungetc` in text mode</title>
<updated>2025-11-06T18:25:54+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2025-10-28T12:55:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a7eba5453934e778c5911a4b69d9c3b8fdf31a23'/>
<id>a7eba5453934e778c5911a4b69d9c3b8fdf31a23</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Update openssl gem to 3.3.1 for Ruby 3.4 (#14792)</title>
<updated>2025-10-09T14:32:47+00:00</updated>
<author>
<name>Bo Anderson</name>
<email>mail@boanderson.me</email>
</author>
<published>2025-10-09T14:32:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fce44db5eb7baf1ddd2238254c3cf617fcfd1112'/>
<id>fce44db5eb7baf1ddd2238254c3cf617fcfd1112</id>
<content type='text'>
Update openssl gem to 3.3.1

[Backport #21631]</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update openssl gem to 3.3.1

[Backport #21631]</pre>
</div>
</content>
</entry>
<entry>
<title>merge revision(s) 2bb6fe3854e2a4854bb89bfce4eaaea9d848fd1b: [Backport #21629]</title>
<updated>2025-10-08T23:50:58+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-10-08T23:50:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=18e176659e8afe402cab7d39972f2d56f2cf378f'/>
<id>18e176659e8afe402cab7d39972f2d56f2cf378f</id>
<content type='text'>
	[PATCH] [Bug #21629] Initialize `struct RString`

which appears to be missed in the previous commit for some reason.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
	[PATCH] [Bug #21629] Initialize `struct RString`

which appears to be missed in the previous commit for some reason.
</pre>
</div>
</content>
</entry>
<entry>
<title>[ruby/json] [ruby/json] Run `have_func` with the header providing the declarations</title>
<updated>2025-07-15T16:23:42+00:00</updated>
<author>
<name>Nobuyoshi Nakada</name>
<email>nobu@ruby-lang.org</email>
</author>
<published>2025-07-01T08:38:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=d2264185fad4f272a8cb5b9865fd3cd47e5e8291'/>
<id>d2264185fad4f272a8cb5b9865fd3cd47e5e8291</id>
<content type='text'>
https://github.com/ruby/json/commit/95fb084027

https://github.com/ruby/json/commit/9d080765cc
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
https://github.com/ruby/json/commit/95fb084027

https://github.com/ruby/json/commit/9d080765cc
</pre>
</div>
</content>
</entry>
</feed>
