| Age | Commit message (Collapse) | Author |
|
* failing test for ObjToString optimization with GuardType
* profile ObjToString receiver and rewrite with guard
* adjust integration tests for objtostring type guard optimization
* Implement new GuardTypeNot HIR; objtostring sends to_s directly on profiled nonstrings
* codegen for GuardTypeNot
* typo fixes
* better name for tests; fix side exit reason for GuardTypeNot
* revert accidental change
* make bindgen
* Fix is_string to identify subclasses of String; fix codegen for identifying if val is String
|
|
This allows for more precise tracking of stats programmatically
which is particularly useful for our nightly benchmarking suite.
- Define rust function
- Expose to C
- Wrap with Ruby API
- Add a test
|
|
|
|
Similar to YJIT's --yjit-stats=quiet, this option allows ZJIT to collect
statistics and make them available via the Ruby API without printing them
at exit. This is useful for programmatic access to stats without the
output noise.
- Added print_stats field to Options struct
- Modified option parsing to support --zjit-stats=quiet
- Added rb_zjit_print_stats_p primitive to check if stats should be printed
- Updated zjit.rb to only register at_exit handler when print_stats is true
- Update the help text shown by `ruby --help` to indicate that
--zjit-stats now accepts an optional =quiet parameter.
- Added test for --zjit-stats=quiet option
|
|
Probably due to the testing order, sometimes it looks like that
`Gem::UnknownCommandError` happens to be used without registered in
`DidYouMean`.
|
|
* Revert "Debug: More inspections"
e5a6e952467eef5444eaf63b77d8c91aa367d4de.
* Revert "Debug for sporadical failures on RubyCI"
7cafc61e7df044644f47937694c46835c316e86b.
|
|
|
|
|
|
Using IO#each_codepoint together with IO#ungetc causes an unwanted exception when encoding conversion is active.
C:\>ruby -e "open('NUL', 'rt') { |f| f.ungetc('aa'); f.each_codepoint { |c| p c }}"
97
-e:1:in 'IO#each_codepoint': byte oriented read for character buffered IO (IOError)
from -e:1:in 'block in <main>'
from -e:1:in 'Kernel#open'
from -e:1:in '<main>'
Fixes [Bug #21131]
|
|
If #to_proc is defined, this uses the following error message format,
matching the error message format used for * when to_a returns non-Array
and for ** when to_hash returns non-Hash:
```
can't convert ClassName to Proc (ClassName#to_proc gives OtherClassName)
```
If #to_proc is not defined, this uses the following error message format,
matching the error message format used when ** is called on a non-Hash
not implementing to_hash.
```
no implicit conversion of ClassName into Proc
```
There isn't a similar error for * when called on a non-Array not
implementing to_a, as Ruby does not raise for that case.
Fixes [Bug #21563]
|
|
|
|
|
|
The previous one failed:
https://github.com/ruby/ruby/actions/runs/17504307509/job/49724437021
$GITHUB_ACTION_REPOSITORY points to the owner of the action,
so it might not be ruby/ruby.
|
|
This fails way too often these days, probably since
https://github.com/rubygems/rubygems/pull/8948.
To make sure we can merge ruby/ruby PRs, we need this to not fail
randomly.
|
|
|
|
|
|
|
|
control
--append adds a source to the end, moving it to the end if it already exists.
--prepend adds or moves a source to the beginning.
This allows idempotent sorting of gem sources without removing and adding.
https://github.com/rubygems/rubygems/commit/d9a0567c65
|
|
Since Ruby 3.4.5, which ships with did_you_mean-2.0.0, RubyGems no
longer gives "did you mean" suggestions for unknown commands.
This is because did_you_mean-2.0.0 completely removed the SPELL_CHECKERS
constant, and attaching "did you mean" to `Gem::UnknownCommandError`
errors required this constant to be defined.
The fix is to remove conditions on the `SPELL_CHECKERS` constant.
https://github.com/rubygems/rubygems/commit/9287cd80ed
|
|
Co-authored-by: Max Bernstein <ruby@bernsteinbear.com>
|
|
ZJIT: Add patchpoint for TracePoint activation
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
|
|
* ZJIT: Support compiling ISEQs for opt_pc = 0
* Test send with optional arguments
|
|
This reverts commit c1c0b32445c66e343c136faa28d7a0f0f46d96a2.
This test is clearly not reliable:
https://github.com/ruby/ruby/actions/runs/17446920961/job/49543543423
I want to skip this unstable test on GitHub Actions to make sure this
test doesn't prevent PRs from getting merged. We can continue to monitor
the state of this test on RubyCI and ci.rvm.jp.
|
|
ZJIT: Handle opt_case_dispatch insn
|
|
JSON.unsafe_load with Time object returns String
```
1) Failure:
JSONCommonInterfaceTest#test_unsafe_load_default_options [/path/to/ruby/test/json/json_common_interface_test.rb:230]:
<2025-09-03 14:28:31.293635 +0200> expected but was
<"2025-09-03 14:28:31 +0200">.
```
|
|
when passing proc to JSON.unsafe_load, matching the changes made in
https://github.com/ruby/json/commit/73d2137fd3ad.
https://github.com/ruby/json/commit/77292cbc9b
|
|
https://github.com/ruby/json/commit/9ebe105144
|
|
Bumps the rb-sys group with 1 update in the /test/rubygems/test_gem_ext_cargo_builder/custom_name/ext/custom_name_lib directory: [rb-sys](https://github.com/oxidize-rb/rb-sys).
Bumps the rb-sys group with 1 update in the /test/rubygems/test_gem_ext_cargo_builder/rust_ruby_example directory: [rb-sys](https://github.com/oxidize-rb/rb-sys).
Updates `rb-sys` from 0.9.116 to 0.9.117
- [Release notes](https://github.com/oxidize-rb/rb-sys/releases)
- [Commits](https://github.com/oxidize-rb/rb-sys/compare/v0.9.116...v0.9.117)
Updates `rb-sys` from 0.9.116 to 0.9.117
- [Release notes](https://github.com/oxidize-rb/rb-sys/releases)
- [Commits](https://github.com/oxidize-rb/rb-sys/compare/v0.9.116...v0.9.117)
---
updated-dependencies:
- dependency-name: rb-sys
dependency-version: 0.9.117
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: rb-sys
- dependency-name: rb-sys
dependency-version: 0.9.117
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: rb-sys
...
Signed-off-by: dependabot[bot] <support@github.com>
https://github.com/rubygems/rubygems/commit/02c46294ec
|
|
only configured sources
https://github.com/rubygems/rubygems/commit/ef78de5b69
|
|
sources`
"Not present in cache" felt a bit unclear, so I changed the reason to:
"No configured sources" or "source not present in configured sources",
also pointing explicitly to the configuration file where RubyGems is
looking for the source to be removed.
https://github.com/rubygems/rubygems/commit/2bae554eff
|
|
https://github.com/rubygems/rubygems/commit/7f0c90b3f0
|
|
https://github.com/rubygems/rubygems/commit/d86d9b3596
|
|
https://github.com/rubygems/rubygems/commit/b2daf4707b
|
|
https://github.com/rubygems/rubygems/commit/6fcc20f884
|
|
sources
https://github.com/rubygems/rubygems/commit/9c9fd4799f
|
|
https://github.com/rubygems/rubygems/commit/1f779adc47
|
|
displaying
https://github.com/rubygems/rubygems/commit/2afefa4a48
|
|
This approach better simulate that ["http://gems.example.com/"] is the
default list of sources, rather than ["https://rubygems.org/"].
https://github.com/rubygems/rubygems/commit/55130c259a
|
|
like 68682a5d2b2
https://github.com/ruby/ruby/actions/runs/17417763247/job/49449895757?pr=14433
|
|
TestTracepointObj#test_teardown_with_active_GC_end_hook was failing on
some platforms due to a Proc that is not marked being passed around.
Neither rb_tracepoint_new() nor rb_postponed_job_preregister() promise
to mark their callback `void *data`.
https://rubyci.s3.amazonaws.com/osx1300arm/ruby-master/log/20250902T154504Z.fail.html.gz
Add a GC.start to make the test a better detector for this safety issue
and fix it by getting the Proc from an ivar on the rooted module.
|
|
|
|
This fails way too often across many environments. I don't think this
test is healthy.
https://github.com/ruby/ruby/actions/runs/17343611722/job/49240735401
Before we give up on it, let me see if this helps.
|
|
https://github.com/ruby/ruby/actions/runs/17413734881/job/49436975287
|
|
ZJIT: Remove JITed code after TracePoint is enabled
|
|
* Failing optimization tests for NewRangeFixnum
* NewRangeFixnum general idea
* Use gen_prepare_call_with_gc on gen_new_range_fixnum; add additional hir tests
* Remove unused NewRange rewrite trigger when neither range is Fixnum literal
* Remove misleading 'profiled' name in range optimization tests
* Adjustments as per review comments
* Include new_range_fixnum tests
* remove non-ASCII character from comments as per PR review
* remove non-ASCII character from comments as per PR review
|
|
https://github.com/ruby/ruby/actions/runs/17410747983/job/49427074277
|
|
https://github.com/ruby/ruby/actions/runs/17410747983/job/49427074277
|
|
https://github.com/ruby/ruby/actions/runs/17408924679/job/49420774667
|
|
Previously, you could override the class initialize_dup/initialize_clone
method and the class hierarchy would not be set correctly inside the
method before calling super.
This removes Module#initialize_copy, and instead makes Object#dup/clone
call the underlying C function (rb_mod_init_copy) before calling the
appropriate initialize_dup/initialize_clone method.
This results in the following fixes:
* The appropriate initialize_dup method is called (dup on a class
will respect superclass initialize_dup).
* Inside class initialize_dup/initialize_clone/initialize_copy,
class ancestor hierarchy is correct.
* Calling singleton_class inside initialize_dup no longer raises
a TypeError later in dup.
* Calling singleton_class.ancestors inside initialize_dup no
longer results in missing ancestors.
Fixes [Bug #21538]
|
|
Add locations to struct `RNode_SCLASS`.
memo:
```
@ ProgramNode (location: (1,0)-(1,18))
+-- locals: []
+-- statements:
@ StatementsNode (location: (1,0)-(1,18))
+-- body: (length: 1)
+-- @ SingletonClassNode (location: (1,0)-(1,18))
+-- locals: []
+-- class_keyword_loc: (1,0)-(1,5) = "class"
+-- operator_loc: (1,6)-(1,8) = "<<"
+-- expression:
| @ SelfNode (location: (1,9)-(1,13))
+-- body: nil
+-- end_keyword_loc: (1,15)-(1,18) = "end"
```
|