87158 Commits

Author SHA1 Message Date
David Rodríguez
52c02794df [rubygems/rubygems] Add missing flag passed to git fetch
Doesn't really change the test outcome, but I noticed it was missing.

https://github.com/rubygems/rubygems/commit/ea4f9d5209
2024-08-21 14:47:57 +00:00
Kevin Newton
2bc141f2b6
[PRISM] Fix up test exception assertion for Prism 2024-08-21 10:34:12 -04:00
Peter Zhu
d5dbaa5da3 Remove unused weakmap field in wmap_foreach 2024-08-21 08:43:59 -04:00
David Rodríguez
419d3221fb [rubygems/rubygems] Fix gem uninstall <name>:<version> failing on shadowed default gems
https://github.com/rubygems/rubygems/commit/29357a5dd6
2024-08-21 12:07:10 +00:00
David Rodríguez
3ebe249ce1 [rubygems/rubygems] Add better error when trying to develop RubyGems with an unsupported Ruby version
https://github.com/rubygems/rubygems/commit/9d41c4088a
2024-08-21 12:06:43 +00:00
David Rodríguez
54b6025887 [rubygems/rubygems] Regeneration previous git application caches that didn't include bare repos
https://github.com/rubygems/rubygems/commit/417319ecb1
2024-08-21 12:06:28 +00:00
Nobuyoshi Nakada
7845ab1bc9
[Bug #20687] Exclude just built ruby as baseruby
On Windows, an executable file in the current directory has the
priority to the PATH environment variable always.
2024-08-21 20:43:56 +09:00
Nobuyoshi Nakada
6ab591f80a
[Bug #20687] Check if base ruby provides necessary libraries 2024-08-21 16:56:44 +09:00
Hiroshi SHIBATA
71c14c8889 Don't show script name when bundle exec and call ruby script directly. 2024-08-21 16:48:35 +09:00
Hiroshi SHIBATA
c97dc7739e Skip to show script name with using ruby -r option 2024-08-21 16:48:35 +09:00
Hiroshi SHIBATA
5fedf1c3ac Show correct script name with sub-feature case 2024-08-21 16:48:35 +09:00
Hiroshi SHIBATA
b41d79962a Reapply "[ruby/uri] Warn compatibility methods in RFC3986_PARSER"
This reverts commit 3da7e440e9fca835f5475a98f1c0afb4d2ac71db.
2024-08-21 14:52:29 +09:00
Soutaro Matsumoto
ea828c0bf0 Skip failing tempfile library tests 2024-08-21 13:55:09 +09:00
Hiroshi SHIBATA
592b90328a
Generate parsers of RDoc with Racc 1.8.1 2024-08-21 13:30:01 +09:00
Michael Chui
014708ad5a [ruby/logger] Guarantee level_override exists
Some Ruby apps subclass Logger without running the superclass
constructor, which means that `@level_override` isn't initialized
properly. This can be fixed in some cases, but the gem should maintain
backwards compatibility.

https://github.com/ruby/logger/commit/3246f38328
2024-08-21 01:10:56 +00:00
Peter Zhu
1d68a735a2 [ruby/tempfile] Don't unlink in finalizer when already unlinked
https://github.com/ruby/tempfile/commit/f677941ea2
2024-08-20 18:37:53 +00:00
Peter Zhu
bd7eda6038 [ruby/tempfile] Fix subprocess tests requires
Using `-rtempfile` requires the tempfile built into Ruby, not the
currently developed one, so the tests aren't testing this tempfile.

https://github.com/ruby/tempfile/commit/ea2dec6f46
2024-08-20 18:37:53 +00:00
Peter Zhu
2f67610f6b Remove dependency on Tempfile::Remover in leakchecker.rb 2024-08-20 14:29:40 -04:00
Peter Zhu
a68331e703 [ruby/tempfile] Add FinalizerManager to manage finalizers
As @jeremyevans pointed out for commit eb2d8b1:

> Each Tempfile instance has a separate File instance and file descriptor:
>
>   t = Tempfile.new
>   t.to_i # => 6
>   t.dup.to_i => 7

FinalizerManager will keep track of the open File objects for the
particular file and will only unlink the file when all of the File objects
have been closed.

https://github.com/ruby/tempfile/commit/753ab16642
2024-08-20 18:07:42 +00:00
Peter Zhu
41b427a264 [ruby/tempfile] Ensure finalizer order in Tempfile
The Closer and Remover finalizers are defined on different objects in
Tempfile. The Closer is defined on the Tempfile object while the Remover
is defined on the finalizer_obj. This means that there is no guarantee
of the finalizer order.

On Windows, we must close the file before removing it because we cannot
remove an open file. But since the order is not guaranteed, the GC may
run the Remover finalizer first, which will fail with an Errno::EACCES
(Permission denied @ apply2files).

This commit changes it so that both the Closer and Remover finalizers
are defined on the finalizer_obj, which guarantees the order that it is
ran.

https://github.com/ruby/tempfile/commit/eb2d8b1175
2024-08-20 13:28:36 +00:00
Nobuyoshi Nakada
d6f18b226e
Remove extraneous lock files
See https://github.com/rubygems/rubygems/pull/7939
2024-08-20 20:16:45 +09:00
Hiroshi SHIBATA
72d016e97b [ruby/reline] typofix
https://github.com/ruby/reline/commit/d44fbf9f7b
2024-08-20 11:03:13 +00:00
KJ Tsanaktsidis
927a44b43f Rewrite #test_redefinition_mismatch to use a dedicated test class
This test is checking what happens if you try and define a class in a C
extension where that constant is already not a class. It was doing this
by overriding ::Date and then trying to require 'date. The issue with
this is that if we ever add 'date' as a dependency for the test runner,
this test will break because the test runner files get implicitly
required in an `assert_separately` block.

Better use an explicit class for this purpose which can't be accidentally
required elsewhere.
2024-08-20 18:36:16 +09:00
Naoto Ono
5e3dd6d395
Decrease the timeout in assert_darwin_vm_dump_works (#11412) 2024-08-20 09:00:09 +00:00
Nobuyoshi Nakada
f73d435262
Check compile_branch_condition results 2024-08-20 12:26:02 +09:00
Nobuyoshi Nakada
995b4c329b
Make same structures same 2024-08-20 12:26:02 +09:00
dependabot[bot]
edd3fc6213 Bump github/codeql-action from 3.26.2 to 3.26.3
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.2 to 3.26.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](429e197704...883d8588e5)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-20 11:48:59 +09:00
Jeremy Evans
ea7ceff82c
Avoid hash allocation for certain proc calls
Previously, proc calls such as:

```ruby
proc{|| }.(**empty_hash)
proc{|b: 1| }.(**r2k_array_with_empty_hash)
```

both allocated hashes unnecessarily, due to two separate code paths.

The first call goes through CALLER_SETUP_ARG/vm_caller_setup_keyword_hash,
and is simple to fix by not duping an empty keyword hash that will be
dropped.

The second case is more involved, in setup_parameters_complex, but is
fixed the exact same way as when the ruby2_keywords hash is not empty,
by flattening the rest array to the VM stack, ignoring the last
element (the empty keyword splat).  Add a flatten_rest_array static
function to handle this case.

Update test_allocation.rb to automatically convert the method call
allocation tests to proc allocation tests, at least for the calls
that can be converted.  With the code changes, all proc call
allocation tests pass, showing that proc calls and method calls
now allocate the same number of objects.

I've audited the allocation tests, and I believe that all of the low
hanging fruit has been collected.  All remaining allocations are
either caller side:

* Positional splat + post argument
* Multiple positional splats
* Literal keywords + keyword splat
* Multiple keyword splats

Or callee side:

* Positional splat parameter
* Keyword splat parameter
* Keyword to positional argument conversion for methods that don't accept keywords
* ruby2_keywords method called with keywords

Reapplies abc04e898b627ab37fa9dd5e330f239768778d8b, which was reverted at
d56470a27c5a8a2e7aee7a76cea445c2d29c0c59, with the addition of a bug fix and
test.

Fixes [Bug #20679]
2024-08-19 19:00:37 -07:00
Kazuhiro NISHIYAMA
6dccb0131e
Sort links [ci skip] 2024-08-20 10:27:45 +09:00
dependabot[bot]
e398e84c77 [rubygems/rubygems] Bump rb-sys
Bumps [rb-sys](https://github.com/oxidize-rb/rb-sys) from 0.9.100 to 0.9.101.
- [Release notes](https://github.com/oxidize-rb/rb-sys/releases)
- [Commits](https://github.com/oxidize-rb/rb-sys/compare/v0.9.100...v0.9.101)

---
updated-dependencies:
- dependency-name: rb-sys
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

https://github.com/rubygems/rubygems/commit/3addc2c3e7
2024-08-19 19:21:40 +00:00
dependabot[bot]
d1b2479b9f [rubygems/rubygems] Bump rb-sys
Bumps [rb-sys](https://github.com/oxidize-rb/rb-sys) from 0.9.100 to 0.9.101.
- [Release notes](https://github.com/oxidize-rb/rb-sys/releases)
- [Commits](https://github.com/oxidize-rb/rb-sys/compare/v0.9.100...v0.9.101)

---
updated-dependencies:
- dependency-name: rb-sys
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

https://github.com/rubygems/rubygems/commit/d26f5824a7
2024-08-19 17:55:19 +00:00
Peter Zhu
cb28487722 Make assertions allow incremental GC when disabled
When assertions are enabled, the following code triggers an assertion
error:

    GC.disable
    GC.start(immediate_mark: false, immediate_sweep: false)

    10_000_000.times { Object.new }

This is because the GC.start ignores that the GC is disabled and will
start incremental marking and lazy sweeping. But the assertions in
gc_marks_continue and gc_sweep_continue assert that GC is not disabled.

This commit changes it for the assertion to pass if the GC was triggered
from a method.
2024-08-19 10:58:36 -04:00
David Rodríguez
786d000652 [ruby/rdoc] Avoid potentially loading the same extension from different versions of the same gem
Avoids warnings like

```
/path/to/ruby/3.3.4/lib/ruby/gems/3.3.0/gems/rbs-3.4.0/lib/rdoc/discover.rb:10: warning: method redefined; discarding old scan
/path/to/ruby/3.3.4/lib/ruby/gems/3.3.0/gems/rbs-3.5.1/lib/rdoc/discover.rb:10: warning: previous definition of scan was here
```

https://github.com/ruby/rdoc/commit/e47920d8f3
2024-08-19 11:48:42 +00:00
Nobuyoshi Nakada
cd0d4ec059
Single letter ASCII operator is same as the corresponding ID 2024-08-19 19:50:08 +09:00
Nobuyoshi Nakada
566f2eb501
Merge rb_fork_ruby2 into rb_fork_ruby 2024-08-19 15:36:49 +09:00
Marco Roth
7061359564 [rubygems/rubygems] Change new gem README template to have copyable code blocks
https://github.com/rubygems/rubygems/commit/c805e9b558
2024-08-19 00:04:48 +00:00
Victor Shepelev
d450f9d6a2
Make Range#step to consistently use + for iteration (#7444)
Make Range#step to consistently use + for iteration [Feature #18368]

Previously, non-numerics expected step to be integer,
and iterated with begin#succ, skipping over step value
steps. Since this commit, numeric and non-numeric iteration
behaves the same way, by using + operator.
2024-08-18 13:15:18 +03:00
Neil Carvalho
4dbf386ca2
[DOC] Add $; to the list of deprecated global variables 2024-08-17 19:36:22 +09:00
git
694181a9f3 Update bundled gems list as of 2024-08-16 2024-08-17 07:00:35 +00:00
Jeremy Evans
d56470a27c Revert "Avoid hash allocation for certain proc calls"
This reverts commit abc04e898b627ab37fa9dd5e330f239768778d8b.

This caused problems in a Rails test.
2024-08-16 17:59:05 -07:00
Peter Zhu
2fe6a4f84d Fix assertion error when TracePoint has incompatible events
TracePoints with incompatible events (i.e. events not in ISEQ_TRACE_EVENTS)
with a method target will fail an assertion error because it does not
filter for the supported events. For example, the following lines will
cause an assertion error:

    def foo; end
    # No arguments passed into TracePoint.new enables all ISEQ_TRACE_EVENTS
    TracePoint.new {}.enable(target: method(:foo))
    # Raise is not supported with a target
    TracePoint.new(:raise, :return) {}.enable(target: method(:foo))
    foo

Crashes with:

    Assertion Failed: vm_insnhelper.c:7026:vm_trace:(iseq_local_events & ~(0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010| 0x0020| 0x0040 | 0x0100 | 0x0200 | 0x4000 | 0x010000| 0x020000)) == 0
2024-08-16 16:12:49 -04:00
Burdette Lamar
77ac853c15
[DOC] Tweaks to Array#assoc (#11384) 2024-08-16 16:11:55 -04:00
Jun Aruga
1917c8c8f3 [ruby/openssl] Remove test_ed25519_not_approved_on_fips.
This commit fixes the following failure on OpenSSL master FIPS case.

```
1) Failure: test_ed25519_not_approved_on_fips(OpenSSL::TestPKey): OpenSSL::PKey::PKeyError expected but nothing was raised.
/home/runner/work/openssl/openssl/vendor/bundle/ruby/3.0.0/gems/test-unit-ruby-core-1.0.6/lib/core_assertions.rb:462:in `assert_raise'
/home/runner/work/openssl/openssl/test/openssl/test_pkey.rb:174:in `test_ed25519_not_approved_on_fips'
     171:     MC4CAQAwBQYDK2VwBCIEIEzNCJso/5banbbDRuwRTg9bijGfNaumJNqM9u1PuKb7
     172:     -----END PRIVATE KEY-----
     173:     EOF
  => 174:     assert_raise(OpenSSL::PKey::PKeyError) do
     175:       OpenSSL::PKey.read(priv_pem)
     176:     end
     177:   end
```

Because FIPS compliance is a continually moving target. According to the [1],
FIPS 140-3 *currently* allows ED25519. The ED25519 is allowed again with the
latest OpenSSL FIPS by the commit [2], while it is not allowed in OpenSSL stable
version 3.x FIPS.

Remove this test because we want to keep our tests stable.

[1] https://github.com/openssl/openssl/discussions/22054
[2] 5f04124aab

https://github.com/ruby/openssl/commit/d43904b834
2024-08-16 17:10:23 +00:00
Peter Zhu
bbbe07a5db Speed up finalizers for objects without object ID
If the object being finalized does not have an object ID, then we don't
need to insert into the object ID table, we can simply just allocate a
new object ID by bumping the next_object_id counter. This speeds up
finalization for objects that don't have an object ID. For example, the
following script now runs faster:

    1_000_000.times do
      o = Object.new
      ObjectSpace.define_finalizer(o) {}
    end

Before:

    Time (mean ± σ):      1.462 s ±  0.019 s    [User: 1.360 s, System: 0.094 s]
    Range (min … max):    1.441 s …  1.503 s    10 runs

After:

    Time (mean ± σ):      1.199 s ±  0.015 s    [User: 1.103 s, System: 0.086 s]
    Range (min … max):    1.181 s …  1.229 s    10 runs
2024-08-16 09:26:51 -04:00
Raed Rizqie
703305bd03 Revert soname changes
- only i386-ucrt soname is changed to fix building on x86 clang
- fix detection of x86intrin.h on x86 system
- mingw does not have LIBRUBY_SONAME
2024-08-16 17:42:59 +09:00
Nobuyoshi Nakada
21dfe34aae
Stringize VM_ASSERT expression before expansion 2024-08-16 16:55:51 +09:00
Nobuyoshi Nakada
196d59f690
Parenthesize macro arguments 2024-08-16 15:43:43 +09:00
Nobuyoshi Nakada
129b4936bf
Simplify and clarify bitmask calculation 2024-08-16 15:43:43 +09:00
Jun Aruga
08db4bc672 [ruby/openssl] test_s_generate_parameters: Consider a DSA error in FIPS.
DSA kengen is not FIPS-approved. The `EVP_PKEY_paramgen` in the
`OpenSSL::PKey.generate_parameters("DSA")` raises a DSA error in FIPS by the
following commit. Split the test for DSA.

https://github.com/openssl/openssl/commit/49a35f0#diff-605396c063194975af8ce31399d42690ab18186b422fb5012101cc9132660fe1R611-R614

https://github.com/ruby/openssl/commit/5ca6eb4eca
2024-08-16 06:09:15 +00:00
Raed Rizqie
018bd07f07
Fix some warnings
* Fix unused functions when no `mmap`.

  ```
  shape.c:285:1: warning: unused function 'redblack_insert' [-Wunused-function]
    285 | redblack_insert(redblack_node_t * tree, ID key, rb_shape_t * value)
        | ^~~~~~~~~~~~~~~
  ```

* Fix unknown warning group '-Wmaybe-uninitialized' with clang.

  ```
  thread_win32.c:596:1: warning: unknown warning group '-Wmaybe-uninitialized', ignored [-Wunknown-warning-option]
    596 | COMPILER_WARNING_IGNORED(-Wmaybe-uninitialized)
        | ^
  ```

Co-authored-by: Nobuyoshi Nakada <nobu.nakada@gmail.com>
2024-08-16 14:51:21 +09:00