| Age | Commit message (Collapse) | Author |
|
When we allocate new pages, allocate them on the end of the linked list.
Then when we compact we can move things to the head of the list
Notes:
Merged: https://github.com/ruby/ruby/pull/3814
|
|
Quantifier reduction when using +?)* and +?)+ should not be done
as it affects which text will be matched.
This removes the need for the RQ_PQ_Q ReduceType, so remove the
enum entry and related switch case.
Test that these are the only two patterns affected by testing all
quantifier reduction tuples for both the captured and uncaptured
cases and making sure the matched text is the same for both.
Fixes [Bug #17341]
Notes:
Merged: https://github.com/ruby/ruby/pull/3808
|
|
|
|
Incremental sweeping should sweep until we find a slot for objects to
use. `heap_increment` was adding a page to the heap even though we
would sweep immediately after.
Co-authored-by: John Hawthorn <john@hawthorn.email>
Notes:
Merged: https://github.com/ruby/ruby/pull/3837
|
|
Has been deprecated since 373282f6656d3d3d989d261e7a95f8e81b5c9712.
|
|
|
|
|
|
This reverts commit 1a5205536f0c0d6021450b11722919211847df86.
|
|
|
|
|
|
Hyphenated names are safe in GNU make.
|
|
|
|
Notes:
Merged-By: soutaro <matsumoto@soutaro.com>
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2764
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2764
|
|
Although 'RubyGems' are always available in upstream Ruby, it might not
be available optionally when Ruby is delivered via packaging systems.
E.g. Linux distributions.
Notes:
Merged: https://github.com/ruby/ruby/pull/2764
|
|
Although 'did_you_mean' is always available in upstream Ruby, it might
not be available when speed, memory, disk or network bandwidth is a
concern. This is typically the case for production environment, where
'did_you_mean' is of limited usage.
Also it might not be available optionally when Ruby is delivered via
packaging systems. E.g. Linux distributions.
Notes:
Merged: https://github.com/ruby/ruby/pull/2764
|
|
The OpenSSL engine of Digest uses the low-level API of OpenSSL, whose
use has been discouraged for years for multiple reasons.
A long-standing issue on a FIPS-enabled system is that using ::Digest
results in crashing the Ruby process, because the low-level API lacks
the mechanism to report an error (the policy violation) and thus kills
the process as a last resort[1][2]. Also, the upcoming OpenSSL 3.0 will
deprecate it for future removal[3]. Compiling with
-Wdeprecated-declarations will start to emit warnings.
A proper fix for this is to make it use the EVP API instead. This is a
non-trivial work as it requires backwards-incompatible changes to the
framework interface of Digest::Base and rb_digest_metadata_t.
It is more than 15 years ago that the openssl library became part of the
standard library. It has implemented the exactly same functionality as
OpenSSL::Digest, in fact, as a subclass of Digest::Class. There is not
much point in having an identical code in the digest library. Let's
just get rid of OpenSSL within digest. This leaves the C implementations
and the CommonCrypto engine for Apple systems.
A patch is being prepared for the openssl library to provide ::Digest
constants for better performance[4].
[1] https://bugs.ruby-lang.org/issues/6946
[2] https://bugs.ruby-lang.org/issues/13681
[3] https://www.openssl.org/docs/OpenSSL300Design.html
[4] https://github.com/ruby/openssl/pull/377
Notes:
Merged: https://github.com/ruby/ruby/pull/3149
|
|
Wrapping the example into a <code> block to avoid it being rendered as a link.
Notes:
Merged: https://github.com/ruby/ruby/pull/3686
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This API in fact pins objects passed to it. See vm.c:2546.
Notes:
Merged: https://github.com/ruby/ruby/pull/3815
|
|
|
|
Notes:
Merged-By: soutaro <matsumoto@soutaro.com>
|
|
Fix a typo: "nevative" => "negative" in `rb_fix_plus_fix`.
Notes:
Merged: https://github.com/ruby/ruby/pull/3834
|
|
|
|
|
|
|
|
|
|
Same as 8247b8edde, should not use rb_str_modify() here.
https://bugs.ruby-lang.org/issues/17343#change-88858
Notes:
Merged: https://github.com/ruby/ruby/pull/3833
|
|
|
|
|
|
C extensions can violate the ractor-safety, so only ractor-safe
C extensions (C methods) can run on non-main ractors.
rb_ext_ractor_safe(true) declares that the successive
defined methods are ractor-safe. Otherwiwze, defined methods
checked they are invoked in main ractor and raise an error
if invoked at non-main ractors.
[Feature #17307]
Notes:
Merged: https://github.com/ruby/ruby/pull/3824
|
|
ractor_copy() used rb_ary_modify() to make sure this array is not
sharing anything, but it also checks frozen flag. So frozen arrays
raises an error. To solve this issue, this patch introduces new
function rb_ary_cancel_sharing() which makes sure the array does not
share another array and it doesn't check frozen flag.
[Bug #17343]
A test is quoted from https://github.com/ruby/ruby/pull/3817
Notes:
Merged: https://github.com/ruby/ruby/pull/3831
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3828
|
|
To manage ractor-local data for C extension, the following APIs
are defined.
* rb_ractor_local_storage_value_newkey
* rb_ractor_local_storage_value
* rb_ractor_local_storage_value_set
* rb_ractor_local_storage_ptr_newkey
* rb_ractor_local_storage_ptr
* rb_ractor_local_storage_ptr_set
At first, you need to create a key of storage by
rb_ractor_local_(value|ptr)_newkey().
For ptr storage, it accepts the type of storage,
how to mark and how to free with ractor's lifetime.
rb_ractor_local_storage_value/set are used to access a VALUE
and rb_ractor_local_storage_ptr/set are used to access a pointer.
random.c uses this API.
Notes:
Merged: https://github.com/ruby/ruby/pull/3822
|
|
This patch contains the fowllowing hacks:
(1) Add "--timetable-data=FILE" option for test-all
This option enables to dump timeline event
contains worker, suite, and start/end time.
(2) remove TestJIT in test_jit_debug.rb on parallel test.
it is duplicated test.
(3) move test_jit.rb and test_jit_debug.rb at first
because these two tests are bottleneck of parallel tests.
On my environment, `make test-all TESTS=-j12` reduced the total time
190 seconds -> 140 seconds.
Notes:
Merged: https://github.com/ruby/ruby/pull/3826
|
|
Followup to #3823
Notes:
Merged: https://github.com/ruby/ruby/pull/3827
|
|
|
|
The vm mark function should only check if the current frame is a local
or not and then mark values in that frame. Since it's walking up the
stack looking at each cfp, then all ep's should be examined.
This fixes a bug in the Rails tests where we're seeing segv in railties.
Thanks Yasuo Honda for giving me a reliable repro!
Notes:
Merged: https://github.com/ruby/ruby/pull/3829
|
|
`-l` option has used `chomp!` since Ruby 2.5. [Bug #12926]
|
|
|