summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-12-18Co-authored-by: Luke Gruber <luke.gru@gmail.com>John Hawthorn
Co-authored-by: Alan Wu <alanwu@ruby-lang.org> YJIT: Support calling bmethods in Ractors Co-authored-by: Luke Gruber <luke.gru@gmail.com> Suggestion from Alan
2025-12-18YJIT: Support calling bmethods in RactorsJohn Hawthorn
Co-authored-by: Luke Gruber <luke.gru@gmail.com>
2025-12-18Store ractor_id directly on ECJohn Hawthorn
This is easier to access as ec->ractor_id instead of pointer-chasing through ec->thread->ractor->ractor_id Co-authored-by: Luke Gruber <luke.gru@gmail.com>
2025-12-18Check for NULL fields in TYPEDDATA memsize functions (#15633)Luke Gruber
Some TYPEDDATA objects allocate struct fields using the GC right after they get created, and in that case the VM can try to perform a GC and join a barrier if another ractor started one. If we're dumping the heap in another ractor, this acquires a barrier and it will call the `rb_obj_memsize` function on this object. We can't assume these struct fields are non-null. This also goes for C extensions, which may cause problems with heap dumping from a ractor if their memsize functions aren't coded correctly to check for NULL fields. Because dumping the heap from a ractor is likely a rare scenario and it has only recently been introduced, we'll have to see how this works in practice and if it causes bugs.
2025-12-18[DOC] small improvements to ractor class docs (#15584)Luke Gruber
* Ractor.yield no longer exists * Ractor.shareable_proc returns a copy of the given proc * Improve wording for monitoring/unmonitoring ports
2025-12-18thread_sync.c: rename mutex_trylock internal functionJean Boussier
[Bug #21793] To fix a naming conflict on solaris.
2025-12-18thread_sync.c: declare queue_data_type as parent of szqueue_data_type.Jean Boussier
Allows to remove some duplicated code like szqueue_length, etc.
2025-12-18thread_sync.c: simplify `check_array`Jean Boussier
If the queue was allocated without calling initialize, `ary` will be `0`.
2025-12-18thread_sync.c: eliminate GET_EC() from queue_do_popJean Boussier
We receive the ec as argument, it's much cheaper to pass it around that to look it up again.
2025-12-18Fix env debug assertion failure w/ Ractors+JITsJohn Hawthorn
Previously when using a JIT and Ractors at the same time with debug assertions turned on this could rarely fail with: vm_core.h:1448: Assertion Failed: VM_ENV_FLAGS:FIXNUM_P(flags) When using Ractors, any time the VM lock is acquired, that may join a barrier as another Ractor initiates GC. This could be made to happen reliably by replacing the invalidation with a call to rb_gc(). This assertion failure happens because VM_STACK_ENV_WRITE(ep, 0, (VALUE)env); Is setting VM_ENV_DATA_INDEX_FLAGS to the environment, which is not a valid set of flags (it should be a fixnum). Although we update cfp->ep, rb_execution_context_mark will also mark the PREV_EP, and until the recursive calls to vm_make_env_each all finish the "next" ep may still be pointing to the stack env we've just escaped. I'm not completely sure why we need to store this on the stack - why is setting cfp->ep not enough? I'm also not sure why rb_execution_context_mark needs to mark the prev_ep.
2025-12-18Remove assertion in encoded_iseq_trace_instrument (#15616)Luke Gruber
`encoded_iseq_trace_instrument` is safe to call in a ractor if the iseq is new. In that case, the VM lock is not taken. This assertion was added in 4fb537b1ee28bb37dbe551ac65c279d436c756bc.
2025-12-18thread_sync: Mutex keep `rb_thread_t *` instead of `VALUE`Jean Boussier
We never need the actual thread object and this avoid any issue if the thread object is ever moved.
2025-12-18make rb_singleton_class ractor safe (#15591)Luke Gruber
Since singleton classes are created lazily, we need to make sure that we lock around their creation. Unfortunately, that means we need to lock around every shareable object's call to `singleton_class`, including classes and modules.
2025-12-18Bump RDoc to 7.0.1 (#15628)Stan Lo
This improves several enhancements to the Aliki theme. And since Aliki also became the default theme, we don't need to specify the generator name anymore.
2025-12-18Update default gems list at 0e85881e0cded6ec82ef105b5ff2d0 [ci skip]git
2025-12-18[ruby/delegate] v0.6.1Hiroshi SHIBATA
https://github.com/ruby/delegate/commit/90ffceb6d6
2025-12-18Reapply "Merge pull request #52 from ruby/revert-49"Hiroshi SHIBATA
This reverts commit 02e4b58b615d0dd83a6af5cd7c2b8861724011ee.
2025-12-18Revert "Allow use of DelegateClass in ractor"Hiroshi SHIBATA
This reverts commit 6e0f2b31f0f4a2a942f3c1daad1bb64852fe6815.
2025-12-18[ruby/delegate] v0.6.0Hiroshi SHIBATA
https://github.com/ruby/delegate/commit/aef34e8c8b
2025-12-18Allow use of DelegateClass in ractorLuke Gruber
Use `eval` instead of `define_method` when defining delegate methods for `DelegateClass`.
2025-12-18[ruby/delegate] Reapply "Merge pull request #46 from byroot/use-forward-send"Hiroshi SHIBATA
This reverts commit https://github.com/ruby/delegate/commit/fc2bd0498af0. https://github.com/ruby/delegate/commit/7d5c1e0842 Co-authored-by: Jean Boussier <byroot@ruby-lang.org>
2025-12-18[ruby/delegate] v0.5.0Hiroshi SHIBATA
https://github.com/ruby/delegate/commit/fa35b20eca
2025-12-18[ruby/delegate] Allow use of DelegateClass in ractorsLuke Gruber
Tempfile uses DelegateClass and Tempfile should be able to be used by different ractors. https://github.com/ruby/delegate/commit/cad194260b
2025-12-18RBOOL is unnecessary in C boolean contextNobuyoshi Nakada
Fix a `-Wint-in-bool-context` warning. ``` proc.c:688:33: warning: '?:' using integer constants in boolean context [-Wint-in-bool-context] 688 | if (RBOOL(get_local_variable_ptr(&env, idItImplicit, FALSE))) { ```
2025-12-18Bump github.com/microsoft/vcpkg from master to 2025.12.12dependabot[bot]
Bumps [github.com/microsoft/vcpkg](https://github.com/microsoft/vcpkg) from master to 2025.12.12. This release includes the previously tagged commit. - [Release notes](https://github.com/microsoft/vcpkg/releases) - [Commits](https://github.com/microsoft/vcpkg/compare/74e6536215718009aae747d86d84b78376bf9e09...84bab45d415d22042bd0b9081aea57f362da3f35) --- updated-dependencies: - dependency-name: github.com/microsoft/vcpkg dependency-version: 2025.12.12 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com>
2025-12-17[DOC] Use Arrays in examples for Array#findÉtienne Barrié
2025-12-18[DOC] Fix documents of `rb_intern_str` and so onNobuyoshi Nakada
* `rb_intern_str`: the argument must be `T_STRING`, no conversion. * `rb_intern_str`, `rb_check_id`, `rb_to_id`, `rb_check_symbol`: raise `EncodingError` unless the "name" argument is a valid string in its encoding.
2025-12-18[DOC] Re-fill the paragraphNobuyoshi Nakada
2025-12-18[DOC] Fix double-word typos in commentsv4.0.0-preview3Augustin Gottlieb
Found via `grep` for repeated words. * set.c: Fix "or or" * include/ruby/internal/symbol.h: Fix "is is" * include/ruby/internal/ctype.h: Fix "in in"
2025-12-17JITs: Pass down GNU make jobserver resources when appropriateAlan Wu
To fix warnings from rustc on e.g. Make 4.3, which is in Ubuntu 24.04: > warning: failed to connect to jobserver from environment variable
2025-12-17Adjust Set documentation (#15547)Victor Shepelev
2025-12-17Fix heap dump with ractor barrierLuke Gruber
When a ractor was being initialized and it would join the heap dump barrier when allocating its queue or its ports, the heap dump code calls `rb_obj_memsize` on the ractor and this function assumed `ports` was never NULL. We need to check for the NULL case in case the ractor is still being initialized. Hopefully other T_DATA objects don't suffer from the same issue, otherwise we could revert the ractor barrier during heap dump or not use `rb_obj_memsize` on T_DATA during the heap dump.
2025-12-17[DOC] Small changes to docs for ObjectSpace#each_object (#15564)Luke Gruber
Change example to use user-defined class instead of `Numeric`.
2025-12-17test_sync_default_gems.rb: Omit if git is v2.43 or olderTakashi Kokubun
2025-12-17test_commit_email.rb: Ensure #teardown doesn't failTakashi Kokubun
if test is omitted. Follow up c4e090def134f9b109991b74c027648564963763
2025-12-17Update bundled gems list as of 2025-12-17git
2025-12-18Update bundled bigdecimal and rbs (#15611)tomoya ishida
* Bundle rbs-3.10.0.pre.1 * Update rbs gem entry with commit hash Updated rbs entry to include commit hash. * Fix rbs entry in bundled_gems * Update rbs gem to version 3.10.0.pre.2 Updated rbs gem version from 3.10.0.pre.1 to 3.10.0.pre.2. * Update bundled bigdecimal to v4.0.1 --------- Co-authored-by: Soutaro Matsumoto <matsumoto@soutaro.com>
2025-12-17ObjectSpace.{dump,dump_all,dump_shapes} needs vm barrier. (#15569)Luke Gruber
This allows these methods to be called from ractors. Add new exported function `rb_vm_lock_with_barrier()` that requires users to include "vm_sync.h"
2025-12-17Improve NEWS.md for Socket (#15610)Misaki Shioi
2025-12-17[ruby/error_highlight] Show no message when failing to get caller/callee ↵Yusuke Endoh
snippets Even with Ruby 4.0, snippets is not always available, such as in irb by default. It would be better to just say nothing than to show a confusing message. https://github.com/ruby/error_highlight/commit/ef80ce73a1
2025-12-17Revert the default size of Enumerator::Producer to infinityAkinori Musha
[Bug #21780]
2025-12-17Update NEWS.md for Socket (#15608)Misaki Shioi
2025-12-17CI: Assume all C source files are UTF-8 nowNobuyoshi Nakada
2025-12-17win32: Set the source code charset to UTF-8Nobuyoshi Nakada
2025-12-17Rename to `struct rbimpl_size_overflow_tag`Nobuyoshi Nakada
This struct is used for addition not only for multiplication, so remove the word `mul`, and make the member names more descriptive.
2025-12-17Revert the override of Enumerator#to_set that performed size checksAkinori Musha
[Bug #21780]
2025-12-17Add host information to timeout error messages in `TCPSocket.new` and ↵Misaki Shioi
`Socket.tcp` (#15582) This change adds host information to the error messages shown when a timeout occurs while passing timeout options to `TCPSocket.new` or `Socket.tcp`, for improved usability. (When the `fast_fallback option` is enabled, there may be multiple possible destinations, so the host name is shown instead of an IP address.) As part of this change, the error messages in `Addrinfo.getaddrinfo` and `Addrinfo#connect_internal`, both of which are used by `Socket.tcp`, have also been improved in the same way.
2025-12-17Update NEWS.md for improvements of error backtraceYusuke Endoh
2025-12-17Update default gems list at 26447b3597ab95af7cc220c641a1bd [ci skip]git
2025-12-17[ruby/net-http] v0.9.1Hiroshi SHIBATA
https://github.com/ruby/net-http/commit/8cee86e939