summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
13 days[ruby/prism] Document ClassNode fields - Adds documentation for the fields ↵harasho
of the `ClassNode`. - Part of #2123 https://github.com/ruby/prism/commit/99615b43ac
13 daysFix memory leak in Prism's RubyVM::InstructionSequence.newPeter Zhu
[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
13 days[ruby/tmpdir] Restore Ractor.yield style test for old version of RubyHiroshi SHIBATA
https://github.com/ruby/tmpdir/commit/f12c766996
13 days[ruby/time] Alias value or join to take in old RubyHiroshi SHIBATA
https://github.com/ruby/time/commit/2a1827b0ce
13 days[ruby/json] Update `JSONInRactorTest` to handle Ruby 3.5 Ractors.Jean Boussier
https://github.com/ruby/json/commit/d42b36963d
13 days[ruby/strscan] Support `Ractor#value`Hiroshi SHIBATA
(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]>
13 days[ruby/pathname] Alias value or join to take in old RubyHiroshi SHIBATA
https://github.com/ruby/pathname/commit/c501767d12
13 days[ruby/uri] Alias value or join to take in old RubyHiroshi SHIBATA
https://github.com/ruby/uri/commit/443ed0cf85
13 days[ruby/io-wait] Alias value or join to take in old RubyHiroshi SHIBATA
https://github.com/ruby/io-wait/commit/cf84aea70d
13 days[ruby/did_you_mean] Omit some tests with JRubyHiroshi SHIBATA
https://github.com/ruby/did_you_mean/commit/a7a438ae27
13 days[ruby/did_you_mean] Alias value to take in old RubyHiroshi SHIBATA
https://github.com/ruby/did_you_mean/commit/15d7b0bfa5
13 days[ruby/psych] Alias value or join to take in old RubyHiroshi SHIBATA
https://github.com/ruby/psych/commit/1a4d383efe
13 days[ruby/stringio] Support `Ractor#value`Hiroshi SHIBATA
(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]>
13 days[ruby/io-console] Alias value or join to take in old RubyHiroshi SHIBATA
https://github.com/ruby/io-console/commit/7106d05219
13 days[ruby/etc] Alias value or join to take in old RubyHiroshi SHIBATA
https://github.com/ruby/etc/commit/3dbe760bed
13 days[ruby/digest] Alias value to take in old RubyHiroshi SHIBATA
https://github.com/ruby/digest/commit/1eaee7d4fe
13 days[ruby/date] Alias value to take in old RubyHiroshi SHIBATA
https://github.com/ruby/date/commit/1ce29a26dd
14 daysRemove hardcoded version of rake from Bundler testsDavid Rodríguez
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.
14 days[rubygems/rubygems] Follow coding styleTangRufus
https://github.com/rubygems/rubygems/commit/bfac93100e
14 days[rubygems/rubygems] Test `bin/` is included in the ignore listTangRufus
https://github.com/rubygems/rubygems/commit/7afe81fd45
14 days[rubygems/rubygems] Only ignore `.gitignore` when generating gems with gitTangRufus
https://github.com/rubygems/rubygems/commit/aec5a7887d
14 days[rubygems/rubygems] Ignore `Gemfile`, `gems.rb` & `gems.locked` according to ↵TangRufus
`init_gems_rb` preference https://github.com/rubygems/rubygems/commit/88aeb66f41
14 days[rubygems/rubygems] Extract `ignore_paths` helper methodTangRufus
https://github.com/rubygems/rubygems/commit/d45710ee53
14 days[rubygems/rubygems] Remove `.git` from `spec.files` default ignore listTangRufus
https://github.com/rubygems/rubygems/commit/4f96e12ff3
14 days[rubygems/rubygems] Rename `ignore_files` to `ignore_paths`TangRufus
https://github.com/rubygems/rubygems/commit/c07e3a88aa
14 days[rubygems/rubygems] Add `.gitignore`, `gems.rb` & `gems.locked` into ↵TangRufus
`spec.files` default ignore list https://github.com/rubygems/rubygems/commit/6390ed7a2b
14 days[rubygems/rubygems] Remove `features/` from `spec.files` default ignore listTangRufus
https://github.com/rubygems/rubygems/commit/77ba4192a7
14 days[rubygems/rubygems] Only ignore `test/` when generating gems with `minitest` ↵TangRufus
or `test-unit` https://github.com/rubygems/rubygems/commit/c464f2036a
14 days[rubygems/rubygems] Test it does not add any CI config files into ignore ↵TangRufus
list when not generating any CI config https://github.com/rubygems/rubygems/commit/018bb19244
14 days[rubygems/rubygems] Extract `before` blocksTangRufus
https://github.com/rubygems/rubygems/commit/ff51a51d1a
14 days[rubygems/rubygems] Suffix `.circleci` with `/` in `spec.files` in the ↵TangRufus
`.gemspec` template https://github.com/rubygems/rubygems/commit/e48c6beaf6
14 days[rubygems/rubygems] Suffix `.github` with `/` in `spec.files` in the ↵TangRufus
`.gemspec` template https://github.com/rubygems/rubygems/commit/edf13f7e60
14 days[rubygems/rubygems] Exclude `spec` from `spec.files` in the `.gemspec` ↵TangRufus
template only when using RSpec https://github.com/rubygems/rubygems/commit/a42387b8be
14 days[rubygems/rubygems] Exclude `.rspec` from `spec.files` in the `.gemspec` ↵TangRufus
template https://github.com/rubygems/rubygems/commit/331901941d
14 days[rubygems/rubygems] Exclude `.rubocop.yml` and `.standard.yml` from ↵TangRufus
`spec.files` in the `.gemspec` template https://github.com/rubygems/rubygems/commit/9d937d4f7f
14 days[rubygems/rubygems] Remove `appveyor` from `spec.files` default ignore listTangRufus
https://github.com/rubygems/rubygems/commit/2f2046c97b
14 days[rubygems/rubygems] Refactor `spec.files` ignore list generationTangRufus
https://github.com/rubygems/rubygems/commit/c11539f325
14 days[rubygems/rubygems] Fix English grammarTangRufus
https://github.com/rubygems/rubygems/commit/160938e75c
14 days[rubygems/rubygems] Moved the REMEMBERING OPTIONS section to be after ↵Matthew Hively
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
14 days[rubygems/rubygems] Clarify how BUNDLE_DEPLOYMENT, BUNDLE_FROZEN and ↵Matthew Hively
BUNDLE_PATH are connected https://github.com/rubygems/rubygems/commit/9ed20bddab
14 days[rubygems/rubygems] Remove unnecessary duplicate x64-mingw-ucrt entryNicholas La Roux
https://github.com/rubygems/rubygems/commit/d6f1f96585
14 days[rubygems/rubygems] Partially phase out x64-mingw32 in favour of ↵Nicholas La Roux
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
14 days[rubygems/rubygems] misc: fix spellingJohn Bampton
https://github.com/rubygems/rubygems/commit/0e40e7d938
14 daysUpdate to ruby/spec@4d2fc4dAndrew Konchin
Notes: Merged: https://github.com/ruby/ruby/pull/13495
14 daysFix test_loading_kwargs_memory_leakPeter Zhu
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
14 daysMake FrozenCore a plain T_CLASSJohn Hawthorn
Notes: Merged: https://github.com/ruby/ruby/pull/13458
14 daysPin shape->edgesJean Boussier
Notes: Merged: https://github.com/ruby/ruby/pull/13441
14 daysshape.c: Implement a lock-free version of get_next_shape_internalJean Boussier
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
2025-06-02Remove unused RBASIC_RESET_FLAGSPeter Zhu
Notes: Merged: https://github.com/ruby/ruby/pull/13476
2025-06-02Remove dependancy of default.c on internal/object.hPeter Zhu
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