Age | Commit message (Collapse) | Author |
|
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
|
|
https://github.com/ruby/time/commit/2a1827b0ce
|
|
https://github.com/ruby/json/commit/d42b36963d
|
|
(https://github.com/ruby/strscan/pull/157)
This is same as https://github.com/ruby/stringio/pull/134
---------
https://github.com/ruby/strscan/commit/141f9cf9b6
Co-authored-by: Koichi Sasada <[email protected]>
|
|
https://github.com/ruby/pathname/commit/c501767d12
|
|
https://github.com/ruby/uri/commit/443ed0cf85
|
|
https://github.com/ruby/io-wait/commit/cf84aea70d
|
|
https://github.com/ruby/did_you_mean/commit/a7a438ae27
|
|
https://github.com/ruby/did_you_mean/commit/15d7b0bfa5
|
|
https://github.com/ruby/psych/commit/1a4d383efe
|
|
(https://github.com/ruby/stringio/pull/134)
from https://bugs.ruby-lang.org/issues/21262
We need to alias `Ractor#value` to `Ractor#take` for old versions of
Ruby.
---------
https://github.com/ruby/stringio/commit/9954dabd80
Co-authored-by: Koichi Sasada <[email protected]>
Co-authored-by: Sutou Kouhei <[email protected]>
|
|
https://github.com/ruby/io-console/commit/7106d05219
|
|
https://github.com/ruby/etc/commit/3dbe760bed
|
|
https://github.com/ruby/digest/commit/1eaee7d4fe
|
|
https://github.com/ruby/date/commit/1ce29a26dd
|
|
Let them run against the version resolved by the `test_gems.rb` gemfile.
This should fix ruby-core CI job that was broken by the release of rake
13.3.0.
|
|
https://github.com/rubygems/rubygems/commit/bfac93100e
|
|
https://github.com/rubygems/rubygems/commit/7afe81fd45
|
|
https://github.com/rubygems/rubygems/commit/aec5a7887d
|
|
`init_gems_rb` preference
https://github.com/rubygems/rubygems/commit/88aeb66f41
|
|
https://github.com/rubygems/rubygems/commit/d45710ee53
|
|
https://github.com/rubygems/rubygems/commit/4f96e12ff3
|
|
https://github.com/rubygems/rubygems/commit/c07e3a88aa
|
|
`spec.files` default ignore list
https://github.com/rubygems/rubygems/commit/6390ed7a2b
|
|
https://github.com/rubygems/rubygems/commit/77ba4192a7
|
|
or `test-unit`
https://github.com/rubygems/rubygems/commit/c464f2036a
|
|
list when not generating any CI config
https://github.com/rubygems/rubygems/commit/018bb19244
|
|
https://github.com/rubygems/rubygems/commit/ff51a51d1a
|
|
`.gemspec` template
https://github.com/rubygems/rubygems/commit/e48c6beaf6
|
|
`.gemspec` template
https://github.com/rubygems/rubygems/commit/edf13f7e60
|
|
template only when using RSpec
https://github.com/rubygems/rubygems/commit/a42387b8be
|
|
template
https://github.com/rubygems/rubygems/commit/331901941d
|
|
`spec.files` in the `.gemspec` template
https://github.com/rubygems/rubygems/commit/9d937d4f7f
|
|
https://github.com/rubygems/rubygems/commit/2f2046c97b
|
|
https://github.com/rubygems/rubygems/commit/c11539f325
|
|
https://github.com/rubygems/rubygems/commit/160938e75c
|
|
CONFIGURATION KEYS
Since the remembering options are discouraged, the preferred method should be explained first.
Slight tweak to wording
Fix documentation spec test as per suggested patch
https://github.com/rubygems/rubygems/commit/9f082ccf31
|
|
BUNDLE_PATH are connected
https://github.com/rubygems/rubygems/commit/9ed20bddab
|
|
https://github.com/rubygems/rubygems/commit/d6f1f96585
|
|
x64-mingw-ucrt (platforms)
- the x64-mingw32 platform has been superseded by x64-mingw-ucrt
- the mingw-ucrt platform is present as of Windows 10, which was released 10 years ago in 2015 and all versions prior to 10 are end-of-life and 10 will be by mid October 2025
- newer rubies use the mingw-ucrt platform instead of the mingw32 platform, meaning using the deprecated platform can cause issues during gem installation
https://github.com/rubygems/rubygems/commit/b9d871022e
|
|
https://github.com/rubygems/rubygems/commit/0e40e7d938
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13495
|
|
The test fails with:
TestISeq#test_loading_kwargs_memory_leak [test/ruby/test_iseq.rb:882]:
pid 18222 exit 1
| -:2:in '<main>': undefined method 'iseq_to_binary' for main (NoMethodError)
Notes:
Merged: https://github.com/ruby/ruby/pull/13494
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13458
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13441
|
|
Whenever we run into an inline cache miss when we try to set
an ivar, we may need to take the global lock, just to be able to
lookup inside `shape->edges`.
To solve that, when we're in multi-ractor mode, we can treat
the `shape->edges` as immutable. When we need to add a new
edge, we first copy the table, and then replace it with
CAS.
This increases memory allocations, however we expect that
creating new transitions becomes increasingly rare over time.
```ruby
class A
def initialize(bool)
@a = 1
if bool
@b = 2
else
@c = 3
end
end
def test
@d = 4
end
end
def bench(iterations)
i = iterations
while i > 0
A.new(true).test
A.new(false).test
i -= 1
end
end
if ARGV.first == "ractor"
ractors = 8.times.map do
Ractor.new do
bench(20_000_000 / 8)
end
end
ractors.each(&:take)
else
bench(20_000_000)
end
```
The above benchmark takes 27 seconds in Ractor mode on Ruby 3.4,
and only 1.7s with this branch.
Co-Authored-By: Étienne Barrié <[email protected]>
Notes:
Merged: https://github.com/ruby/ruby/pull/13441
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13476
|
|
We don't want the default GC to depend on Ruby internals so we can build
it as a modular GC.
Notes:
Merged: https://github.com/ruby/ruby/pull/13476
|