| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
| |
We shouldn't run gc_verify_internal_consistency after every GC step
when RGENGC_CHECK_MODE >= 2, only when GC has finished. Running it
on every GC step makes it too slow.
|
| |
|
|
|
|
|
|
| |
(https://github.com/ruby/net-http/pull/124)
https://github.com/ruby/net-http/commit/aaf26b21d6
|
| |
|
|
|
|
| |
https://github.com/rubygems/rubygems/commit/38ee82c297
|
|
|
|
| |
https://github.com/rubygems/rubygems/commit/5fa0ebf09b
|
|
|
|
|
|
| |
Gem.path_separator can also be a regexp...
https://github.com/rubygems/rubygems/commit/7e6e56a5f3
|
|
|
|
|
|
| |
Will save on an error if it would be nil from an exception happening during that line
https://github.com/rubygems/rubygems/commit/d6797a04e9
|
|
|
|
| |
https://github.com/rubygems/rubygems/commit/3135ad91d4
|
|
|
|
|
|
| |
For ruby-core compat
https://github.com/rubygems/rubygems/commit/c8f85c91a8
|
|
|
|
| |
https://github.com/rubygems/rubygems/commit/f6877c29b9
|
|
|
|
|
|
| |
for gem exec gem
https://github.com/rubygems/rubygems/commit/13a6dd4992
|
|
|
|
| |
https://github.com/rubygems/rubygems/commit/a767f7b9be
|
|
|
|
|
|
| |
Also fix native extensions that load dependencies
https://github.com/rubygems/rubygems/commit/a06f9870c7
|
|
|
|
|
|
| |
gem exec
https://github.com/rubygems/rubygems/commit/664f3e1e5f
|
|
|
|
| |
https://github.com/rubygems/rubygems/commit/dac1609fd5
|
|
|
|
| |
https://github.com/rubygems/rubygems/commit/3078e5834e
|
|
|
|
| |
https://github.com/rubygems/rubygems/commit/ca69a317f3
|
| |
|
|
|
|
|
|
|
|
|
| |
* vm_dump.c: Dump machine registers on loongarch64 Linux.
* coroutines: Support for native loongarch64 coroutines.
---------
Co-authored-by: zangruochen <zangruochen@loongson.cn>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/6998d139ddd3e68c71e9e398d8e40b71a2f39812...69d9d449aced6a2ede0bc19182fadc3a0a42d2b0)
---
updated-dependencies:
- dependency-name: actions/cache
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
|
| |
|
| |
|
|
|
|
| |
Partly reverted 1ddda4c0d7d2b83658ab149e36e088961ca0b2dc
|
|
|
|
| |
https://github.com/ruby/readline-ext/commit/9245965ecd
|
|
|
|
| |
https://github.com/ruby/readline-ext/commit/efe2be6e4c
|
|
|
|
| |
https://github.com/ruby/readline-ext/commit/f034697a48
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, when we have a lot of ivars defined, we would exit via
`jit_chain_guard` for megamorphic ivars. Now if we have more than the
max depth of ivars we can call `rb_ivar_set` instead of exiting.
Using the following script:
```ruby
class A
def initialize
@a = 1
end
def a
@a
end
end
N = 30
N.times do |i|
eval <<-eorb
class A#{i} < A
def initialize
@a#{i} = 1
super
end
end
eorb
end
klasses = N.times.map { Object.const_get(:"A#{_1}") }
1000.times do
klasses.each do |k|
k.new.a
end
end
```
Exits before this change show exits for `setinstancevariable`:
```
***YJIT: Printing YJIT statistics on exit***
method call exit reasons:
klass_megamorphic: 24,975 (100.0%)
invokeblock exit reasons:
(all relevant counters are zero)
invokesuper exit reasons:
(all relevant counters are zero)
leave exit reasons:
interp_return: 26,948 (100.0%)
se_interrupt: 1 ( 0.0%)
getblockparamproxy exit reasons:
(all relevant counters are zero)
getinstancevariable exit reasons:
megamorphic: 13,986 (100.0%)
setinstancevariable exit reasons:
megamorphic: 19,980 (100.0%)
opt_aref exit reasons:
(all relevant counters are zero)
expandarray exit reasons:
(all relevant counters are zero)
opt_getinlinecache exit reasons:
(all relevant counters are zero)
invalidation reasons:
(all relevant counters are zero)
num_send: 155,823
num_send_known_class: 0 ( 0.0%)
num_send_polymorphic: 119,880 (76.9%)
bindings_allocations: 0
bindings_set: 0
compiled_iseq_count: 36
compiled_block_count: 158
compiled_branch_count: 240
block_next_count: 10
defer_count: 70
freed_iseq_count: 0
invalidation_count: 0
constant_state_bumps: 0
inline_code_size: 29,216
outlined_code_size: 27,948
freed_code_size: 0
code_region_size: 65,536
live_context_size: 8,322
live_context_count: 219
live_page_count: 4
freed_page_count: 0
code_gc_count: 0
num_gc_obj_refs: 130
object_shape_count: 295
side_exit_count: 58,942
total_exit_count: 85,890
yjit_insns_count: 1,023,581
avg_len_in_yjit: 11.2
Top-4 most frequent exit ops (100.0% of exits):
opt_send_without_block: 24,975 (42.4%)
setinstancevariable: 19,980 (33.9%)
getinstancevariable: 13,986 (23.7%)
leave: 1 ( 0.0%)
```
Exits after this change show we have no exits for `setinstancevariable`.
```
***YJIT: Printing YJIT statistics on exit***
method call exit reasons:
klass_megamorphic: 24,975 (100.0%)
invokeblock exit reasons:
(all relevant counters are zero)
invokesuper exit reasons:
(all relevant counters are zero)
leave exit reasons:
interp_return: 60,912 (100.0%)
se_interrupt: 3 ( 0.0%)
getblockparamproxy exit reasons:
(all relevant counters are zero)
getinstancevariable exit reasons:
(all relevant counters are zero)
setinstancevariable exit reasons:
(all relevant counters are zero)
opt_aref exit reasons:
(all relevant counters are zero)
expandarray exit reasons:
(all relevant counters are zero)
opt_getinlinecache exit reasons:
(all relevant counters are zero)
invalidation reasons:
(all relevant counters are zero)
num_send: 155,823
num_send_known_class: 0 ( 0.0%)
num_send_polymorphic: 119,880 (76.9%)
bindings_allocations: 0
bindings_set: 0
compiled_iseq_count: 36
compiled_block_count: 179
compiled_branch_count: 240
block_next_count: 11
defer_count: 70
freed_iseq_count: 0
invalidation_count: 0
constant_state_bumps: 0
inline_code_size: 31,032
outlined_code_size: 29,708
freed_code_size: 0
code_region_size: 65,536
live_context_size: 8,360
live_context_count: 220
live_page_count: 4
freed_page_count: 0
code_gc_count: 0
num_gc_obj_refs: 130
object_shape_count: 295
side_exit_count: 24,978
total_exit_count: 85,890
yjit_insns_count: 1,076,966
avg_len_in_yjit: 12.2
Top-2 most frequent exit ops (100.0% of exits):
opt_send_without_block: 24,975 (100.0%)
leave: 3 ( 0.0%)
```
Co-authored-by: Aaron Patterson <tenderlove@ruby-lang.org>
|
|
|
|
| |
Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>
Co-authored-by: Jimmy Miller <jimmy.miller@shopify.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(https://github.com/ruby/irb/pull/484)
* Improve assert_indenting helper
Instead of putting assertions inside the `auto_indent` block, we
can just make `auto_indent` return the calculated space count, and use
it for assertion outside of the `auto_indent` block call.
This simplifies the setup code and makes the intention easier to
understand.
* Introduce assert_row_indenting helper
1. Helper users shouldn't need to write 2 assertions for the current and
the next line's indentation.
2. With this new approach, we can generate clearer error message for
both cases:
When the current line's space count doesn't match
```
Incorrect spaces calculation for line:
```
> def each_top_level_statement
```
All lines:
```
def each_top_level_statement
```
<0> expected but was
<nil>
```
When the next line's space count doesn't match
```
Incorrect spaces calculation for line after the current line:
```
def each_top_level_statement
>
```
All lines:
```
def each_top_level_statement
```
<3> expected but was
<2>
```
* Replace assert_indenting with assert_row_indenting
|
|
|
|
|
|
|
|
|
| |
* YJIT: Fix clippy issues and remove unused params
* Remove an unnecessary whitespace
---------
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Minitest repository does not commit its gemspec file.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
ruby/bigdecimal#187 has changed a behavior and ruby/spec also needed a
follow up at https://github.com/ruby/ruby/commit/0d8ef62fc293.
However, because bigdecimal is a separate gem and can be updated in
older versions of ruby, `RUBY_VERSION` is not appropriate for this
guard. That means it needs bumped up `BigDecimal::VERSION`.
https://github.com/ruby/bigdecimal/commit/3a2a7a9353
|
|
|
|
| |
https://github.com/ruby/bigdecimal/commit/b66ef9fbb5
|
|
|
|
|
|
|
|
| |
* This is not supported on TruffleRuby, which requires the value to be
set before RB_GC_GUARD() is called.
* See https://github.com/oracle/truffleruby/pull/2879
https://github.com/ruby/bigdecimal/commit/7b2957922f
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is a `time` key in GC.stat that gives us the total time spent in
GC. However, we don't know what proportion of the time is spent between
marking and sweeping. This makes it difficult to tune the GC as we're
not sure where to focus our efforts on.
This PR adds keys `marking_time` and `sweeping_time` to GC.stat for the
time spent marking and sweeping, in milliseconds.
[Feature #19437]
|
|
|
|
|
| |
This commit separates the marking and sweeping phases so that marking
functions do not directly call sweeping functions.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[Bug #19439]
The instance variables were restore on the Regexp source,
not the regexp itself.
Unfortunately we have a bit of a chicken and egg problem.
The source holds the encoding, and the encoding need to be set on
the source to be able to instantiate the Regexp.
So the instance variables have to be read on the `source`.
To correct this we transfert the instance variables after
instantiating the Regexp.
The only way to avoid this would be to read the instance variable
twice and rewind.
|
| |
|