| Age | Commit message (Collapse) | Author |
|
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
|
|
Co-authored-by: Luke Gruber <luke.gru@gmail.com>
|
|
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>
|
|
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.
|
|
* Ractor.yield no longer exists
* Ractor.shareable_proc returns a copy of the given proc
* Improve wording for monitoring/unmonitoring ports
|
|
[Bug #21793]
To fix a naming conflict on solaris.
|
|
Allows to remove some duplicated code like szqueue_length, etc.
|
|
If the queue was allocated without calling initialize,
`ary` will be `0`.
|
|
We receive the ec as argument, it's much cheaper to pass it
around that to look it up again.
|
|
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.
|
|
`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.
|
|
We never need the actual thread object and this avoid any issue
if the thread object is ever moved.
|
|
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.
|
|
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.
|
|
|
|
https://github.com/ruby/delegate/commit/90ffceb6d6
|
|
This reverts commit 02e4b58b615d0dd83a6af5cd7c2b8861724011ee.
|
|
This reverts commit 6e0f2b31f0f4a2a942f3c1daad1bb64852fe6815.
|
|
https://github.com/ruby/delegate/commit/aef34e8c8b
|
|
Use `eval` instead of `define_method` when defining delegate methods for
`DelegateClass`.
|
|
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>
|
|
https://github.com/ruby/delegate/commit/fa35b20eca
|
|
Tempfile uses DelegateClass and Tempfile should be able to be used
by different ractors.
https://github.com/ruby/delegate/commit/cad194260b
|
|
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))) {
```
|
|
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>
|
|
|
|
* `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.
|
|
|
|
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"
|
|
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
|
|
|
|
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.
|
|
Change example to use user-defined class instead of `Numeric`.
|
|
|
|
if test is omitted.
Follow up c4e090def134f9b109991b74c027648564963763
|
|
|
|
* 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>
|
|
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"
|
|
|
|
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
|
|
[Bug #21780]
|
|
|
|
|
|
|
|
This struct is used for addition not only for multiplication, so
remove the word `mul`, and make the member names more descriptive.
|
|
[Bug #21780]
|
|
`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.
|
|
|
|
|
|
https://github.com/ruby/net-http/commit/8cee86e939
|