summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-06-18Revert "merge revision(s) 22e4eeda6561693367fc7a00b92b90f46b09cabd, ↵nagachika
1ab7c412d2e3880a7ad233c32e93961888f8145c, fd549b229b0822198ddc847703194263a2186ed1: [Backport #20515]" This reverts commit dc4ca25e0a01e072ba3cf1fc47612aff72c980af.
2024-06-15merge revision(s) 22e4eeda6561693367fc7a00b92b90f46b09cabd, ↵nagachika
1ab7c412d2e3880a7ad233c32e93961888f8145c, fd549b229b0822198ddc847703194263a2186ed1: [Backport #20515] ci: Test whether GMP is working in compilers.yml (#10875) Avoid reoccurence of [Bug #20515] Requires https://github.com/ruby/ruby/pull/10876 since 18eaf0be905e3e251423b42d6f4e56b7cae1bc3b bug: https://bugs.ruby-lang.org/issues/20515 RUBY_CHECK_HEADER didn't define HAVE_{header-file} (#10876) --with-gmp is not working at all because HAVE_GMP_H was missing since 18eaf0be90. [Bug #20515] bug: https://bugs.ruby-lang.org/issues/20515 follow-up: https://bugs.ruby-lang.org/issues/20494 follow-up: 18eaf0be905e3e251423b42d6f4e56b7cae1bc3b follow-up: https://github.com/ruby/ruby/pull/10805 test_bignum: defined? returns String (#10880) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit didn't verify the test is working properly due to mistaken auto-merge… [Bug #20515] bug: https://bugs.ruby-lang.org/issues/20515 follow-up: 22e4eeda6561693367fc7a00b92b90f46b09cabd follow-up: https://github.com/ruby/ruby/pull/10875
2024-06-15merge revision(s) 18eaf0be905e3e251423b42d6f4e56b7cae1bc3b: [Backport #20494]nagachika
[Bug #20494] Search non-default directories for GMP Co-Authored-by: lish82 (Hiroki Katagiri)
2024-06-15Inline RB_VM_SAVE_MACHINE_CONTEXT into BLOCKING_REGIONKJ Tsanaktsidis
There's an exhaustive explanation of this in the linked redmine bug, but the short version is as follows: blocking_region_begin can spill callee-saved registers to the stack for its own use. That means they're not saved to ec->machine by the call to setjmp, since by that point they're already on the stack and new, different values are in the real registers. ec->machine's end-of-stack pointer is also bumped to accomodate this, BUT, after blocking_region_begin returns, that points past the end of the stack! As far as C is concerned, that's fine; the callee-saved registers are restored when blocking_region_begin returns. But, if another thread triggers GC, it is relying on finding references to Ruby objects by walking the stack region pointed to by ec->machine. If the C code in exec; subsequently does things that use that stack memory, then the value will be overwritten and the GC might prematurely collect something it shouldn't. [Bug #20493]
2024-06-15Fix inconsistent evaluation of keyword splat (#10959)Peter Zhu
[Bug #20180] Backports #9624.
2024-06-15compile.c: use putspecialobject for RubyVM::FrozenCoreJean Boussier
[Bug #20569] `putobject RubyVM::FrozenCore`, is not serializable, we have to use `putspecialobject VM_SPECIAL_OBJECT_VMCORE`.
2024-06-03merge revision(s) 631449ac6b9336dfce577a786aff7eca0b8abcf1:nagachika
README.ja.md: Remove Cirrus CI badge image. folloup for 15ee9c7c1b693f29b6b2dbe7b47488bf154e481c.
2024-06-03merge revision(s) b93553bb7e292a6eb83bbb60532b60126393534f:nagachika
Cirrus CI has been removed [ci skip]
2024-06-03merge revision(s) 15ee9c7c1b693f29b6b2dbe7b47488bf154e481c:nagachika
[DOC] README.md: Remove Cirrus CI badge image. (#8785) We removed the `.cirrus.yml` at the commit <01b5d1d2ff6ca91b2909dfa67295f59b53e6f065>. Let's remove the badge image too.
2024-06-03merge revision(s) 01b5d1d2ff6ca91b2909dfa67295f59b53e6f065:nagachika
YJIT: Add a cargo job for Arm64 and remove .cirrus.yml (#8679) * YJIT: Add a cargo job for Arm64 * YJIT: Use command names as job names They look more consistent with jobs that use the command name as a job name, such as `make (check)`, `make (test-bundled-gems)`, etc. * Remove .cirrus.yml
2024-06-03Revert "partially merge revision(s) ↵nagachika
70ad58cb62b195ba86a5ef07a565b22b02a040ea: [Backport #20516]" This reverts commit 519ac9c5fd7bfa75655231188ac1da9589563618.
2024-06-03Revert "merge revision(s) ↵nagachika
9f708d48f6df37ee9600db9d51b57a156609a13b,0301473fb523c71d8cdc4966971f31f502001185,7f0e26b7f99bf76408569892ce20318501f74729: [Backport #20516]" This reverts commit 0de1ff12973ffc04bc9a8b0799e963922986d1eb.
2024-06-02merge revision(s) ↵nagachika
9f708d48f6df37ee9600db9d51b57a156609a13b,0301473fb523c71d8cdc4966971f31f502001185,7f0e26b7f99bf76408569892ce20318501f74729: [Backport #20516] Clear runtime dependencies if default gems is specified. The current build system uses runtime dependencies from only `.bundle` directory. We shouldn't install runtime dependencies from rubygems.org when `make test-bundled-gems` is invoked. Fixed dependencies list format Re-use strscan with ruby repo
2024-06-01partially merge revision(s) 70ad58cb62b195ba86a5ef07a565b22b02a040ea: ↵nagachika
[Backport #20516] Update bundled_gems
2024-05-28[ruby/readline-ext] Skip test_interrupt_in_other_thread on arm32-linuxmatoro
This is a combination of main Ruby commit https://github.com/ruby/ruby/commit/aefc98891c42024039f19ef45bdfe93fbc590b7c and my PR correcting the regex https://github.com/ruby/ruby/pull/10819. Upstream Ruby requests that changes to this test go to readline-ext repo before being backported to 3.2 branch. https://github.com/ruby/readline-ext/commit/868f873a78
2024-05-18Fix `io_buffer_get_string` default length computation. (#8427)Samuel Williams
* Fix `io_buffer_get_string` default length computation. When an offset bigger than the size is given, the resulting length will be computed incorrectly. Raise an argument error in this case. * Validate all arguments.
2024-05-18Improvements to `IO::Buffer` `read`/`write`/`pread`/`pwrite`. (#7826)Samuel Williams
- Fix IO::Buffer `read`/`write` to use a minimum length.
2024-05-18Rename `data` -> `buffer` for better readability. (#7836)Samuel Williams
2024-05-18Adjust `else` style to be consistent in each files [ci skip]Nobuyoshi Nakada
2024-05-16merge revision(s) ae8990aef098410ecc2b5f48fea9d7d171a3c5f6: [Backport #20183]nagachika
Alias init functions The extension library has each initialization function named "Init_" + basename. If multiple extensions have the same base name (such as cgi/escape and erb/escape), the same function will be registered for both names. To fix this conflict, rename the initialization functions under sub directories using using parent names, when statically linking.
2024-05-14Fix `String#index` to clear MatchData when a regexp is passedJean Boussier
[Bug #20421] The bug was fixed in Ruby 3.3 via 9dcdffb8bf8a3654fd78bf1a58b30c8e13888a7a
2024-05-08CI: Pass -O2 for annocheckAlan Wu
Because `optflags` is pasted into the invocation line after `CC`, we were building with -O1 unintentionally. You can see this in the configuration summary: https://github.com/ruby/ruby/actions/runs/3933391169/jobs/6727044423#step:9:753 The check actually fails with -O2. To make it pass, upstream suggest that we use the annocheck GCC plugin. Since it requires building from source as the debian package for it isn't ready yet, punt on it for now and use `--skip-gaps`. Co-authored-by: Jun Aruga <jaruga@redhat.com>
2024-05-08[ruby/openssl] test_asn1.rb: Remove the assertions of the time string format ↵Jun Aruga
without second. This commit fixes the following errors in the tests. Because the OpenSSL project changed the code to make the time string format without second invalid. So, we drop the assertions. ``` 1) Error: test_generalizedtime(OpenSSL::TestASN1): OpenSSL::ASN1::ASN1Error: generalizedtime is too short /home/runner/work/ruby-openssl/ruby-openssl/test/openssl/test_asn1.rb:698:in `decode' /home/runner/work/ruby-openssl/ruby-openssl/test/openssl/test_asn1.rb:698:in `decode_test' /home/runner/work/ruby-openssl/ruby-openssl/test/openssl/test_asn1.rb:433:in `test_generalizedtime' 430: OpenSSL::ASN1::GeneralizedTime.new(Time.utc(9999, 9, 8, 23, 43, 39)) 431: # LibreSSL 3.6.0 requires the seconds element 432: return if libressl? => 433: decode_test B(%w{ 18 0D }) + "201612081934Z".b, 434: OpenSSL::ASN1::GeneralizedTime.new(Time.utc(2016, 12, 8, 19, 34, 0)) 435: # not implemented 436: # decode_test B(%w{ 18 13 }) + "https://github.com/ruby/openssl/commit/201612081934+0930".b, 2) Error: test_utctime(OpenSSL::TestASN1): OpenSSL::ASN1::ASN1Error: utctime is too short /home/runner/work/ruby-openssl/ruby-openssl/test/openssl/test_asn1.rb:698:in `decode' /home/runner/work/ruby-openssl/ruby-openssl/test/openssl/test_asn1.rb:698:in `decode_test' /home/runner/work/ruby-openssl/ruby-openssl/test/openssl/test_asn1.rb:411:in `test_utctime' 408: end 409: # Seconds is omitted. LibreSSL 3.6.0 requires it 410: return if libressl? => 411: decode_test B(%w{ 17 0B }) + "1609082343Z".b, 412: OpenSSL::ASN1::UTCTime.new(Time.utc(2016, 9, 8, 23, 43, 0)) 413: # not implemented 414: # decode_test B(%w{ 17 11 }) + "https://github.com/ruby/openssl/commit/500908234339+0930".b, ``` https://github.com/ruby/openssl/commit/2e826d5715
2024-05-08[ruby/net-http] Skip test_session_reuse_but_expire with OpenSSL 3.3Xi Ruoyao
OpenSSL 3.3.0 9 Apr 2024 is also broken. Signed-off-by: Xi Ruoyao <xry111@xry111.site> https://github.com/ruby/net-http/commit/ab525c956d
2024-04-23bump teenyv3_2_4nagachika
2024-04-23merge revision(s) 989a2355808a63fc45367785c82ffd46d18c900a:nagachika
Fix Use-After-Free issue for Regexp Co-authored-by: Isaac Peka <7493006+isaac-peka@users.noreply.github.com> --- regexec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
2024-04-23merge revision(s) 33e5b47c16f1fd3382186e6ffe73cfc6e00946f7:nagachika
Fix handling of reg->dmin in Regex matching --- regexec.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
2024-04-08Backport https://github.com/ruby/ruby/pull/9240 to Ruby 3.2KJ Tsanaktsidis
Merged into master in 7ba2506232d3fa6c4e82e3708c0ff746a1a8de5c [Bug #20050]
2024-04-07merge revision(s) d3279a0c11ca45ca85027e7eb74dc4aac52c478b: [Backport #20327]nagachika
[Bug #20327] Do not count subsecond to calculate UTC offset Assume that there will never be any time zones with UTC offsets that are subseconds. Historically, UTC offset has only been used down to the second. --- test/ruby/test_time_tz.rb | 8 ++++++++ time.c | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-)
2024-04-07merge revision(s) adaff1fc496b6f01fb1c4c812b9b4082618e2f79: [Backport #19592]nagachika
[Bug #19592] Fix ext/Setup support After [1], using ext/Setup to link some, but not all extensions failed during linking. I did not know about this option, and had assumed that only `--with-static-linked-ext` builds can include statically linked extensions. Include the support code for statically linked extensions in all configurations like before [1]. Initialize the table lazily to minimize footprint on builds that have no statically linked extensions. [1]: 790cf4b6d0475614afb127b416e87cfa39044d67 "Fix autoload status of statically linked extensions" --- load.c | 28 +++++++++++++++++----------- vm.c | 3 --- vm_core.h | 6 ------ 3 files changed, 17 insertions(+), 20 deletions(-)
2024-03-31merge revision(s) ↵nagachika
ac0163949a6ee678dfccec9f6e56422b91e5f0a9,01fd262e62076277a41af72ea13f20deb1b462a2: [Backport #20245] Compile code without Symbol GC always --- symbol.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) Fix crash when checking symbol encoding [Bug #20245] We sometimes pass in a fake string to sym_check_asciionly. This can crash if sym_check_asciionly raises because it creates a CFP with the fake string as the receiver which will crash if GC tries to mark the CFP. For example, the following script crashes: GC.stress = true Object.const_defined?("\xC3") --- symbol.c | 17 ++++++++++------- test/ruby/test_module.rb | 8 ++++++++ 2 files changed, 18 insertions(+), 7 deletions(-)
2024-03-31merge revision(s) ade56737e2273847426214035c0ff2340b43799a: [Backport #20190]nagachika
Fix coderange of invalid_encoding_string.<<(ord) Appending valid encoding character can change coderange from invalid to valid. Example: "\x95".force_encoding('sjis')<<0x5C will be a valid string "\x{955C}" --- string.c | 6 +++++- test/ruby/test_string.rb | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-)
2024-03-31merge revision(s) b14674b236445fb70f484603e678722760f678f4: [Backport #20194]nagachika
Memory leak with TracePoint on bmethod [Bug #20194] When disabling the TracePoint on bmethod, the hooks list is not freed. For example: obj = Object.new obj.define_singleton_method(:foo) {} bmethod = obj.method(:foo) tp = TracePoint.new(:return) {} 10.times do 100_000.times do tp.enable(target: bmethod) {} end puts `ps -o rss= -p #{$$}` end Before: 18208 22832 26528 29728 34000 37776 40864 44400 47680 51504 After: 16688 17168 17168 17248 17696 17760 17824 17824 17856 17920 --- test/ruby/test_settracefunc.rb | 13 +++++++++++++ vm_trace.c | 1 + 2 files changed, 14 insertions(+)
2024-03-31merge revision(s) 2554c5d3b8738a248cedb2fea96dfab9fbe19417: [Backport #20231]nagachika
Don't wait in `io_binwrite_string` if not necessary. (#9792) --- io.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)
2024-03-21Merge RDoc-6.5.1.1Hiroshi SHIBATA
2024-03-21merge revision(s) 64b6a018a38f200c957fdbbe7d0cbe0e64781c9f:nagachika
Fix test session reuse but expire (#9824) * OpenSSL 3.2.1 30 Jan 2024 is also broken Import 45064610725ddd81a5ea3775da35aa46985bc789 from ruby_3_3 branch tentatively. --- test/net/http/test_https.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
2024-03-10merge revision(s) d2cd903c85f38f42c6aefc6d97a1558f74d8d9db:nagachika
[ruby/openssl] pkey/ec: constify https://github.com/ruby/openssl/commit/6fb3499a7b --- ext/openssl/ossl_pkey_ec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
2024-02-29Make sure RUBY_YJIT_ENABLE only enables YJIT for truthy valuesAndrea Culot
2024-02-25merge revision(s) f15123c34ce80f3928612befe2a9aaf4c9d27fda: [Backport #18743]nagachika
Fix stack trace for rescued StopIteration --- enumerator.c | 15 +++++++++++++-- test/ruby/test_enumerator.rb | 20 ++++++++++++++++++++ 2 files changed, 33 insertions(+), 2 deletions(-)
2024-02-25Revert "merge revision(s) c8d162c889008028b148437d02f36f4edaa749fd: ↵nagachika
[Backport #19973]" This reverts commit 24dd529750c08b5603fb418a4f34998b9bf6c8f9.
2024-02-25merge revision(s) c8d162c889008028b148437d02f36f4edaa749fd: [Backport #19973]nagachika
[Bug #19973] Warn duplicated keyword arguments after keyword splat --- parse.y | 11 +++++++---- test/ruby/test_syntax.rb | 6 ++++++ 2 files changed, 13 insertions(+), 4 deletions(-)
2024-02-25merge revision(s) ↵nagachika
665b4c5b2a31078d7db0173ad60daad0b463c1fd,642875e474b4e6a13770b1dbbc33d466ba5e0718,54b9b80b84760717aadb8bf67f638785ed895a58,361bce8d2c4c90a01eb3b7365a87dec0d93bb2b6: [Backport #19967] [Bug #19967] Reset `LIBPATHENV` env after started Not to affect other tools invoked as child processes. --- common.mk | 3 ++- template/Makefile.in | 3 +++ template/fake.rb.in | 3 +++ tool/fake.rb | 8 ++++++++ 4 files changed, 16 insertions(+), 1 deletion(-) [Bug #19967] Revert "configure.ac: LIBPATHENV on macOS" This reverts commit 1961c786aab243b3eb60e7238224e87975d88056. These environment variables should no longer propagate to child processes. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) [Bug #19967] Delete real path --- tool/fake.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) [Bug #19967] Ignore library before build --- tool/fake.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
2024-01-31readline: Skip the test_interrupt_in_other_thread on arm32.Jun Aruga
Skip the test_interrupt_in_other_thread test failing on Travis arm32. The failing test is not a new issue. It had already been skipped in .travis.yml before updating .travis.yml. https://github.com/ruby/ruby/blob/7b05cb8dbbd637910757f402e64da3908b4bb809/.travis.yml#L99-L101 Note that RUBY_PLATFORM is "armv8l-linux-eabihf" on Travis arm32 pipeline. And the readline was deleted in both master and ruby_3_3 branches. https://github.com/ruby/ruby/commit/59fd67fc3d405e529e038172e769ff20a8fb5535 So, we only need this commit on ruby_3_2 and older Ruby version branches.
2024-01-31Backport .travis.yml from ruby_3_3 branch.Jun Aruga
Update the .travis.yml file copied from the latest ruby_3_3 branch <5124f9ac7513eb590c37717337c430cb93caa151>.
2024-01-18bump teenyv3_2_3nagachika
2024-01-18merge revision(s) b8a3f1bd456f92866c4a7bd83235f78c574784a8:nagachika
Fix crash in tracing object allocations ObjectSpace.trace_object_allocations_start could crash since it adds a TracePoint for when objects are freed. However, TracePoint could crash since it modifies st tables while inside the GC that is trying to free the object. This could cause a memory allocation to happen which would crash if it triggers another GC. See a crash log: http://ci.rvm.jp/results/trunk@ruby-sp1/4373707 --- ext/objspace/depend | 1 + ext/objspace/object_tracing.c | 7 +++++++ gc.h | 4 ++-- 3 files changed, 10 insertions(+), 2 deletions(-)
2024-01-18merge revision(s) e07e9f8491d9ab8b22d2bdf6a8aeba834dac7eef: [Backport #20174]nagachika
RJIT: Do nothing on jit_cont_free if cont is NULL. --- cont.c | 2 ++ 1 file changed, 2 insertions(+)
2024-01-18merge revision(s) 051a874325c177e040301878069c2b28f5d06ce6: [Backport #20096]nagachika
Fix memory overread in registry.rb The terminator is not actually getting filled in; we're simply passing (two) bytes of empty memory as the NUL terminator. This can lead to garbage characters getting written to registry values. Fix this by explicitly putting a WCHAR_NUL character into the string to be sent to the registry API, like we do in the MULTI_SZ case. [Bug #20096] --- ext/win32/lib/win32/registry.rb | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-)
2024-01-18merge revision(s) 37ed86fd3c798e298fad9db6e7df1f3f45e1e03b: [Backport #20161]nagachika
Fix memory leak in regexp grapheme clusters [Bug #20161] The cc->mbuf gets overwritten, so we need to free it to not leak memory. For example: str = "hello world".encode(Encoding::UTF_32LE) 10.times do 1_000.times do str.grapheme_clusters end puts `ps -o rss= -p #{$$}` end Before: 15536 15760 15920 16144 16304 16480 16640 16784 17008 17280 After: 15584 15584 15760 15824 15888 15888 15888 15888 16048 16112 --- regparse.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
2024-01-18merge revision(s) b3d612804946e841e47d14e09b6839224a79c1a4: [Backport #20150]nagachika
Fix memory leak in grapheme clusters [Bug #20150] String#grapheme_cluters and String#each_grapheme_cluster leaks memory because if the string is not UTF-8, then the created regex will not be freed. For example: str = "hello world".encode(Encoding::UTF_32LE) 10.times do 1_000.times do str.grapheme_clusters end puts `ps -o rss= -p #{$$}` end Before: 26000 42256 59008 75792 92528 109232 125936 142672 159392 176160 After: 9264 9504 9808 10000 10128 10224 10352 10544 10704 10896 --- string.c | 98 +++++++++++++++++++++++++++++++----------------- test/ruby/test_string.rb | 11 ++++++ 2 files changed, 75 insertions(+), 34 deletions(-)