diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml
index 6489454c57c74b..81c6bff401780e 100644
--- a/.github/workflows/ubuntu.yml
+++ b/.github/workflows/ubuntu.yml
@@ -208,7 +208,7 @@ jobs:
matrix:
include:
# Using the same setup as ZJIT jobs
- - bench_opts: '--warmup=1 --bench=1'
+ - bench_opts: '--warmup=1 --bench=1 --excludes=lobsters'
runs-on: ubuntu-24.04
@@ -242,8 +242,10 @@ jobs:
repository: ruby/ruby-bench
path: ruby-bench
+ # If you want to skip failing benchmark, consider using `--excludes`.
+ # e.g. `bench_opts: '--warmup=1 --bench=1 --excludes=railsbench,lobsters'`
- name: Run ruby-bench
- run: rm -rf benchmarks/lobsters && ruby run_benchmarks.rb -e "ruby::../build/install/bin/ruby" ${{ matrix.bench_opts }}
+ run: ruby run_benchmarks.rb -e "ruby::../build/install/bin/ruby" ${{ matrix.bench_opts }}
working-directory: ruby-bench
- uses: ./.github/actions/slack
diff --git a/.github/workflows/zjit-macos.yml b/.github/workflows/zjit-macos.yml
index 55bfcb30f22364..a638907811c3f1 100644
--- a/.github/workflows/zjit-macos.yml
+++ b/.github/workflows/zjit-macos.yml
@@ -158,7 +158,7 @@ jobs:
include:
# Test --call-threshold=2 with 2 iterations in total
- ruby_opts: '--zjit-call-threshold=2'
- bench_opts: '--warmup=1 --bench=1'
+ bench_opts: '--warmup=1 --bench=1 --excludes=lobsters'
configure: '--enable-zjit=dev_nodebug' # --enable-zjit=dev is too slow
runs-on: macos-14
@@ -197,8 +197,10 @@ jobs:
repository: ruby/ruby-bench
path: ruby-bench
+ # If you want to skip failing benchmark, consider using `--excludes`.
+ # e.g. `bench_opts: '--warmup=1 --bench=1 --excludes=railsbench,lobsters'`
- name: Run ruby-bench
- run: rm -rf benchmarks/lobsters && ruby run_benchmarks.rb -e "zjit::../build/install/bin/ruby ${{ matrix.ruby_opts }}" ${{ matrix.bench_opts }}
+ run: ruby run_benchmarks.rb -e "zjit::../build/install/bin/ruby ${{ matrix.ruby_opts }}" ${{ matrix.bench_opts }}
working-directory: ruby-bench
- uses: ./.github/actions/slack
diff --git a/.github/workflows/zjit-ubuntu.yml b/.github/workflows/zjit-ubuntu.yml
index 13b1add5b09568..4d5ecb7280c04d 100644
--- a/.github/workflows/zjit-ubuntu.yml
+++ b/.github/workflows/zjit-ubuntu.yml
@@ -215,7 +215,7 @@ jobs:
include:
# Test --call-threshold=2 with 2 iterations in total
- ruby_opts: '--zjit-call-threshold=2'
- bench_opts: '--warmup=1 --bench=1'
+ bench_opts: '--warmup=1 --bench=1 --excludes=lobsters'
configure: '--enable-zjit=dev_nodebug' # --enable-zjit=dev is too slow
runs-on: ubuntu-24.04
@@ -250,8 +250,10 @@ jobs:
repository: ruby/ruby-bench
path: ruby-bench
+ # If you want to skip failing benchmark, consider using `--excludes`.
+ # e.g. `bench_opts: '--warmup=1 --bench=1 --excludes=railsbench,lobsters'`
- name: Run ruby-bench
- run: rm -rf benchmarks/lobsters && ruby run_benchmarks.rb -e "zjit::../build/install/bin/ruby ${{ matrix.ruby_opts }}" ${{ matrix.bench_opts }}
+ run: ruby run_benchmarks.rb -e "zjit::../build/install/bin/ruby ${{ matrix.ruby_opts }}" ${{ matrix.bench_opts }}
working-directory: ruby-bench
- uses: ./.github/actions/slack
diff --git a/compar.c b/compar.c
index eda7e83824a4e0..0fb7e5f6584e73 100644
--- a/compar.c
+++ b/compar.c
@@ -109,10 +109,15 @@ cmp_gt(VALUE x, VALUE y)
/*
* call-seq:
- * obj >= other -> true or false
+ * self >= other -> true or false
+ *
+ * Returns whether +self+ is "greater than or equal to" +other+;
+ * equivalent to (self <=> other) >= 0:
+ *
+ * 'food' >= 'foo' # => true
+ * 'foo' >= 'foo' # => true
+ * 'foo' >= 'food' # => false
*
- * Compares two objects based on the receiver's <=>
- * method, returning true if it returns a value greater than or equal to 0.
*/
static VALUE
diff --git a/gc/mmtk/src/pinning_registry.rs b/gc/mmtk/src/pinning_registry.rs
index 71cf73eaf913b4..b498b508f1f97b 100644
--- a/gc/mmtk/src/pinning_registry.rs
+++ b/gc/mmtk/src/pinning_registry.rs
@@ -110,6 +110,11 @@ impl GCWork for PinPinningChildren {
target_object
);
if pin {
+ debug_assert!(
+ target_object.get_forwarded_object().is_none(),
+ "Trying to pin {target_object} but has been moved"
+ );
+
pinned_objs.push(target_object);
}
target_object
diff --git a/hash.c b/hash.c
index b0de8e943355af..f264bfba4bc40f 100644
--- a/hash.c
+++ b/hash.c
@@ -4950,10 +4950,9 @@ rb_hash_lt(VALUE hash, VALUE other)
/*
* call-seq:
- * self >= other_hash -> true or false
+ * self >= other -> true or false
*
- * Returns +true+ if the entries of +self+ are a superset of the entries of +other_hash+,
- * +false+ otherwise:
+ * Returns whether the entries of +self+ are a superset of the entries of +other+:
*
* h0 = {foo: 0, bar: 1, baz: 2}
* h1 = {foo: 0, bar: 1}
diff --git a/numeric.c b/numeric.c
index 87d50ae4a1b9e8..8f866d00bde628 100644
--- a/numeric.c
+++ b/numeric.c
@@ -1674,7 +1674,8 @@ rb_float_gt(VALUE x, VALUE y)
* call-seq:
* self >= other -> true or false
*
- * Returns +true+ if +self+ is numerically greater than or equal to +other+:
+ * Returns whether the value of +self+ is greater than or equal to the value of +other+;
+ * +other+ must be numeric, but may not be Complex:
*
* 2.0 >= 1 # => true
* 2.0 >= 1.0 # => true
@@ -5001,10 +5002,10 @@ fix_ge(VALUE x, VALUE y)
/*
* call-seq:
- * self >= real -> true or false
+ * self >= other -> true or false
*
- * Returns +true+ if the value of +self+ is greater than or equal to
- * that of +other+:
+ * Returns whether the value of +self+ is greater than or equal to the value of +other+;
+ * +other+ must be numeric, but may not be Complex:
*
* 1 >= 0 # => true
* 1 >= 1 # => true
diff --git a/object.c b/object.c
index aaa3326ebf6df5..ed7e0ff224cf0b 100644
--- a/object.c
+++ b/object.c
@@ -162,7 +162,7 @@ rb_obj_setup(VALUE obj, VALUE klass, VALUE type)
*
* Returns +true+ or +false+.
*
- * Like Object#==, if +object+ is an instance of Object
+ * Like Object#==, if +other+ is an instance of \Object
* (and not an instance of one of its many subclasses).
*
* This method is commonly overridden by those subclasses,
@@ -1892,11 +1892,12 @@ rb_mod_freeze(VALUE mod)
/*
* call-seq:
- * mod === obj -> true or false
+ * self === other -> true or false
*
- * Case Equality---Returns true if obj is an
- * instance of mod or an instance of one of mod's descendants.
- * Of limited use for modules, but can be used in case statements
+ * Returns whether +other+ is an instance of +self+,
+ * or is an instance of a subclass of +self+.
+ *
+ * Of limited use for modules, but can be used in +case+ statements
* to classify objects by class.
*/
diff --git a/range.c b/range.c
index 7aa917bc067b68..c8a4b9938bab8e 100644
--- a/range.c
+++ b/range.c
@@ -2054,10 +2054,9 @@ VALUE rb_str_include_range_p(VALUE beg, VALUE end, VALUE val, VALUE exclusive);
/*
* call-seq:
- * self === object -> true or false
+ * self === other -> true or false
*
- * Returns +true+ if +object+ is between self.begin and self.end.
- * +false+ otherwise:
+ * Returns whether +other+ is between self.begin and self.end:
*
* (1..4) === 2 # => true
* (1..4) === 5 # => false
diff --git a/re.c b/re.c
index 621af13cd73f16..f8672d1d7ce187 100644
--- a/re.c
+++ b/re.c
@@ -3728,9 +3728,9 @@ rb_reg_match(VALUE re, VALUE str)
/*
* call-seq:
- * regexp === string -> true or false
+ * self === other -> true or false
*
- * Returns +true+ if +self+ finds a match in +string+:
+ * Returns whether +self+ finds a match in +other+:
*
* /^[a-z]*$/ === 'HELLO' # => false
* /^[A-Z]*$/ === 'HELLO' # => true
diff --git a/tool/zjit_iongraph.html b/tool/zjit_iongraph.html
index e97ac74e4ac411..993cce90455260 100644
--- a/tool/zjit_iongraph.html
+++ b/tool/zjit_iongraph.html
@@ -1,7 +1,7 @@
+ 39b04fa18f23cbf3fd2ca7339a45341ff3351ba1 in tekknolagi/iongraph -->
@@ -337,6 +337,10 @@
overflow-y: auto;
}
+.ig-hide-if-empty:empty {
+ display: none;
+}
+
/* Non-utility styles */
.ig-graph {
@@ -511,8 +515,7 @@
-
-