summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-08-08merge revision(s) e5dd40b1f3a11f48d566413ab347ce0cfdd94960: [Backport #18065]nagachika
Stop force-recycling evacuated array [Bug #18065] --- hash.c | 1 - 1 file changed, 1 deletion(-)
2021-08-04merge revision(s) b8386f7f7f6d7a7d76481e02d389d0f5211f0f2c:nagachika
Prepend DebugSystem to VCS class only And revert 24e5f1c982966c379220b1bbb26b4e0320180fa1, pepending to Kernel did not affect the top level methods before 3.0. --- tool/lib/vcs.rb | 3 --- tool/make-snapshot | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-)
2021-08-01merge revision(s) 24e5f1c982966c379220b1bbb26b4e0320180fa1:nagachika
Ignore 7z unless available `DebugSystem#system` is prepended in vcs.rb and defaulted to `exception: true`. --- tool/make-snapshot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
2021-08-01merge revision(s) 345db8f2aa373a31c619c8f85bd372f0a20829c1: [Backport #10902]nagachika
Avoid pointless attempts to open .so file if already required When attempting to require a file without an extension that has already been required or provided with an .so extension, only look for files with an .rb extension. There is no point in trying to find files with an .so extension, since we already know one has been loaded. Previously, attempting to require such a file scanned the load path twice, once for .rb and once for .so. Now it only scans once for .rb. The scan once for .rb cannot be avoided, since the .rb file would take precedence and should be loaded if it exists. Fixes [Bug #10902] --- load.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
2021-08-01merge revision(s) b360588cd3cbac5fb4f004aa53a8fdc715906719: [Backport #15856]nagachika
Sort feature index arrays by the priority of file types [Bug #15856] When looking for libraries to load with a feature name without extension, `.rb` files are given priority. However, since the feature index arrays were not in that order of priority, but in the order in which they were loaded, a lower priority extension library might be returned. In that case, the `.rb` file had to be searched for again from the `$LOAD_PATH`, resulting in poor performance. --- load.c | 52 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 7 deletions(-)
2021-07-29merge revision(s) ↵nagachika
8897098b5ca3ce987307d1799f7765e6a279ff0d,d04ba0906c35013a8432535168eec270d6e9a913: Update bundled_gems to pass test-bundled-gems on macOS. --- gems/bundled_gems | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Update bundled_gems --- gems/bundled_gems | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
2021-07-25merge revision(s) 292230cbf926e9892596ea37fd4567f0c49ab73c:nagachika
Fixed leaked global symbols --- gc.c | 14 +++++++++----- vm_insnhelper.c | 7 ++++--- vm_insnhelper.h | 2 +- vm_sync.c | 4 ++-- vm_sync.h | 6 ++++-- 5 files changed, 20 insertions(+), 13 deletions(-)
2021-07-25merge revision(s) ↵nagachika
73cd4951de20bf989747013b1e62a202f12ac2d2,6e6be107dd0c820afc4db68d09110ad96c4aebdd: Reduced GitHub Actions Moved leaked-globals before check. --- .github/workflows/macos.yml | 4 +++- .github/workflows/ubuntu.yml | 8 +++----- 2 files changed, 6 insertions(+), 6 deletions(-) Ignore test-bundled-gems on GitHub Actions because matrix tests has unknown issues --- .github/workflows/macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
2021-07-25partially merge revision(s) 5f69a7f60467fa58c2f998daffab43e118bff36c: ↵nagachika
[Backport #17666] Co-authored-by: Samuel Williams <@ioquatix> https://github.com/nagachika/ruby/pull/1/commits/2cee515f024f3295945f312cb6b052f972f9c93d
2021-07-25bump up bundled rbs and typeprof version to pass test-bundled-gems.nagachika
2021-07-25bump up bundled rbs and typeprof version to pass test-bundled-gems.nagachika
2021-07-22* 2021-07-22 [ci skip]git
2021-07-22partially merge revision(s) ↵nagachika
119697f61e2b2b157816a8aa33aada5863959900,4a627dbdfd1165022fa9e716ba845e937b03773d: [Backport #18014] [Bug #18014] Fix rb_gc_force_recycle unmark before sweep If we force recycle an object before the page is swept, we should clear it in the mark bitmap. If we don't clear it in the bitmap, then during sweeping we won't account for this free slot so the `free_slots` count of the page will be incorrect. --- gc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) [Bug #18014] Fix memory leak in GC when using Ractors When a Ractor is removed, the freelist in the Ractor cache is not returned to the GC, leaving the freelist permanently lost. This commit recycles the freelist when the Ractor is destroyed, preventing a memory leak from occurring. --- gc.c | 116 +++++++++++++++++++++++++++------------------------------- internal/gc.h | 6 +++ ractor.c | 3 ++ ractor_core.h | 5 +-- 4 files changed, 64 insertions(+), 66 deletions(-) Co-authored-by: Peter Zhu <peter@peterzhu.ca>
2021-07-18merge revision(s) ↵nagachika
25e56fe374478a2266ac25f22a07bb3c6a423c83,8758b07b1e4fd636dffb4b442388a3033c63d4b5,791e8eec66d3aebcee36c1369b0bf52bc3815e94: [Backport #18016] [ruby/fiddle] Fix Win32Types for Windows 64-bit (#63) https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types https://github.com/ruby/fiddle/commit/28ee5b1608 --- ext/fiddle/lib/fiddle/types.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) [ruby/fiddle] Fix more Win32Types definitions https://docs.microsoft.com/en-us/windows/win32/winprog/windows-data-types https://github.com/ruby/fiddle/commit/805c1a595a --- ext/fiddle/lib/fiddle/types.rb | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) [ruby/fiddle] win32types: sort https://github.com/ruby/fiddle/commit/35dec6c5a5 --- ext/fiddle/lib/fiddle/types.rb | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-)
2021-07-18merge revision(s) ↵nagachika
391abc543cea118a9cd7d6310acadbfa352668ef,e86c1f6fc53433ef5c82ed2b7a4cc9a12c153e4c,f6539202c52a051a4e6946a318a1d9cd29002990: [Backport #12052] Scan the coderange in the given encoding --- ext/-test-/string/enc_str_buf_cat.c | 14 ++++++++++++++ string.c | 32 ++++++++++++++++++++++--------- test/-ext-/string/test_enc_str_buf_cat.rb | 9 +++++++++ 3 files changed, 46 insertions(+), 9 deletions(-) Work around issue transcoding issue with non-ASCII compatible encodings and xml escaping When using a non-ASCII compatible source and destination encoding and xml escaping (the :xml option to String#encode), the resulting string was broken, as it used the correct non-ASCII compatible encoding, but contained data that was ASCII-compatible instead of compatible with the string's encoding. Work around this issue by detecting the case where both the source and destination encoding are non-ASCII compatible, and transcoding the source string from the non-ASCII compatible encoding to UTF-8. The xml escaping code will correctly handle the UTF-8 source string and the return the correctly encoded and escaped value. Fixes [Bug #12052] Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> --- test/ruby/test_transcode.rb | 19 +++++++++++++++++++ transcode.c | 6 ++++++ 2 files changed, 25 insertions(+) =?UTF-8?q?-=20add=20regression=20tests=20for=20U+6E7F=20(?= =?UTF-8?q?=E6=B9=BF)=20in=20ISO-2022-JP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In ISO-2022-JP, the bytes use to code are the same as those for "<>". This adds regression tests to make sure that these bytes, when representing 湿, are NOT escaped with encode("ISO-2022-JP, xml: :text) or similar. These are additional regression tests for #12052. --- test/ruby/test_transcode.rb | 3 +++ 1 file changed, 3 insertions(+)
2021-07-18merge revision(s) 1fac99afdae2671a9ca86bead5bde4d0e2eff1b4: [Backport #18030]nagachika
skip marking for uninitialized imemo_env. RUBY_INTERNAL_EVENT_NEWOBJ can expose uninitialized imemo_env objects and marking it will cause critical error. This patch skips marking on uninitialized imemo_env. See: http://rubyci.s3.amazonaws.com/centos7/ruby-master/log/20210329T183003Z.fail.html.gz Shortest repro-code is provided by mame-san. --- gc.c | 16 ++++++++++------ test/objspace/test_objspace.rb | 13 +++++++++++++ 2 files changed, 23 insertions(+), 6 deletions(-)
2021-07-07bump teeny version to 3.0.3.nagachika
2021-07-07bump up RUBY_PATCHLEVELv3_0_2nagachika
2021-07-07Fix StartTLS stripping vulnerabilityShugo Maeda
This fixes CVE-2021-32066. Reported by Alexandr Savca in <https://hackerone.com/reports/1178562>.
2021-07-07bump up RUBY_PATCHLEVELnagachika
2021-07-07Ignore IP addresses in PASV responses by default, and add new option use_pasv_ipYusuke Endoh
This fixes CVE-2021-31810. Reported by Alexandr Savca. Co-authored-by: Shugo Maeda <shugo@ruby-lang.org>
2021-07-07* 2021-07-07 [ci skip]git
2021-07-07Merge RubyGems-3.2.22 and Bundler-2.2.22Hiroshi SHIBATA
2021-07-07Merge RubyGems-3.2.21 and Bundler-2.2.21Hiroshi SHIBATA
2021-07-07Also merge tool/bundler/*.rb for testing of BundlerHiroshi SHIBATA
2021-07-07Use assert_raise instead of assert_raisesHiroshi SHIBATA
2021-07-07Workaround for make test-toolHiroshi SHIBATA
2021-07-07Fix a typo of c6a11b865e1f9085c88fe169a1f47680383580c2Yusuke Endoh
It failed to define `refute_path_not_exist`
2021-07-07Alias assert/refute_path_exists for test-unit gem.Hiroshi SHIBATA
It's required at https://github.com/rubygems/rubygems/pull/3141
2021-07-07Use the latest version of Bundler's gemspecHiroshi SHIBATA
2021-07-07Merge RubyGems-3.2.20 and Bundler-2.2.20Hiroshi SHIBATA
2021-07-07Merge RubyGems-3.2.19 and Bundler-2.2.19Hiroshi SHIBATA
2021-07-07Merge RubyGems-3.2.18 and Bundler-2.2.18Hiroshi SHIBATA
2021-07-07Merge RubyGems-3.2.17 and Bundler-2.2.17Hiroshi SHIBATA
2021-07-07Merge RubyGems-3.2.16 and Bundler-2.2.16Hiroshi SHIBATA
2021-07-03Revert "merge revision(s) ↵nagachika
e86c1f6fc53433ef5c82ed2b7a4cc9a12c153e4c,f6539202c52a051a4e6946a318a1d9cd29002990: [Backport #1205]" This reverts commit e62cccaeb0986d43480bccbd365cb20056bda4d7.
2021-07-03merge revision(s) ↵nagachika
e86c1f6fc53433ef5c82ed2b7a4cc9a12c153e4c,f6539202c52a051a4e6946a318a1d9cd29002990: [Backport #1205] Work around issue transcoding issue with non-ASCII compatible encodings and xml escaping When using a non-ASCII compatible source and destination encoding and xml escaping (the :xml option to String#encode), the resulting string was broken, as it used the correct non-ASCII compatible encoding, but contained data that was ASCII-compatible instead of compatible with the string's encoding. Work around this issue by detecting the case where both the source and destination encoding are non-ASCII compatible, and transcoding the source string from the non-ASCII compatible encoding to UTF-8. The xml escaping code will correctly handle the UTF-8 source string and the return the correctly encoded and escaped value. Fixes [Bug #12052] Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org> --- test/ruby/test_transcode.rb | 19 +++++++++++++++++++ transcode.c | 6 ++++++ 2 files changed, 25 insertions(+) =?UTF-8?q?-=20add=20regression=20tests=20for=20U+6E7F=20(?= =?UTF-8?q?=E6=B9=BF)=20in=20ISO-2022-JP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In ISO-2022-JP, the bytes use to code are the same as those for "<>". This adds regression tests to make sure that these bytes, when representing 湿, are NOT escaped with encode("ISO-2022-JP, xml: :text) or similar. These are additional regression tests for #12052. --- test/ruby/test_transcode.rb | 3 +++ 1 file changed, 3 insertions(+)
2021-07-03merge revision(s) ↵nagachika
0846c2da457e7523819236ac7da492029b3ef73d,6c7cb00c094332a208cf36e5cd723a9ba60c41b8: [Backport #16376] Check backref number buffer overrun [Bug #16376] --- regcomp.c | 21 ++++++++++++--------- test/ruby/test_regexp.rb | 6 ++++++ 2 files changed, 18 insertions(+), 9 deletions(-) test/ruby/test_regexp.rb: Avoid "ambiguity between regexp and two divisions" --- test/ruby/test_regexp.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
2021-07-03merge revision(s) 5d710d7e41ef3a9877426c87de121be3bf770e34: [Backport #17476]nagachika
Fix the wrong file detection for net-*.gemspec [Bug #17476][ruby-core:101724] --- tool/rbinstall.rb | 5 +++++ 1 file changed, 5 insertions(+)
2021-06-13merge revision(s) d74e5d5b4fba41a9120b3ed2762cf765478605ad: [Backport #17948]nagachika
Crash more nicely when the VM isn't fully set up If we crash but the VM isn't fully alive, we can get an infinite loop. --- vm_dump.c | 62 ++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 32 insertions(+), 30 deletions(-)
2021-06-10merge revision(s) 773c690f2553db31a9cc83a037f5449e0c1ea456:nagachika
[ruby/net-ftp] Bump version to 0.1.2 https://github.com/ruby/net-ftp/commit/895ba44b3c --- lib/net/ftp.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
2021-06-10merge revision(s) 370949aad60e992c26037241c07489c056554ea3:nagachika
test/net/ftp/test_ftp.rb - fix intermittent MinGW failure Fixes intermittent error as below: [242/838] 5316=test_ftp #<Thread:0x0000020aa8733f20 D:/a/ruby/ruby/src/test/net/ftp/test_ftp.rb:2532 run> terminated with exception (report_on_exception is true): D:/a/ruby/ruby/src/tool/lib/minitest/unit.rb:199:in `assert': Expected #<Errno::ECONNRESET: An existing connection was forcibly closed by the remote host.> to be nil. (MiniTest::Assertion) from D:/a/ruby/ruby/src/tool/lib/test/unit/core_assertions.rb:504:in `assert' from D:/a/ruby/ruby/src/tool/lib/minitest/unit.rb:299:in `assert_nil' from D:/a/ruby/ruby/src/test/net/ftp/test_ftp.rb:430:in `ensure in block in test_list_read_timeout_exceeded' from D:/a/ruby/ruby/src/test/net/ftp/test_ftp.rb:431:in `block in test_list_read_timeout_exceeded' from D:/a/ruby/ruby/src/test/net/ftp/test_ftp.rb:2539:in `block in create_ftp_server' D:/a/ruby/ruby/src/test/net/ftp/test_ftp.rb:426:in `write': An existing connection was forcibly closed by the remote host. (Errno::ECONNRESET) from D:/a/ruby/ruby/src/test/net/ftp/test_ftp.rb:426:in `print' from D:/a/ruby/ruby/src/test/net/ftp/test_ftp.rb:426:in `block (2 levels) in test_list_read_timeout_exceeded' from D:/a/ruby/ruby/src/test/net/ftp/test_ftp.rb:420:in `each' from D:/a/ruby/ruby/src/test/net/ftp/test_ftp.rb:420:in `each_with_index' from D:/a/ruby/ruby/src/test/net/ftp/test_ftp.rb:420:in `block in test_list_read_timeout_exceeded' from D:/a/ruby/ruby/src/test/net/ftp/test_ftp.rb:2539:in `block in create_ftp_server' --- test/net/ftp/test_ftp.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
2021-06-10merge revision(s) fe11031b677f301fa011202f3d27e8eb73064264:nagachika
test/net/ftp/test_ftp.rb: remove unused variable --- test/net/ftp/test_ftp.rb | 1 - 1 file changed, 1 deletion(-)
2021-06-10merge revision(s) 1b2abb6590a653cb7b31d73c42edbaf2d0617b27:nagachika
[ruby/net-ftp] Replace "iff" with "if and only if" iff means if and only if, but readers without that knowledge might assume this to be a spelling mistake. To me, this seems like exclusionary language that is unnecessary. Simply using "if and only if" instead should suffice. https://github.com/ruby/net-ftp/commit/e920473618 --- lib/net/ftp.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
2021-06-10merge revision(s) 990baec41174a0b4cf7e285cf3185b4ab444437e:nagachika
[ruby/net-ftp] Close the passive connection data socket if there is an error setting up the transfer Previously, the connection leaked in this case. This uses begin/ensure and checking for an error in the ensure block. An alternative approach would be to not even perform the connection until after the RETR (or other) command has been sent. However, I'm not sure all FTP servers support that. The current behavior is: * Send (PASV/EPSV) * Connect to the host/port returned in 227/229 reply * Send (RETR/other command) Changing it to connect after the RETR could break things. FTP servers might expect that the client has already connected before sending the RETR. The alternative approach is more likely to introduce backwards compatibility issues, compared to the begin/ensure approach taken here. Fixes Ruby Bug 17027 https://github.com/ruby/net-ftp/commit/6e8535f076 --- lib/net/ftp.rb | 24 ++++++++++++++---------- test/net/ftp/test_ftp.rb | 39 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 51 insertions(+), 12 deletions(-)
2021-06-10merge revision(s) a86c6cb34df0c44973efe6578ba1cd9150af22cf:nagachika
[ruby/net-ftp] Replace Timeout.timeout with socket timeout Timeout.timeout is inefficient since it spins up a new thread for each invocation, use Socket.tcp's connect_timeout option instead when we aren't using SOCKS (we can't replace Timeout.timeout for SOCKS yet since SOCKSSocket doesn't have a connect_timeout option). https://github.com/ruby/net-ftp/commit/d65910132f --- lib/net/ftp.rb | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)
2021-06-10merge revision(s) 73f9831a57e133ab5645221df862a176a42f6685: [Backport #17941]nagachika
POSIX timer cannot be shared in forked process [Bug #17941] --- thread_pthread.c | 1 + 1 file changed, 1 insertion(+)
2021-06-03merge revision(s) ↵nagachika
86c262541ad07528842d76dab4b9b34bd888d5f4,7e14762159643b4415e094f9d2a90afaf7994588: [Backport #17935] Fix a race condition around mjit_recompile This fixes SEGVs like https://github.com/ruby/ruby/runs/2715166621?check_suite_focus=true. When mjit_recompile is called when mjit_compile is compiling the exact same iseq (and after it called mjit_capture_cc_entries), iseq->body->jit_unit is re-created and its cc_entries becomes NULL. Then, when it tries to lookup cc_entries through iseq->body->jit_unit, it fails. --- mjit.c | 21 +++++++++++++-------- mjit_worker.c | 4 ++++ 2 files changed, 17 insertions(+), 8 deletions(-) Do not doubly hold an MJIT lock This is a follow-up of 86c262541ad07528842d76dab4b9b34bd888d5f4. CRITICAL_SECTION_START/FINISH are not needed when it's called from an MJIT worker. Also, ZALLOC needs to be calloc because ZALLOC may trigger GC, which an MJIT worker must not do. --- mjit.c | 23 ++++++++++++++--------- mjit_worker.c | 4 ++-- 2 files changed, 16 insertions(+), 11 deletions(-)
2021-06-03merge revision(s) 1aac0e88193a82ed36b43e852c46414181b66455: [Backport #17928]nagachika
Mark inlined ISeqs during MJIT compilation (#4539) [Bug #17584] --- common.mk | 6 ++++++ mjit.c | 18 +++++++++++----- mjit_compile.c | 24 +++++++++++++++------ mjit_worker.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 99 insertions(+), 15 deletions(-)
2021-05-29merge revision(s) 636d4f7eb9f3fcb088e1a44af4181c4aa36789b4: [Backport #17822]nagachika
Avoid setting the visibility of refinement method entries Since refinement search is always performed, these entries should always be public. The method entry that the refinement search returns decides the visibility. Fixes [Bug #17822] --- test/ruby/test_refinement.rb | 22 ++++++++++++++++++++++ vm_method.c | 15 ++++++++++----- 2 files changed, 32 insertions(+), 5 deletions(-)