Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
c21f349
Implement a fast path for sweeping (gc_sweep_fast_path_p).
eightbitraptor Jan 14, 2026
211714f
Clarify the use of some FLAGS
eightbitraptor Jan 20, 2026
efde37b
Move the gc fast path out of the default GC impl
eightbitraptor Jan 22, 2026
8e73aa7
We don't need this wrapper function anymore
eightbitraptor Jan 23, 2026
7444f41
rename rb_gc_obj_free_on_sweep -> rb_gc_obj_needs_cleanup_p
eightbitraptor Jan 23, 2026
d15117e
BIGNUM can't have fields other than object_id
eightbitraptor Jan 26, 2026
3c63489
Remove the unnecesary integer comparison
eightbitraptor Jan 26, 2026
994257a
Prevent starvation when acquiring mutex over and over (#15877)
luke-gruber Jan 26, 2026
2605d4e
ZJIT: Extract VRegId from a usize
tenderlove Jan 22, 2026
ed0a5c6
[DOC] Fix links in Complex
BurdetteLamar Jan 25, 2026
21f8472
[DOC] Fix links in Array
BurdetteLamar Jan 25, 2026
b710293
[DOC] Doc for Module.nesting
BurdetteLamar Jan 25, 2026
6b0dda4
ZJIT: Add temporary local definite assignment validator (#15973)
tekknolagi Jan 26, 2026
491e389
[DOC] Fix links to What's Here
peterzhu2118 Jan 26, 2026
969fd30
[ruby/net-http] [DOC] Fix links
peterzhu2118 Jan 27, 2026
09872ea
[ruby/resolv] add missing typeclasses to doc
themichaelyang Dec 20, 2025
c55d214
[ruby/resolv] add getresources test for every resource typeclass
themichaelyang Dec 20, 2025
ade85c4
[ruby/resolv] remove test for every class
themichaelyang Jan 16, 2026
83713db
gc.c: Fix `rb_gc_obj_needs_cleanup_p`
byroot Jan 27, 2026
fa3e3d1
Ignore EOL code changes [ci skip]
nobu Jan 27, 2026
5d76922
[ruby/prism] Remove `Prism.lex_ripper`
Earlopain Jan 26, 2026
52e71ad
Fix test for mutex starvation as well as small fix in thread_sync.c (…
luke-gruber Jan 27, 2026
6f6ed79
ZJIT: Compile invokesuperforward (#15958)
nozomemein Jan 27, 2026
39b28e6
ZJIT: Remove unused import to eliminate build warning (#15984)
rwstauner Jan 27, 2026
c983b7a
[ruby/prism] Rename line_to_byte_offset -> byte_offset
kddnewton Jan 27, 2026
68902e3
[ruby/prism] Add Prism::Node#find_all
kddnewton Jan 27, 2026
ec15465
[ruby/prism] Bump to v1.9.0
kddnewton Jan 27, 2026
af4a1ca
Use slices instead of locations
kddnewton Jan 27, 2026
6687167
Update default gems list at ec154654a99c07d065108e9c31793e [ci skip]
matzbot Jan 27, 2026
1cd3253
[ruby/prism] Mark STATES as a private constant
kddnewton Jan 27, 2026
5c15f93
[ruby/prism] Use the terminology "column in bytes/characters/code units"
eregon Jan 27, 2026
d561609
[ruby/prism] Mark insert_on_sp as private
kddnewton Jan 27, 2026
5eb17ea
[DOC] Fix hash style in Hash#flatten
peterzhu2118 Jan 27, 2026
bea48ad
[DOC] fixed pid shown in the doc comment on fork
mackuba Jan 28, 2026
3b22e32
[ruby/prism] Use align keywords instead of the header
kddnewton Jan 28, 2026
01ace06
[ruby/prism] Remove tokens from lex compat
kddnewton Jan 28, 2026
8d41e57
Revert "Prevent starvation when acquiring mutex over and over (#15877…
luke-gruber Jan 28, 2026
72f11c8
Attempt to fix failing monitor test (#15992)
luke-gruber Jan 28, 2026
2d5460e
ZJIT: Optimize send-with-block to iseq methods (#15911)
chancancode Jan 28, 2026
a8b877a
Update to ruby/mspec@5470479
eregon Jan 28, 2026
dbd2ff7
Update to ruby/spec@83e26c9
eregon Jan 28, 2026
c8f01d5
ruby/spec no longer supports 3.2
eregon Jan 28, 2026
554ca2e
[DOC] Fix broken link in Coverage.setup
peterzhu2118 Jan 28, 2026
f2fde27
[ruby/rubygems] Only use parent source with Git and Path sources
hsbt Jan 27, 2026
0c30897
[ruby/rubygems] Remove outdated TODO in RemoteFetcher
afurm Nov 23, 2025
fa09afb
[ruby/prism] Support `version: "nearest"`.
kddnewton Jan 29, 2026
40e3e43
[ruby/net-http] [DOC] Fix links in requests.rb
BurdetteLamar Dec 16, 2025
6f16e87
[ruby/open-uri] Improve URI.open documentation with usage example
ybiquitous Jan 16, 2026
ba8b0b3
Update bundled gems list as of 2026-01-29
matzbot Jan 29, 2026
cd26647
Remove dangling taintedness macros
nobu Jan 29, 2026
62493b5
Fix assertions not to be affected by the default encoding
nobu Jan 29, 2026
d3ea389
Remove too platform sensitive assertions
nobu Jan 29, 2026
e48ed4b
Do not open to write the fixture files
nobu Jan 29, 2026
d3d1a97
Update to ruby/spec@8c98a84
eregon Jan 29, 2026
6d07151
Win32: Mark batch files in gitattributes
nobu Jan 28, 2026
1cc2e68
Win32: Refactor configure
nobu Nov 22, 2024
6cc2096
Win32: Make `optdirs` and `pathlist` macros overridable
nobu Jan 28, 2026
b5ecfd1
Win32: Refactor target detection
nobu Jan 28, 2026
5299276
win32: Prevent broken substitution string when variable is undefined
nobu Jan 28, 2026
fbff0c9
ZJIT: Handle `nil` case for `getblockparamproxy` (#15986)
39bytes Jan 29, 2026
33d8284
ZJIT: Support polymorphic send without block (#15949)
tekknolagi Jan 29, 2026
b51a112
IO::Buffer.map seems not shareable across processes on OpenBSD
eregon Jan 29, 2026
acc4145
ZJIT: Support inlining send-with-block (#15998)
tekknolagi Jan 29, 2026
cfa3a4a
ZJIT: Make printout and identifier name consistent for `Guard{AnyBit,…
XrXr Jan 29, 2026
d9cc3c2
ZJIT: Remove PadPatchPoint instructions when lowering to LIR (#15974)
tenderlove Jan 29, 2026
457bb11
[ruby/mmtk] Add weak_references_count to GC.stat
peterzhu2118 Jan 27, 2026
91619f0
gc.c: Verify provided size in `rb_gc_impl_free`
byroot Jan 28, 2026
5fec545
ZJIT: Optimize `super` calls to C function targets (#15993)
nirvdrum Jan 29, 2026
ef583c9
Fix NEWOBJ hook calling `rb_obj_memsize_of` on TypedData object (#16002)
luke-gruber Jan 29, 2026
5068fe8
[ruby/resolv] v0.7.1
hsbt Jan 30, 2026
604090c
Update default gems list at 5068fe85e6f7e662cd6e15f5ed7b80 [ci skip]
matzbot Jan 30, 2026
0d66488
Remove dead gc_stat_sym_weak_references_count
peterzhu2118 Jan 29, 2026
25d91f4
Bump actions/cache from 5.0.2 to 5.0.3
dependabot[bot] Jan 30, 2026
edc132c
Bump actions/cache in /.github/actions/setup/directories
dependabot[bot] Jan 30, 2026
9bf8aaa
[ruby/rubygems] Revert "[ruby/rubygems] Revert "Merge pull request #8…
hsbt Jan 27, 2026
5911a52
[ruby/rubygems] Handle symlink TMPDIR with macOS
hsbt Jan 30, 2026
eceb099
Show chain of references in Ractor errors
etiennebarrie Dec 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,7 @@ d4e24021d39e1f80f0055b55d91f8d5f22e15084
e90282be7ba1bc8e3119f6e1a2c80356ceb3f80a
26a9e0b4e31f7b5a9cbd755e0a15823a8fa51bae
2f53985da9ee593fe524d408256835667938c7d7

# Win32: EOL code of batch files
23f9a0d655c4d405bb2397a147a1523436205486
b839989fd22fef85e2af19de1bc83aa72a5b22bd
5 changes: 5 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,8 @@ tool/update-deps diff=ruby
tool/make-snapshot diff=ruby
tool/format-release diff=ruby
tool/leaked-globals diff=ruby

# To strip CR from the batch files, set the `diff.dos.textconv` filter
# like as `git config diff.dos.textconv $'sed \'s/\r$//\''`.
*.bat diff=dos
*.cmd diff=dos
2 changes: 1 addition & 1 deletion .github/actions/setup/directories/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ runs:
path: ${{ inputs.srcdir }}
fetch-depth: ${{ inputs.fetch-depth }}

- uses: actions/cache@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
- uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
path: ${{ inputs.srcdir }}/.downloaded-cache
key: ${{ runner.os }}-${{ runner.arch }}-downloaded-cache
Expand Down
1 change: 0 additions & 1 deletion .github/workflows/spec_guards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ jobs:
# Specs from ruby/spec should still run on all supported Ruby versions.
# This also ensures the needed ruby_version_is guards are there, see spec/README.md.
ruby:
- ruby-3.2
- ruby-3.3
- ruby-3.4
- ruby-4.0
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ jobs:

- name: Restore vcpkg artifact
id: restore-vcpkg
uses: actions/cache/restore@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
uses: actions/cache/restore@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
path: src\vcpkg_installed
key: windows-${{ matrix.os }}-vcpkg-${{ hashFiles('src/vcpkg.json') }}
Expand All @@ -100,7 +100,7 @@ jobs:
if: ${{ ! steps.restore-vcpkg.outputs.cache-hit }}

- name: Save vcpkg artifact
uses: actions/cache/save@8b402f58fbc84540c8b491a91e594a4576fec3d7 # v5.0.2
uses: actions/cache/save@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
with:
path: src\vcpkg_installed
key: windows-${{ matrix.os }}-vcpkg-${{ hashFiles('src/vcpkg.json') }}
Expand Down
4 changes: 3 additions & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ releases.

* RubyGems 4.1.0.dev
* bundler 4.1.0.dev
* prism 1.8.0
* prism 1.9.0
* resolv 0.7.1
* stringio 3.2.1.dev
* strscan 3.1.7.dev
* syntax_suggest 2.0.3
Expand All @@ -62,6 +63,7 @@ releases.
* debug 1.11.1
* mutex_m 0.3.0
* resolv-replace 0.2.0
* syslog 0.4.0
* rdoc 7.1.0

### RubyGems and Bundler
Expand Down
13 changes: 7 additions & 6 deletions array.c
Original file line number Diff line number Diff line change
Expand Up @@ -387,13 +387,14 @@ rb_ary_make_embedded(VALUE ary)
if (!ARY_EMBED_P(ary)) {
const VALUE *buf = ARY_HEAP_PTR(ary);
long len = ARY_HEAP_LEN(ary);
long capa = ARY_HEAP_CAPA(ary);

FL_SET_EMBED(ary);
ARY_SET_EMBED_LEN(ary, len);

MEMCPY((void *)ARY_EMBED_PTR(ary), (void *)buf, VALUE, len);

ary_heap_free_ptr(ary, buf, len * sizeof(VALUE));
ary_heap_free_ptr(ary, buf, capa * sizeof(VALUE));
}
}

Expand Down Expand Up @@ -428,7 +429,7 @@ ary_resize_capa(VALUE ary, long capacity)

if (len > capacity) len = capacity;
MEMCPY((VALUE *)RARRAY(ary)->as.ary, ptr, VALUE, len);
ary_heap_free_ptr(ary, ptr, old_capa);
ary_heap_free_ptr(ary, ptr, old_capa * sizeof(VALUE));

FL_SET_EMBED(ary);
ARY_SET_LEN(ary, len);
Expand Down Expand Up @@ -8423,12 +8424,12 @@ rb_ary_deconstruct(VALUE ary)
*
* [1, 'one', :one, [2, 'two', :two]]
*
* - A {%w or %W string-array Literal}[rdoc-ref:syntax/literals.rdoc@25w+and+-25W-3A+String-Array+Literals]:
* - A {%w or %W string-array Literal}[rdoc-ref:syntax/literals.rdoc@w-and-w-String-Array-Literals]:
*
* %w[foo bar baz] # => ["foo", "bar", "baz"]
* %w[1 % *] # => ["1", "%", "*"]
*
* - A {%i or %I symbol-array Literal}[rdoc-ref:syntax/literals.rdoc@25i+and+-25I-3A+Symbol-Array+Literals]:
* - A {%i or %I symbol-array Literal}[rdoc-ref:syntax/literals.rdoc@i+and-I-Symbol-Array+Literals]:
*
* %i[foo bar baz] # => [:foo, :bar, :baz]
* %i[1 % *] # => [:"1", :%, :*]
Expand Down Expand Up @@ -8690,8 +8691,8 @@ rb_ary_deconstruct(VALUE ary)
*
* First, what's elsewhere. Class \Array:
*
* - Inherits from {class Object}[rdoc-ref:Object@What-27s+Here].
* - Includes {module Enumerable}[rdoc-ref:Enumerable@What-27s+Here],
* - Inherits from {class Object}[rdoc-ref:Object@Whats-Here].
* - Includes {module Enumerable}[rdoc-ref:Enumerable@Whats-Here],
* which provides dozens of additional methods.
*
* Here, class \Array provides methods that are useful for:
Expand Down
37 changes: 37 additions & 0 deletions bootstraptest/test_ractor.rb
Original file line number Diff line number Diff line change
Expand Up @@ -986,6 +986,43 @@ def self.fstr = @fstr
a + b + c + d + e + f
}

assert_equal <<-output.chomp, %q{
from Hash default proc
from instance variable @ivar of an instance of Foo
from block's self (an instance of Foo)
from Hash default proc
from instance variable @ivar of an instance of Foo
from member :foo of an instance of Bar
output
class Foo
def initialize
@ivar = Hash.new { |h, k| h[k] = [] } # the default proc holds self, an instance of Foo
end
def inspect = "#<Foo @ivar=#{@ivar.inspect}>"
end

Bar = Data.define(:foo)

begin
Ractor.make_shareable(Bar.new(Foo.new))
rescue Ractor::Error
$!.to_s.lines[1..].join
end
}

assert_equal '[true, true]', %q{
class Foo
undef_method :freeze
end

begin
Ractor.make_shareable Foo.new
rescue Ractor::Error
cause = $!.cause
[cause.class == NoMethodError, cause.name == :freeze]
end
}

assert_equal '["instance-variable", "instance-variable", nil]', %q{
class C
@iv1 = ""
Expand Down
6 changes: 3 additions & 3 deletions complex.c
Original file line number Diff line number Diff line change
Expand Up @@ -2645,9 +2645,9 @@ float_arg(VALUE self)
* First, what's elsewhere:
*
* - Class \Complex inherits (directly or indirectly)
* from classes {Numeric}[rdoc-ref:Numeric@What-27s+Here]
* and {Object}[rdoc-ref:Object@What-27s+Here].
* - Includes (indirectly) module {Comparable}[rdoc-ref:Comparable@What-27s+Here].
* from classes {Numeric}[rdoc-ref:Numeric@Whats-Here]
* and {Object}[rdoc-ref:Object@Whats-Here].
* - Includes (indirectly) module {Comparable}[rdoc-ref:Comparable@Whats-Here].
*
* Here, class \Complex has methods for:
*
Expand Down
7 changes: 6 additions & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -743,6 +743,12 @@ AS_CASE(["$GCC:${warnflags+set}:${extra_warnflags:+set}:"],
AS_CASE([ $CFLAGS ], [*" -save-temps="*|*" -save-temps "*], [], [
extra_warnflags="$extra_warnflags -Werror=misleading-indentation"
])
AS_CASE([$target_os], [mingw*], [
# 64bit Windows is IL32P64; shorten-64-to-32 causes tons of warnigs
extra_warnflags="$extra_warnflags -Wno-shorten-64-to-32"
], [
extra_warnflags="$extra_warnflags -Werror=shorten-64-to-32"
])

# ICC doesn't support -Werror=
AS_IF([test $icc_version -gt 0], [
Expand All @@ -756,7 +762,6 @@ AS_CASE(["$GCC:${warnflags+set}:${extra_warnflags:+set}:"],
-Werror=implicit-function-declaration \
-Werror=implicit-int \
-Werror=pointer-arith \
-Werror=shorten-64-to-32 \
-Werror=write-strings \
-Werror=old-style-definition \
-Wimplicit-fallthrough=0 \
Expand Down
6 changes: 3 additions & 3 deletions dir.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
# A \Dir object is in some ways array-like:
#
# - It has instance methods #children, #each, and #each_child.
# - It includes {module Enumerable}[rdoc-ref:Enumerable@What-27s+Here].
# - It includes {module Enumerable}[rdoc-ref:Enumerable@Whats+Here].
#
# == \Dir As Stream-Like
#
Expand Down Expand Up @@ -85,8 +85,8 @@
#
# First, what's elsewhere. Class \Dir:
#
# - Inherits from {class Object}[rdoc-ref:Object@What-27s+Here].
# - Includes {module Enumerable}[rdoc-ref:Enumerable@What-27s+Here],
# - Inherits from {class Object}[rdoc-ref:Object@Whats+Here].
# - Includes {module Enumerable}[rdoc-ref:Enumerable@Whats+Here],
# which provides dozens of additional methods.
#
# Here, class \Dir provides methods that are useful for:
Expand Down
6 changes: 3 additions & 3 deletions doc/float.rb
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@
# First, what's elsewhere. Class \Float:
#
# - Inherits from
# {class Numeric}[rdoc-ref:Numeric@What-27s+Here]
# and {class Object}[rdoc-ref:Object@What-27s+Here].
# - Includes {module Comparable}[rdoc-ref:Comparable@What-27s+Here].
# {class Numeric}[rdoc-ref:Numeric@Whats+Here]
# and {class Object}[rdoc-ref:Object@Whats+Here].
# - Includes {module Comparable}[rdoc-ref:Comparable@Whats+Here].
#
# Here, class \Float provides methods for:
#
Expand Down
4 changes: 2 additions & 2 deletions doc/string.rb
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,8 @@
#
# First, what's elsewhere. Class +String+:
#
# - Inherits from the {Object class}[rdoc-ref:Object@What-27s+Here].
# - Includes the {Comparable module}[rdoc-ref:Comparable@What-27s+Here].
# - Inherits from the {Object class}[rdoc-ref:Object@Whats+Here].
# - Includes the {Comparable module}[rdoc-ref:Comparable@Whats+Here].
#
# Here, class +String+ provides methods that are useful for:
#
Expand Down
27 changes: 17 additions & 10 deletions eval.c
Original file line number Diff line number Diff line change
Expand Up @@ -329,17 +329,24 @@ ruby_exec_node(void *n)

/*
* call-seq:
* Module.nesting -> array
*
* Returns the list of +Modules+ nested at the point of call.
* Module.nesting -> array
*
* Returns nested module as an array of Module objects:
*
* module M0
* def self.speak = Module.nesting
* module M1
* def self.speak = Module.nesting
* module M2
* def self.speak = Module.nesting
* end
* end
* end
* M0.speak # => [M0]
* M0.speak.first.class # => Module
* M0::M1.speak # => [M0::M1, M0]
* M0::M1::M2.speak # => [M0::M1::M2, M0::M1, M0]
*
* module M1
* module M2
* $a = Module.nesting
* end
* end
* $a #=> [M1::M2, M1]
* $a[0].name #=> "M1::M2"
*/

static VALUE
Expand Down
3 changes: 2 additions & 1 deletion ext/-test-/string/cstr.c
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,10 @@ bug_str_s_cstr_noembed(VALUE self, VALUE str)
FL_SET((str2), STR_NOEMBED);
memcpy(buf, RSTRING_PTR(str), capacity);
RBASIC(str2)->flags &= ~(STR_SHARED | FL_USER5 | FL_USER6);
RSTRING(str2)->as.heap.aux.capa = capacity;
RSTRING(str2)->as.heap.aux.capa = RSTRING_LEN(str);
RSTRING(str2)->as.heap.ptr = buf;
RSTRING(str2)->len = RSTRING_LEN(str);

TERM_FILL(RSTRING_END(str2), TERM_LEN(str));
return str2;
}
Expand Down
2 changes: 1 addition & 1 deletion ext/coverage/coverage.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ rb_coverage_supported(VALUE self, VALUE _mode)
* If +lines+ is enabled, +oneshot_lines+ cannot be enabled.
* See {Lines Coverage}[rdoc-ref:Coverage@Lines+Coverage].
* - +branches+: Enables branch coverage that records the number of times each
* branch in each conditional was executed. See {Branches Coverage}[rdoc-ref:Coverage@Branch+Coverage].
* branch in each conditional was executed. See {Branches Coverage}[rdoc-ref:Coverage@Branches+Coverage].
* - +methods+: Enables method coverage that records the number of times each method was exectued.
* See {Methods Coverage}[rdoc-ref:Coverage@Methods+Coverage].
* - +eval+: Enables coverage for evaluations (e.g. Kernel#eval, Module#class_eval).
Expand Down
2 changes: 1 addition & 1 deletion file.c
Original file line number Diff line number Diff line change
Expand Up @@ -7507,7 +7507,7 @@ const char ruby_null_device[] =
*
* First, what's elsewhere. Class \File:
*
* - Inherits from {class IO}[rdoc-ref:IO@What-27s+Here],
* - Inherits from {class IO}[rdoc-ref:IO@Whats+Here],
* in particular, methods for creating, reading, and writing files
* - Includes module FileTest,
* which provides dozens of additional methods.
Expand Down
Loading
Loading