summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-05-01Use windows-2022 image for test-bundled-gemsHiroshi SHIBATA
rake test is broken with system ruby https://github.com/ruby/ruby/actions/runs/14768933827/job/41465573970?pr=13221
2025-05-01Bump up the latest version of actionsHiroshi SHIBATA
2025-05-01ubuntu-20.04 is retiredHiroshi SHIBATA
2025-05-01Rename matrix.vs to matrix.os. It's not Visual Studio version nowHiroshi SHIBATA
2025-05-01Use windows-2022 and windows-2025 because windows-2019 is EOL at June 2025Hiroshi SHIBATA
2025-04-30Supply LIBCLANG_PATH for clang-14 for yjit-bindgenAlan Wu
Or else it gets confused from all the different versions of LLVM in the image.
2025-04-30Use clang-14 to match the libclang version bindgen finds by defaultAlan Wu
2025-04-30sd ubuntu-20.04 ubuntu-22.04 .github/workflows/*Hiroshi SHIBATA
2025-04-30Bump net-imap to v0.5.8 for Ruby 3.4 (CVE-2025-43857)nick evans
v0.5.7 addresses CVE-2025-43857 (GHSA-j3g3-5qv5-52mj). v0.5.8 fixes some bugs in `Net::IMAP::SequenceSet`.
2025-04-28YJIT: Fix potential infinite loop when OOM (GH-13186)Rian McGuire
Avoid generating an infinite loop in the case where: 1. Block `first` is adjacent to block `second`, and the branch from `first` to `second` is a fallthrough, and 2. Block `second` immediately exits to the interpreter, and 3. Block `second` is invalidated and YJIT is OOM While pondering how to fix this, I think I've stumbled on another related edge case: 1. Block `incoming_one` and `incoming_two` both branch to block `second`. Block `incoming_one` has a fallthrough 2. Block `second` immediately exits to the interpreter (so it starts with its exit) 3. When Block `second` is invalidated, the incoming fallthrough branch from `incoming_one` might be rewritten first, which overwrites the start of block `second` with a jump to a new branch stub. 4. YJIT runs of out memory 5. The incoming branch from `incoming_two` is then rewritten, but because we're OOM we can't generate a new stub, so we use `second`'s exit as the branch target. However `second`'s exit was already overwritten with a jump to the branch stub for `incoming_one`, so `incoming_two` will end up jumping to `incoming_one`'s branch stub. Backport [Bug #21257]
2025-04-14v3.4.3v3_4_3Takashi Kokubun
2025-04-14Revert "merge revision(s) 052794bfe1970e90f4f4f9e37fc362dd27903a8d: ↵Takashi Kokubun
[Backport #21197]" This reverts commit e630a0f7ae909dafe2e1dbc47baf90cd795b4a5f.
2025-04-14merge revision(s) 0d6263bd416338a339651fb97fe4d62701704c4b: [Backport #21220]Takashi Kokubun
Fix coverage measurement for negative line numbers Fixes [Bug #21220] Co-Authored-By: Mike Bourgeous <mike@mikebourgeous.com> Co-Authored-By: Jean Boussier <jean.boussier@gmail.com>
2025-04-14merge revision(s) 3a7b9ca93b91dcc086b9ac8b9957e59268f9493b: [Backport #21217]Takashi Kokubun
Fix `Integer.sqrt` to never exceed actual value `Integer.sqrt` uses `sqrt(3)` from libm for small values. This method must return a value less than or equal to the actual integer square root, but libm's sqrt does not always guarantee that. This change corrects that by decrementing the result if necessary. Fixes [Bug #21217]
2025-04-14merge revision(s) f27ed98effff9891d28edc7119d45811bcedd510: [Backport #21183]Takashi Kokubun
[ruby/prism] Freeze `Prism::VERSION` Closes https://github.com/ruby/prism/pull/3422 https://github.com/ruby/prism/commit/b488a84253
2025-04-14merge revision(s) 052794bfe1970e90f4f4f9e37fc362dd27903a8d: [Backport #21197]Takashi Kokubun
[ruby/prism] Accept a newline after the defined? keyword [Bug #21197] https://github.com/ruby/prism/commit/22be955ce9
2025-04-09Test for the crashNobuyoshi Nakada
2025-04-09Fix crash in TCPSocket.openLuke Jahnke
Fix segfault crash observable with TCPSocket.open(nil, nil)
2025-04-08Merge RubyGems-3.6.7 and Bundler-2.6.7Hiroshi SHIBATA
2025-04-08Merge RubyGems-3.6.6 and Bundler-2.6.6Hiroshi SHIBATA
2025-04-03Use EnvUtil.apply_timeout_scaleHiroshi SHIBATA
2025-04-03Extend open_timeout for test failure on s390xHiroshi SHIBATA
https://rubyci.s3.amazonaws.com/s390x/ruby-master/log/20250403T060004Z.fail.html.gz
2025-04-02Picking test fix from ↵Hiroshi SHIBATA
https://github.com/ruby/ruby/commit/3d8a66568e8106b367665d716e0d3c8c8208aa07 The original change is https://github.com/ruby/ruby/commit/d78ff6a767ca813ac5fa178dd7611f20a993c191
2025-04-03Enforce to use CMake 3 because CMake 4 is not compatible to build libyaml ↵Hiroshi SHIBATA
via vcpkg
2025-04-02Improve backtrace of errors raised by `Socket.tcp_with_fast_fallback`Jean Boussier
[Bug #21211] Socket errors raised from background threads are hard to track down because their backtrace starts from the spawned thread. To solve this we can raise a new error with the old one as `cause`.
2025-04-02[rubygems/rubygems] Bump up minimum required version for cmake 4Hiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/3e77caeddf
2025-03-27[Backport #21141] [DOC] Refine description of `Time#utc?`Nobuyoshi Nakada
2025-03-27[Backport #21141] [DOC] Clarify what time is in UTCNobuyoshi Nakada
2025-03-27FCALL shouldn't be forwarded from callerAaron Patterson
When we forward an FCALL (a method call with an implicit self), we shouldn't forward the FCALL flag because it ignores method visibility checks. This patch removes the FCALL flag from callers. [Bug #21196]
2025-03-27Fix handling of `error`/`errno` in `io_internal_wait`. (#12961)Samuel Williams
[Bug #21195]
2025-03-24[rubygems/rubygems] Support git 2.49David Rodríguez
One error message that we parse is now slightly different. https://github.com/rubygems/rubygems/commit/758528791d
2025-03-20[Bug #21094] Update nested module names when setting temporary nameNobuyoshi Nakada
[Backport #21094]
2025-03-20[Bug #21186] multibyte char literal should be a single letter wordNobuyoshi Nakada
[Backport #21186]
2025-03-14Push a real iseq in rb_vm_push_frame_fname()Alan Wu
Previously, vm_make_env_each() (used during proc creation and for the debug inspector C API) picked up the non-GC-allocated iseq that rb_vm_push_frame_fname() creates, which led to a SEGV when the GC tried to mark the non GC object. Put a real iseq imemo instead. Speed should be about the same since the old code also did a imemo allocation and a malloc allocation. Real iseq allows ironing out the special-casing of dummy frames in rb_execution_context_mark() and rb_execution_context_update(). A check is added to RubyVM::ISeq#eval, though, to stop attempts to run dummy iseqs. [Bug #21180] Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
2025-03-14Have `ast` live longer in ISeq.compile_file to fix GC stress crashAlan Wu
Previously, live range of `ast_value` ended on the call right before rb_ast_dispose(), which led to premature collection and use-after-free. We observed this crashing on -O3, -DVM_CHECK_MODE, with GCC 11.4.0 on Ubuntu. Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
2025-03-13Check LoadError firstNobuyoshi Nakada
The message from dlerror is not our concern.
2025-03-13Added assertion strings with Xcode 16.3 betaHiroshi SHIBATA
2025-03-12[Bug #19841] Refine error on marshaling recursive USERDEFNobuyoshi Nakada
2025-03-11Fix `Socket.tcp_with_fast_fallback` to be usable from a RactorJean Boussier
[Bug #21179] ``` socket.rb:1046:in 'Socket::HostnameResolutionStore#get_addrinfo': can not access non-shareable objects in constant Socket::HostnameResolutionStore::PRIORITY_ON_V6 by non-main ractor. (Ractor::IsolationError) from socket.rb:724:in 'block in Socket.tcp_with_fast_fallback' from socket.rb:720:in 'Socket.tcp_with_fast_fallback' ```
2025-03-10RUBY_FREE_AT_EXIT does not work when error in -rPeter Zhu
[Bug #21173] When loading a file using the command line -r, it is processed before RUBY_FREE_AT_EXIT is checked. So if the loaded file raises an error, it will cause memory to not be freed with RUBY_FREE_AT_EXIT. For example `ruby -rtest.rb -e ""` will report a large amount of memory leaks if `test.rb` raises.
2025-03-10[Bug #21163] Fix hexadecimal float conversionNobuyoshi Nakada
2025-03-06Fix a race condition with interned strings sweeping.Jean Boussier
[Bug #21172] This fixes a rare CI failure. The timeline of the race condition is: - A `"foo" oid=1` string is interned. - `"foo" oid=1` is no longer referenced and will be swept in the future. - Another `"foo" oid=2` string is interned. - `register_fstring` finds `"foo" oid=1`, but since it is about to be swept, removes it from `fstring_table` and insert `"foo" oid=2` instead. - `"foo" oid=1` is swept, since it has the `RSTRING_FSTR` flag, a `st_delete` is issued in `fstring_table` which removes `"foo" oid=2`. I don't know how to reproduce this bug consistently in a single test case.
2025-03-05Replace tombstone when converting AR to ST hashJohn Hawthorn
[Bug #21170] st_table reserves -1 as a special hash value to indicate that an entry has been deleted. So that that's a valid value to be returned from the hash function, do_hash replaces -1 with 0 so that it is not mistaken for the sentinel. Previously, when upgrading an AR table to an ST table, rb_st_add_direct_with_hash was used which did not perform the same conversion, this could lead to a hash in a broken state where one if its entries which was supposed to exist being marked as a tombstone. The hash could then become further corrupted when the ST table required resizing as the falsely tombstoned entry would be skipped but it would be counted in num entries, leading to an uninitialized entry at index 15. In most cases this will be really rare, unless using a very poorly implemented custom hash function. This also adds two debug assertions, one that st_add_direct_with_hash does not receive the reserved hash value, and a second in rebuild_table_with, which ensures that after we rebuild/compact a table it contains the expected number of elements. Co-authored-by: Alan Wu <alanwu@ruby-lang.org>
2025-03-05yjit.rb: Fix parameter name in documentationa5-stable
2025-03-04[Bug #21144] Win32: Use Windows time zone ID if TZ is not setNobuyoshi Nakada
If the TZ environment variable is not set, the time zone names retrieved from the system are localized for UI display and may vary across editions and language packs for the same time zone. Use the time zone IDs that are invariant across environments instead.
2025-03-03[ruby/prism] Use a locale-insensitive version of tolowerJean Boussier
[Bug #21161] The `tolower` function provided by the libc is locale dependent and can behave in ways you wouldn't expect for some value of `LC_CTYPE`. https://github.com/ruby/prism/commit/e3488256b4 Co-Authored-By: Nobuyoshi Nakada <nobu@ruby-lang.org>
2025-03-03[Bug #21159] module names should not be modifiableNobuyoshi Nakada
2025-03-03[Feature #19521] Test for `Module#set_temporary_name`Nobuyoshi Nakada
2025-03-03Ensure IO.copy_stream buffer is an independent stringJeremy Evans
Otherwise, changes to the buffer by the destination write method could result in data changing for supposedly independent strings. Fixes [Bug #21131]
2025-03-03[Bug #21030] Fix step for non-numeric rangeNobuyoshi Nakada
When the end points of an inclusive range equal, `Range#step` should yields the element once.