Age | Commit message (Collapse) | Author |
|
https://github.com/rubygems/rubygems/commit/6b4cf6713d
|
|
https://github.com/rubygems/rubygems/commit/ee5a0158fd
|
|
https://github.com/rubygems/rubygems/commit/0574c62fc0
|
|
And adapt release scripts and configuration to the new structure.
https://github.com/rubygems/rubygems/commit/3deb1aedae
|
|
of x64-mingw-ucrt
https://github.com/rubygems/rubygems/commit/71c969be44
|
|
https://github.com/rubygems/rubygems/commit/8df67b7322
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13521
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13521
|
|
`str_chilled_p`
(https://github.com/ruby/stringio/pull/136)
https://github.com/ruby/stringio/commit/3c52ddc4c8
|
|
|
|
|
|
Now all flags are only in the `shape_id_t`, and can all be checked
without needing to dereference a pointer.
Notes:
Merged: https://github.com/ruby/ruby/pull/13515
|
|
* Add newrange support to zjit
* Add RangeType enum for Range insn's flag
* Address other feedback
Notes:
Merged-By: k0kubun <[email protected]>
|
|
`RUBY_DEBUG=gc_stress ./miniruby -e0` crashes because of this
marking miss.
BTW, to use `RUBY_DEBUG=gc_stress` we need to specify
`--enable-debug-env` configure option. This is why I couldn't repro
on my environments.
see c0c94ab183d0d428595ccb74ae71ee945f1afd45
Notes:
Merged: https://github.com/ruby/ruby/pull/13506
|
|
Co-authored-by: Max Bernstein <[email protected]>
Co-authored-by: Alan Wu <[email protected]>
Notes:
Merged-By: k0kubun <[email protected]>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13516
|
|
`rb_addrinfo_t` has `VALUE inspectname` and `VALUE canonname`, so this
triggers the write barrier for those. The `AddrInfo` wasn't readily
available where we need to call `RB_OBJ_WRITE`, so this involves passing
`self` around a bit.
Notes:
Merged: https://github.com/ruby/ruby/pull/13503
|
|
When Launchable in unstable, the round trip time takes a long time, which slows down CI execution. In this PR I configured the environment variable `LAUNCHABLE_COMMIT_TIMEOUT` to configure the timeout.
https://github.com/launchableinc/cli/pull/1015
Notes:
Merged-By: ono-max <[email protected]>
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13487
Merged-By: XrXr
|
|
Instead it's now a `shape_id` flag.
This allows to check if an object is complex without having
to chase the `rb_shape_t` pointer.
Notes:
Merged: https://github.com/ruby/ruby/pull/13511
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13510
|
|
Previously, a user of the debug inspector API was supposed to use
`rb_debug_inspector_backtrace_locations` to get an array of
`Thread::Backtrace::Location`, and then used its index to get more
information from `rb_debug_inspector _frame_binding_get(index)`, etc.
However, `rb_debug_inspector_backtrace_locations` returned an array of
backtraces excluding rescue/ensure frames. On the other hand,
`rb_debug_inspector_frame_binding_get(index)` interprets index with
rescue/ensure frames. This led to inconsistency of the index, and it was
very difficult to correctly use the debug inspector API.
This is a minimal fix for the issue by making
`rb_debug_inspector_backtrace_locations` return a raw backtrace
including rescue/ensure frames.
Notes:
Merged: https://github.com/ruby/ruby/pull/13510
|
|
The FrameState on the SendWithoutBlock represents the entry state,
but for instructions that push to the stack in the middle of the
instruction before actually doing the send like opt_aref_with,
the FrameState is incorrect. We need to write to the stack using the
arguments for the instruction.
Notes:
Merged: https://github.com/ruby/ruby/pull/13468
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13468
|
|
`Ractor#take` was deprecated but some libraries can use it as
an alias for `Ractor#value` (i.e., to wait for a Ractor's
temrination and retrieve its result).
Therefore `Ractor#take` is simply an alias for `Ractor#value`.
This method will remain available until the end of August 2025,
unless there is further discussion.
Notes:
Merged: https://github.com/ruby/ruby/pull/13512
|
|
`__has_warning` is clang, not gcc.
Notes:
Merged: https://github.com/ruby/ruby/pull/13509
|
|
`xmalloc2` checks the overflow of arguments multiplication.
Notes:
Merged: https://github.com/ruby/ruby/pull/13509
|
|
May not be supported on some 32bit architectures.
```
/usr/lib/gcc-cross/m68k-linux-gnu/14/../../../../m68k-linux-gnu/bin/ld: ../../libruby-static.a(vm.o): in function `rbimpl_atomic_u64_set_relaxed':
/home/ubuntu/build/ruby/master/m68k-linux/../src/ruby_atomic.h:60:(.text+0x2468): undefined reference to `__atomic_store_8'
/usr/lib/gcc-cross/m68k-linux-gnu/14/../../../../m68k-linux-gnu/bin/ld: ../../libruby-static.a(vm.o): in function `rbimpl_atomic_u64_load_relaxed':
/home/ubuntu/build/ruby/master/m68k-linux/../src/ruby_atomic.h:43:(.text+0x2950):
undefined reference to `__atomic_load_8'
```
Notes:
Merged: https://github.com/ruby/ruby/pull/13509
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13509
|
|
If called on a class, we should acquire the lock.
Notes:
Merged: https://github.com/ruby/ruby/pull/13502
|
|
This reverts commit https://github.com/ruby/did_you_mean/commit/15d7b0bfa573.
https://github.com/ruby/did_you_mean/commit/86a7daca19
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13289
|
|
Freezing an object changes its `shape_id` This is necessary
so that `setivar` routines can use the `shape_id` as a cache key
and save on checking the frozen status every time.
However for `getivar` routines, this causes needless cache misses.
By clearing that bit we increase hit rate in codepaths that see
both frozen and mutable objects.
Notes:
Merged: https://github.com/ruby/ruby/pull/13289
|
|
Instead `shape_id_t` higher bits contain flags, and the first one
tells whether the shape is frozen.
This has multiple benefits:
- Can check if a shape is frozen with a single bit check instead of
dereferencing a pointer.
- Guarantees it is always possible to transition to frozen.
- This allow reclaiming `FL_FREEZE` (not done yet).
The downside is you have to be careful to preserve these flags
when transitioning.
Notes:
Merged: https://github.com/ruby/ruby/pull/13289
|
|
This reverts commit https://github.com/ruby/psych/commit/1a4d383efe0b.
https://github.com/ruby/psych/commit/2f51c02280
|
|
This reverts commit https://github.com/ruby/uri/commit/443ed0cf8540.
https://github.com/ruby/uri/commit/9e51838a04
|
|
https://github.com/ruby/date/commit/700e44ef54
|
|
https://github.com/ruby/time/commit/337410e971
|
|
https://github.com/ruby/test-unit-ruby-core/pull/9
https://github.com/ruby/test-unit-ruby-core/pull/10
|
|
https://github.com/ruby/etc/commit/fd61177b71
|
|
|
|
|
|
```
test/fiber/test_scheduler.rb:98: warning: Scheduler should implement #fiber_interrupt
```
Notes:
Merged: https://github.com/ruby/ruby/pull/13501
|
|
Memory leak reported:
3 miniruby 0x1044b6c1c ractor_init + 164 ractor.c:460
2 miniruby 0x1043fd6a0 ruby_xmalloc + 44 gc.c:5188
1 miniruby 0x104402840 rb_gc_impl_malloc + 148 default.c:8140
0 libsystem_malloc.dylib 0x19ab3912c _malloc_zone_malloc_instrumented_or_legacy + 152
Notes:
Merged: https://github.com/ruby/ruby/pull/13504
|
|
Memory leak reported:
3 miniruby 0x104702c1c ractor_init + 164 ractor.c:460
2 miniruby 0x1046496a0 ruby_xmalloc + 44 gc.c:5188
1 miniruby 0x10464e840 rb_gc_impl_malloc + 148 default.c:8140
0 libsystem_malloc.dylib 0x19ab3912c _malloc_zone_malloc_instrumented_or_legacy + 152
Notes:
Merged: https://github.com/ruby/ruby/pull/13504
|
|
Followup: https://github.com/ruby/ruby/pull/13341 / [Feature #21353]
Even thought `shape_id_t` has been make 32bits, we were still limited
to use only the lower 16 bits because they had to fit alongside `attr_index_t`
inside a `uintptr_t` in inline caches.
By enlarging inline caches we can unlock the full 32bits on all
platforms, allowing to use these extra bits for tagging.
Notes:
Merged: https://github.com/ruby/ruby/pull/13500
|
|
Some GC implementations want to always know when an object is written to,
even if the written value is a special constant. Checking special constants
in rb_obj_written was a micro-optimization that made assumptions about
the GC implementation.
Notes:
Merged: https://github.com/ruby/ruby/pull/13497
|
|
of the `ClassNode`. - Part of #2123
https://github.com/ruby/prism/commit/99615b43ac
|
|
[Bug #21394]
There are two ways to make RubyVM::InstructionSequence.new raise which
would cause the options->scopes to leak memory:
1. Passing in any (non T_FILE) object where the to_str raises.
2. Passing in a T_FILE object where String#initialize_dup raises. This is
because rb_io_path dups the string.
Example 1:
10.times do
100_000.times do
RubyVM::InstructionSequence.new(nil)
rescue TypeError
end
puts `ps -o rss= -p #{$$}`
end
Before:
13392
17104
20256
23920
27264
30432
33584
36752
40032
43232
After:
9392
11072
11648
11648
11648
11712
11712
11712
11744
11744
Example 2:
require "tempfile"
MyError = Class.new(StandardError)
String.prepend(Module.new do
def initialize_dup(_)
if $raise_on_dup
raise MyError
else
super
end
end
end)
Tempfile.create do |f|
10.times do
100_000.times do
$raise_on_dup = true
RubyVM::InstructionSequence.new(f)
rescue MyError
else
raise "MyError was not raised during RubyVM::InstructionSequence.new"
end
puts `ps -o rss= -p #{$$}`
ensure
$raise_on_dup = false
end
end
Before:
14080
18512
22000
25184
28320
31600
34736
37904
41088
44256
After:
12016
12464
12880
12880
12880
12912
12912
12912
12912
12912
Notes:
Merged: https://github.com/ruby/ruby/pull/13496
|
|
https://github.com/ruby/tmpdir/commit/f12c766996
|