summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-12-15[ruby/erb] Version 6.0.1Takashi Kokubun
https://github.com/ruby/erb/commit/bbde68fcd5
2025-12-15[ruby/erb] Freeze ERB::Compiler::TrimScanner::ERB_STAGDaisuke Aritomo
(https://github.com/ruby/erb/pull/100) For Ractor compatibility. https://github.com/ruby/erb/commit/43f0876595
2025-12-15ZJIT: Add iongraph-generating Ruby script (#15466)Max Bernstein
Run like so: $ ../tool/zjit_iongraph.rb ../build-dev/miniruby --zjit-call-threshold=2 tmp/ghbug.rb false false tmp/ghbug.rb:3:in 'Object#doit': this shouldnt ever be nil (RuntimeError) from tmp/ghbug.rb:10:in '<main>' W, [2025-12-09T11:00:32.070382 #67400] WARN -- : Command failed with exit status 1 zjit_iongraph_67405.html $ Then open zjit_iongraph_67405.html with your browser.
2025-12-15Fix Socket.tcp cleanup after Thread#kill (#15131)Luke Gruber
Socket.tcp launches ruby threads to resolve hostnames, and those threads communicate through a queue implemented with `IO.pipe`. When the thread that called `Socket.tcp` is killed, the resolver threads still try to communicate through the pipe even though it may be closed. The method `Socket.tcp_with_fast_fallback` tries to deal with this by killing the threads in an ensure block, and then closing the pipe. However, calling `Thread#kill` is not a blocking operation, it only sets a flag on the thread telling it to raise during the next interrupt. The thread needs to be joined to ensure it is terminated. The following script demonstrates the issue: ```ruby require "socket" ts = [] 5.times do ts << Thread.new do loop do 1_000.times do |i| puts "#{i}" t = Thread.new do Socket.tcp("ruby-lang.org", 80) end sleep 0.001 t.kill end end end end ts.each(&:join) ``` output: ``` /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'IO#write': closed stream (IOError) from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'IO#putc' from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'block in Socket::HostnameResolutionResult#add' from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1017:in 'Thread::Mutex#synchronize' from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1017:in 'Socket::HostnameResolutionResult#add' from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:980:in 'Socket.resolve_hostname' from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:719:in 'block (2 levels) in Socket.tcp_with_fast_fallback' /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'IO#write': closed stream (IOError) from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'IO#putc' from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1019:in 'block in Socket::HostnameResolutionResult#add' from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1017:in 'Thread::Mutex#synchronize' from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:1017:in 'Socket::HostnameResolutionResult#add' from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:978:in 'Socket.resolve_hostname' from /Users/luke/workspace/ruby-dev/ruby-build-debug/.ext/common/socket.rb:719:in 'block (2 levels) in Socket.tcp_with_fast_fallback' ```
2025-12-16[DOC] Update Set#inspect description in NEWSJeremy Evans
2025-12-15Define Array#detect as an alias for Array#findÉtienne Barrié
Otherwise Array#detect is Enumerable#detect while Array#find uses a different more performant implementation. [Feature #21678]
2025-12-15[ruby/prism] Unreference before destroying in call node in patternKevin Newton
https://github.com/ruby/prism/commit/609c80c91e
2025-12-15[ruby/prism] Escape error location is incorrect for some regexKevin Newton
When you have a regular expression that has a named capture that has an escape sequence in the named capture, and that escape sequence is a unicode escape sequence with an invalid surrogate pair, the error was attached to the owned string as opposed to a location on the shared source. https://github.com/ruby/prism/commit/793a7a6a0a
2025-12-15Add NEWS entry for Array#rfind and Array#findBenoit Daloze
2025-12-15Update default gems list at f0793731853c0e130f798e9dc5c736 [ci skip]git
2025-12-15[ruby/openssl] Ruby/OpenSSL 4.0.0Kazuki Yamaguchi
https://github.com/ruby/openssl/commit/5af1edab18
2025-12-15[ruby/openssl] ossl.c: improve docs for constants and methods under ::OpenSSLKazuki Yamaguchi
https://github.com/ruby/openssl/commit/b0de8ba9bd
2025-12-15[ruby/openssl] Freeze more constants for Ractor compatibilityKazuki Yamaguchi
https://github.com/ruby/openssl/commit/695126f582
2025-12-15Merge `root_box_data` into `root_box`Nobuyoshi Nakada
* Make invariant `root_box` an array consist of only `root_box_data`. * Remove the unnecessary initializer list that is just overwritten in `initialize_root_box()` and missing `classext_cow_classes`. * Shrink the scope using another local `root_box`. * Make the data type constants static.
2025-12-15[ruby/net-http] Refactor HTTPS testsKazuki Yamaguchi
This contains various improvements in tests for openssl integration: - Remove DHE parameters from test servers. OpenSSL is almost always compiled with ECC support nowadays and will prefer ECDHE over DHE. - Remove an outdated omission for a bug in OpenSSL 1.1.0h released in 2018. None of our CI systems use this specific OpenSSL version. - Use top-level return to skip tests if openssl is unavailable. - Refactor tests for Net::HTTP#verify_callback. https://github.com/ruby/net-http/commit/35c1745a26
2025-12-15Bump actions/upload-artifact from 5.0.0 to 6.0.0dependabot[bot]
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5.0.0 to 6.0.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
2025-12-14Bump msys2/setup-msys2 from 2.29.0 to 2.30.0dependabot[bot]
Bumps [msys2/setup-msys2](https://github.com/msys2/setup-msys2) from 2.29.0 to 2.30.0. - [Release notes](https://github.com/msys2/setup-msys2/releases) - [Changelog](https://github.com/msys2/setup-msys2/blob/main/CHANGELOG.md) - [Commits](https://github.com/msys2/setup-msys2/compare/fb197b72ce45fb24f17bf3f807a388985654d1f2...4f806de0a5a7294ffabaff804b38a9b435a73bda) --- updated-dependencies: - dependency-name: msys2/setup-msys2 dependency-version: 2.30.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
2025-12-14Bump actions/cache from 5.0.0 to 5.0.1dependabot[bot]
Bumps [actions/cache](https://github.com/actions/cache) from 5.0.0 to 5.0.1. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/a7833574556fa59680c1b7cb190c1735db73ebf0...9255dc7a253b0ccc959486e2bca901246202afeb) --- updated-dependencies: - dependency-name: actions/cache dependency-version: 5.0.1 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
2025-12-14[DOC] Remove doc/relinePeter Zhu
Reline has been moved to a bundled gem, so we don't need the docs anymore.
2025-12-15[ruby/rubygems] Write gem files atomicallyeileencodes
This change updates `write_binary` to use a new class, `AtomicFileWriter.open` to write the gem's files. This implementation is borrowed from Active Support's [`atomic_write`](https://github.com/rails/rails/blob/main/activesupport/lib/active_support/core_ext/file/atomic.rb). Atomic write will write the files to a temporary file and then once created, sets permissions and renames the file. If the file is corrupted - ie on failed download, an error occurs, or for some other reason, the real file will not be created. The changes made here make `verify_gz` obsolete, we don't need to verify it if we have successfully created the file atomically. If it exists, it is not corrupt. If it is corrupt, the file won't exist on disk. While writing tests for this functionality I replaced the `RemoteFetcher` stub with `FakeFetcher` except for where we really do need to overwrite the `RemoteFetcher`. The new test implementation is much clearer on what it's trying to accomplish versus the prior test implementation. https://github.com/ruby/rubygems/commit/0cd4b54291
2025-12-14[DOC] Fix link in MakeMakefileBurdetteLamar
2025-12-14[ruby/prism] Fix `sexp_processor` gem referenceEarlopain
It's https://rubygems.org/gems/sexp_processor, not https://rubygems.org/gems/sexp https://github.com/ruby/prism/commit/b8a00a5f15
2025-12-14[DOC] Fix backticks in Numeric#ceilPeter Zhu
2025-12-14[DOC] Fix backticks in Numeric#floorPeter Zhu
2025-12-14[ruby/prism] Only set location end when it is largerKevin Newton
https://github.com/ruby/prism/commit/65595d6c2c
2025-12-14[ruby/prism] Unreference the block node before destroying itKevin Newton
https://github.com/ruby/prism/commit/fc150b1588
2025-12-14[ruby/prism] Define RubyParser::SyntaxError directly and drop require for ↵Ryan Davis
ruby_parser. Had to add a require of sexp since that came in indirectly via ruby_parser. https://github.com/ruby/prism/commit/df677c324f
2025-12-14[ruby/openssl] pkcs7: raise OpenSSL::PKCS7::PKCS7Error in #initializeKazuki Yamaguchi
When d2i_PKCS7_bio() and PEM_read_bio_PKCS7() fail to decode the input, OpenSSL::PKCS7.new currently raises ArgumentError. The usual practice in ruby/openssl where an error originates from the underlying OpenSSL library is to raise OpenSSL::OpenSSLError. Raise OpenSSL::PKCS7::PKCS7Error instead for consistency with OpenSSL::PKCS7.read_smime and all other existing #initialize methods that handle DER/PEM-encoded inputs. https://github.com/ruby/openssl/commit/67a608ce53
2025-12-14[ruby/openssl] x509cert: update doc for OpenSSL::X509::Certificate#==Kazuki Yamaguchi
Mention the underlying OpenSSL function. Add a note about the unreliable comparison when called on an incomplete object. Fixes https://github.com/ruby/openssl/issues/844 https://github.com/ruby/openssl/commit/736af5b3c7
2025-12-14Adjust indents [ci skip]Nobuyoshi Nakada
2025-12-14Update default gems list at 9e22037eb50d7abe6385901c9b0293 [ci skip]git
2025-12-14[ruby/io-console] bump up to 0.8.2Nobuyoshi Nakada
https://github.com/ruby/io-console/commit/fbc7e1f31f
2025-12-14ZJIT: Add a test for `--zjit-stats=<path>` optionNobuyoshi Nakada
Fix up ruby/ruby#15414, 29c29c2b7e972359ab83038c5dc27a7e53ae65c7
2025-12-14ZJIT: Fix tests about `--zjit-stats-quiet` optionNobuyoshi Nakada
The `--zjit-stats-quiet` and `--zjit-stats=quiet` options differ. The latter option, `=quiet`, does print stats to the file "quiet", but does not suppress output like yjit option `--yjit-stats=quiet`. Fix up ruby/ruby#15414, 29c29c2b7e972359ab83038c5dc27a7e53ae65c7
2025-12-14[Bug #21779] Do not export InitVM functionsNobuyoshi Nakada
Fix ruby/io-console#105.
2025-12-14[Bug #21779] Uniquify `InitVM` functions as well as `Init`Nobuyoshi Nakada
Avoid possible name conflict when `--with-static-linked-ext`.
2025-12-14Removed duplicate codeNobuyoshi Nakada
2025-12-14Run omnibus compilations without gitNobuyoshi Nakada
2025-12-14[Feature #20925] Skip infinite loop testNobuyoshi Nakada
2025-12-13Fix documentation of RB_PASS_CALLED_KEYWORDS in C APIBenoit Daloze
2025-12-13[ruby/openssl] ossl.c: implement OpenSSL::OpenSSLError#detailed_messageKazuki Yamaguchi
An OpenSSL function sometimes puts more than one error entry into the thread-local OpenSSL error queue. Currently, we use the highest-level entry for generating the exception message and discard the rest. Let ossl_make_error() capture all current OpenSSL error queue contents into OpenSSL::OpenSSLError#errors and extend OpenSSL::OpenSSLError#detailed_message to include the information. An example: $ ruby -Ilib -ropenssl -e'OpenSSL::X509::ExtensionFactory.new.create_ext("a", "b")' -e:1:in 'OpenSSL::X509::ExtensionFactory#create_ext': a = b: error in extension (name=a, value=b) (OpenSSL::X509::ExtensionError) OpenSSL error queue reported 2 errors: error:11000082:X509 V3 routines:do_ext_nconf:unknown extension name error:11000080:X509 V3 routines:X509V3_EXT_nconf_int:error in extension (name=a, value=b) from -e:1:in '<main>' https://github.com/ruby/openssl/commit/d28f7a9a13
2025-12-14Export `GIT`Nobuyoshi Nakada
Propagate the value given with `--with-git` configure option to tool/lib/vcs.rb.
2025-12-13Enumerator.produce accepts an optional `size` keyword argumentAkinori Musha
When not specified, the size is unknown (`nil`). Previously, the size was always `Float::INFINITY` and not specifiable. [Feature #21701]
2025-12-13[ruby/prism] Prevent an infinite loop parsing a capture nameSteven Johnstone
Fixes https://github.com/ruby/prism/pull/3729. https://github.com/ruby/prism/commit/6e5347803c
2025-12-13[ruby/io-console] strip trailing spaces [ci skip]Nobuyoshi Nakada
https://github.com/ruby/io-console/commit/379e7c17ed
2025-12-13[ruby/io-console] console_cursor_pos respects scroll position on windowsYO4
https://github.com/ruby/io-console/commit/ae33785820
2025-12-13[ruby/io-console] console_goto respects scroll position on windowsYO4
https://github.com/ruby/io-console/commit/d2a6c69697
2025-12-13[ruby/io-console] avoid jumping scroll position when winsize changedYO4
On windows, IO.console.winsize= now respects the current view area and screen buffer size. https://github.com/ruby/io-console/commit/817aa65ea3
2025-12-13[ruby/io-console] Remove useless rb_check_arity() callNobuyoshi Nakada
https://github.com/ruby/io-console/commit/df444b93f1
2025-12-13Remove useless rb_check_arity() callsShugo Maeda