| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Otherwise you can have work in some circumstance but not in others.
|
| |
|
|
|
|
|
|
| |
Enable the test commented out in ruby/ruby@d0f5dc9eac78ecade459.
Extracted from GH-7033, that is for initialization at start up time
and this test is unrelated to it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch introduce M:N thread scheduler for Ractor system.
In general, M:N thread scheduler employs N native threads (OS threads)
to manage M user-level threads (Ruby threads in this case).
On the Ruby interpreter, 1 native thread is provided for 1 Ractor
and all Ruby threads are managed by the native thread.
From Ruby 1.9, the interpreter uses 1:1 thread scheduler which means
1 Ruby thread has 1 native thread. M:N scheduler change this strategy.
Because of compatibility issue (and stableness issue of the implementation)
main Ractor doesn't use M:N scheduler on default. On the other words,
threads on the main Ractor will be managed with 1:1 thread scheduler.
There are additional settings by environment variables:
`RUBY_MN_THREADS=1` enables M:N thread scheduler on the main ractor.
Note that non-main ractors use the M:N scheduler without this
configuration. With this configuration, single ractor applications
run threads on M:1 thread scheduler (green threads, user-level threads).
`RUBY_MAX_CPU=n` specifies maximum number of native threads for
M:N scheduler (default: 8).
This patch will be reverted soon if non-easy issues are found.
[Bug #19842]
|
|
|
|
|
| |
Remove the bad example that can lead to misunderstanding as if this
precision is defined in Ruby.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, Kernel#lambda returned a non-lambda proc when given a
non-literal block and issued a warning under the `:deprecated` category.
With this change, Kernel#lambda will always return a lambda proc, if it
returns without raising.
Due to interactions with block passing optimizations, we previously had
two separate code paths for detecting whether Kernel#lambda got a
literal block. This change allows us to remove one path, the hack done
with rb_control_frame_t::block_code introduced in 85a337f for supporting
situations where Kernel#lambda returned a non-lambda proc.
[Feature #19777]
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
|
| |
|
|
|
|
|
|
| |
- String#start_with?
- String#delete_prefix
- String#delete_prefix!
|
|
|
| |
* Skip RBS test.
|
|
|
|
|
|
|
|
|
|
|
| |
https://github.com/ruby/ruby/actions/runs/5956398507/job/16157091112
This has been extremely flaky on macOS GitHub Actions.
Benoit suggested to quarantine it if it's too problematic (it is) and
there's no reasonable fix in a short time (it already took too long).
So this commit follows the suggestion.
We should remove revert this once rb_cloexec_open() is fixed.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Deprecate Kernel#open and IO support for subprocess creation and
forking. This deprecates subprocess creation and forking in
- Kernel#open
- URI.open
- IO.binread
- IO.foreach
- IO.readlines
- IO.read
- IO.write
This behavior is slated to be removed in Ruby 4.0
[Feature #19630]
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
{Nil,True,False}Class#singleton_methods always returns [] indicating
that there are no singleton methods defined, so #singleton_method
should be consistent with that.
Fixes [Bug #11064]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[Feature #19755]
Before (in /tmp/test.rb):
```ruby
Object.class_eval("p __FILE__") # => "(eval)"
```
After:
```ruby
Object.class_eval("p __FILE__") # => "(eval at /tmp/test.rb:1)"
```
This makes it much easier to track down generated code in case
the author forgot to provide a filename argument.
|
|
|
|
|
|
|
|
|
|
|
|
| |
[Feature #18885]
For now, the optimizations performed are:
- Run a major GC
- Compact the heap
- Promote all surviving objects to oldgen
Other optimizations may follow.
|
| |
|
| |
|
|
|
|
| |
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
|
| |
|
| |
|
|
|
|
| |
Introduce `Module#set_temporary_name` for setting identifiers for otherwise
anonymous modules/classes.
|
| |
|
|
|
|
|
| |
The error messages were slightly different due, which causes different
behaviour on 32-bit and 64-bit systems.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
[Feature #19236]
In Ruby 3.3, `Hash.new` shall print a deprecation warning if keyword arguments
are passed instead of treating them as an implicit positional Hash.
This will allow to safely introduce a `capacity` keyword argument in 3.4
Co-authored-by: Jean Boussier <byroot@ruby-lang.org>
|
| |
|
| |
|
|
|
|
|
|
| |
When `freeze: true` argument is passed.
[Bug #19427]
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Previously, named memberless Structs were allowed, but anonymous
memberless Structs were not.
Fixes [Bug #19416]
|
| |
|
|
|
|
|
|
| |
`GETRUSAGE_BASED_CLOCK_PROCESS_CPUTIME_ID` clock uses `getrusage`
always if available as the name states. That is if it is implemented
`getrusage` is available, regardless microseconds in its results.
|
|
|
|
|
|
|
|
| |
Prior to commit 5806c54447439f2ba22892e4045e78dd80f96f0c, it was "at
least one result with precision beyond milliseconds (with none-zero
microseconds) should exist"; after this commit, "at least one result
should have zero microseconds". This chance is lower than the
previous condition.
|
| |
|
|
|
|
| |
[Feature #19538]
|
|
|
|
|
|
| |
[Feature #19561]
It's useful to be able to remove references from weak maps.
|
| |
|
|
|
|
| |
[Feature #18498]
|
|
|
|
| |
This reverts commit fce8f9f24e4903784266fc9694f86ddd930d6141.
|
|
|
|
| |
[Feature #18498]
|
| |
|
|
|
|
|
|
|
|
| |
This reverts commit 87253d047ce35e7836b6f97edbb4f819879a3b25.
Revert "Implement `Process.warmup`"
This reverts commit ba6ccd871442f55080bffd53e33678c0726787d2.
|
|
|
|
|
|
|
|
|
|
|
|
| |
[Feature #18885]
For now, the optimizations performed are:
- Run a major GC
- Compact the heap
- Promote all surviving objects to oldgen
Other optimizations may follow.
|
|
|
|
| |
Fixes [Bug #19380]
|