[pull] master from ruby:master#1145
Merged
Merged
Conversation
Previously, `:dynamic_setivar_count`, `:dynamic_getivar_count`, and `:dynamic_definedivar_count` had a percentage to the right of them in the printout with the denominator being `:send_count`. These are not sends, so move them out of the group.
Set RUBY_TYPED_THREAD_SAFE_FREE on TypedData types whose dfree function is trivially safe, and only frees its own memory Types not yet marked as THREAD_SAFE_FREE: - id2ref_tbl_type: sets the process-global id2ref_tbl to NULL. - mutex_data_type: unlinks itself from another thread's keeping_mutexes list. - autoload_data_type: deletes nodes from a shared intrusive list. - autoload_const_type: deletes itself from a shared list. - rb_cont_data_type: mutates the shared fiber pool and the global first_jit_cont list. - rb_fiber_data_type: delegates to cont_free. - FiberPoolDataType: mutates shared fiber pool free-lists. - ractor_data_type: reconfigures global VM event-hook flags and call caches. - exported_object_registry: frees a global table under the VM lock. - rb_box_data_type (Box::Entry): unlinks classext from other live class and module objects. - box_ext_cleanup_type: dereferences another String object and calls unlink. - monitor_data_type: uses the default free, so the flag has no effect. Co-authored-by: Luke Gruber <luke.gruber@shopify.com>
…within parenthesized call ruby/prism@26cfb915e8
Add recompile support for getblockparamproxy. This reduces side exits from monomorphic block handler paths. Collect block handler profiles from unprofiled and monomorphic getblockparamproxy guard exits, then invalidate the compiled version once enough samples are available. Recompiled code can use the observed block handler family.
* Remove stack overflow space ratio * Cache page size.
…tegration connection tests
Added PQC server/client connection integration tests.
As test_pqc_ssl_client_cert_auth_connection failed with the following error
due to hardcoded `OpenSSL::PKey::RSA.new` in
`Gem::Request.configure_connection_for_https`, fixed it to support ML-DSA ssl_client_cert.
```
Error: test_pqc_ssl_client_cert_auth_connection(TestGemRemoteFetcherLocalSSLServer): OpenSSL::PKey::PKeyError: incorrect pkey type: UNDEF
/home/jaruga/.local/ruby-4.1.0-debug-3ef48ef9c8-openssl-4.1.0-7194354488/lib/ruby/4.1.0+1/openssl/pkey.rb:394:in 'OpenSSL::PKey::RSA#initialize'
/home/jaruga/.local/ruby-4.1.0-debug-3ef48ef9c8-openssl-4.1.0-7194354488/lib/ruby/4.1.0+1/openssl/pkey.rb:394:in 'Class#new'
/home/jaruga/.local/ruby-4.1.0-debug-3ef48ef9c8-openssl-4.1.0-7194354488/lib/ruby/4.1.0+1/openssl/pkey.rb:394:in 'OpenSSL::PKey::RSA.new'
/home/jaruga/var/git/ruby/rubygems/lib/rubygems/request.rb:64:in 'Gem::Request.configure_connection_for_https'
/home/jaruga/var/git/ruby/rubygems/lib/rubygems/request/https_pool.rb:7:in 'Gem::Request::HTTPSPool#setup_connection'
/home/jaruga/var/git/ruby/rubygems/lib/rubygems/request/http_pool.rb:43:in 'Gem::Request::HTTPPool#make_connection'
/home/jaruga/var/git/ruby/rubygems/lib/rubygems/request/http_pool.rb:23:in 'Gem::Request::HTTPPool#checkout'
/home/jaruga/var/git/ruby/rubygems/lib/rubygems/request.rb:136:in 'Gem::Request#connection_for'
/home/jaruga/var/git/ruby/rubygems/lib/rubygems/request.rb:194:in 'Gem::Request#perform_request'
/home/jaruga/var/git/ruby/rubygems/lib/rubygems/request.rb:161:in 'Gem::Request#fetch'
/home/jaruga/var/git/ruby/rubygems/lib/rubygems/remote_fetcher.rb:326:in 'Gem::RemoteFetcher#request'
/home/jaruga/var/git/ruby/rubygems/lib/rubygems/remote_fetcher.rb:217:in 'Gem::RemoteFetcher#fetch_http'
/home/jaruga/var/git/ruby/rubygems/lib/rubygems/remote_fetcher.rb:261:in 'Gem::RemoteFetcher#fetch_path'
/home/jaruga/var/git/ruby/rubygems/test/rubygems/test_gem_remote_fetcher_local_ssl_server.rb:98:in 'block in TestGemRemoteFetcherLocalSSLServer#test_pqc_ssl_client_cert_auth_connection'
95: ":ssl_ca_cert: #{temp_ca_cert}\n" \
96: ":ssl_client_cert: #{temp_client_cert}\n"
97: ) do |fetcher|
=> 98: fetcher.fetch_path("https://localhost:#{ssl_server.addr[1]}/yaml")
99: end
100: end
101:
/home/jaruga/var/git/ruby/rubygems/test/rubygems/test_gem_remote_fetcher_local_ssl_server.rb:174:in 'TestGemRemoteFetcherLocalSSLServer#with_configured_fetcher'
/home/jaruga/var/git/ruby/rubygems/test/rubygems/test_gem_remote_fetcher_local_ssl_server.rb:94:in 'TestGemRemoteFetcherLocalSSLServer#test_pqc_ssl_client_cert_auth_connection'
```
In test/rubygems/test_gem_remote_fetcher_local_ssl_server.rb,
created new tests, test_pqc_ssl_connection and test_pqc_ssl_client_cert_auth_connection
The `start_ssl_server` has 2 modes: :non_pqc (default) and :pqc.
With the mode :pqc, `start_ssl_server` runs with the RubyGems single PQC server with
ML-KEM (X25519MLKEM768) key exchange and ML-DSA-65 certification.
Selected X25519MLKEM768 because rubygems.org supports X25519MLKEM768 for now.
Selected ML-DSA-65 because it is used and tested
https://github.com/ruby/openssl/blob/master/test/openssl/test_ssl.rb
- test_pqc_sigalg
Created `tool/create_mldsa65_certs.sh` to create ML-DSA-65 cert files,
`test/rubygems/mldsa65_*.pem`. It is inspired by `tool/create_certs.sh` to
create RSA cert files, `test/rubygems/*.pem`. Note the 65 in ML-DSA-65 is not
bit length. ML-DSA-65 is algorithm name.
ruby/rubygems@f12d7a2004
Co-Authored-By: Claude <noreply@anthropic.com>
…7455) Before this commit we were lumping all getivar fallback reasons in to one counter. This made it very hard to find the most popular reasons for why we're doing slowpath IV reads. This commit just adds more counters and splits up the fallback reason based on the type resolution.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )