Skip to content

Conversation

@pull
Copy link

@pull pull bot commented Nov 18, 2025

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 : )

rhenium and others added 6 commits November 18, 2025 12:49
RHEL 9.7 ships OpenSSL 3.5.1 with ML-DSA support, but it is disabled
for TLS by default, according to the system configuration file:
/etc/crypto-policies/back-ends/opensslcnf.config

Specify SSLContext#sigalgs to override the default list.

ruby/openssl@fac3a26748
* This can catch subtle errors early, so avoid a fallback case and
  handle every instruction explicitly.
This implements Shopify#854:

- Splits boot-time and enable-time initialization,
  tracks progress with `InitializationState` enum

- Introduces `RubyVM::ZJIT.enable` Ruby method for
  enabling the JIT lazily, if not already enabled

- Introduces `--zjit-disable` flag, which can be
  used alongside the other `--zjit-*` flags but
  prevents enabling the JIT at boot time

- Adds ZJIT infra to support JIT hooks, but this
  is not currently exercised (Shopify#667)

Left for future enhancements:

- Support kwargs for overriding the CLI flags in
  `RubyVM::ZJIT.enable`

Closes Shopify#854
* Add Insn::StoreField and Insn::WriteBarrier
* When writing to an object, the receiver should be checked if it's frozen,
  not the value, so this avoids an error-prone autocomplete.
@pull pull bot added the ⤵️ pull label Nov 18, 2025
luke-gruber and others added 9 commits November 18, 2025 14:24
The comptime receiver, which is a proc, is either shareable or from this
ractor so we don't need to assume single-ractor mode. We should never get
the "defined with an un-shareable Proc in a different ractor" error.
Rename to `VM_KW_SPECIFIED_BITS_MAX` now that it's in `vm_core.h`.
`Gem::Installer.instance_methods(false).include?(:generate_plugins)` is
63x slower than `Gem::Installer.method_defined?(:generate_plugins)` in a
microbenchmark. The latter is a direct lookup, whereas the former will
create an array, which will be slower.

```ruby
require "benchmark/ips"

Benchmark.ips do |x|
  x.report "instance_methods" do
    Gem::Installer.instance_methods(false).include?(:generate_plugins)
  end

  x.report "method_defined" do
    Gem::Installer.method_defined?(:generate_plugins)
  end

  x.compare!
end
```

```
$ ruby -I lib/ benchmark_methods.rb
ruby 3.4.4 (2025-05-14 revision ruby/rubygems@a38531fd3f) +PRISM [arm64-darwin23]
Warming up --------------------------------------
    instance_methods    58.449k i/100ms
      method_defined     3.375M i/100ms
Calculating -------------------------------------
    instance_methods    541.874k (± 5.7%) i/s    (1.85 μs/i) -      2.747M in   5.087825s
      method_defined     34.263M (± 1.1%) i/s   (29.19 ns/i) -    172.135M in   5.024524s

Comparison:
      method_defined: 34263189.1 i/s
    instance_methods:   541874.3 i/s - 63.23x  slower
```

This does not make much difference in an overall benchmark or profile,
but this is more idiomatic Ruby than the prior code.

ruby/rubygems@49dec52cb2
Name contradictory now, and we have other tests testing the same thing.
(ruby/rubygems#8183)

* Add new gem templates

* Add `--ext=go` in `bundle gem`

* Add setup-go to .github/workflows/main.yml

* Embed go version in go.mod

* Use go in bundler CI

* Add example method to template

* Install Go in .circleci/config.yml

* Install Go in .gitlab-ci.yml

* Allow hard tabs in go template

* Run `rake update_manifest`

* Fix test

* Move go_gem to gemspec

Respect to 9b0ec80

* nits: ⛳

* includes valid module name in go.mod

* generate header file

* Run `go mod tidy` to create `go.sum`

* Check if `go.sum` is generated only when Go is installed

To avoid test failure in environments where Go is not installed

* Run CI

* Workaround for hung up

c.f. https://github.com/rubygems/rubygems/actions/runs/11639408044/job/32415545422

* Write man for --ext=go

* Re-generate man with `./bin/rake man:build`

* pinning 📌

* Update with `./bin/rake man:build`

* nits: Extract to method

* nits: Use `sys_exec` instead of `system`

* Clean go module cache after test

Workaround following error

```
1) bundle gem gem naming with underscore --ext parameter set with go includes go_gem extension in extconf.rb
   Failure/Error: FileUtils.rm_r(dir)

   Errno::EACCES:
     Permission denied @ apply2files - /home/runner/work/rubygems/rubygems/bundler/tmp/2.2/home/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1/decode_test.go
   # ./spec/support/helpers.rb:37:in `block in reset!'
   # ./spec/support/helpers.rb:21:in `each'
   # ./spec/support/helpers.rb:21:in `reset!'
   # ./spec/spec_helper.rb:130:in `block (2 levels) in <top (required)>'
   # /home/runner/work/rubygems/rubygems/lib/rubygems.rb:303:in `load'
   # /home/runner/work/rubygems/rubygems/lib/rubygems.rb:303:in `activate_and_load_bin_path'
```

Files installed with `go get` have permissions set to 444
ref. golang/go#35615

```
$ ls -l /home/runner/work/rubygems/rubygems/bundler/tmp/2.2/home/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1/decode_test.go
-r--r--r-- 1 runner runner 42320 Nov 15 06:38 /home/runner/work/rubygems/rubygems/bundler/tmp/2.2/home/go/pkg/mod/gopkg.in/yaml.v3@v3.0.1/decode_test.go
```

So they cannot be deleted by `FileUtils.rm_r`.
Therefore, this is necessary to execute `go clean -modcache` separately from `FileUtils.rm_r` to circumvent it.

* Remove needless changes

ref. ruby/rubygems#8183 (comment)

* ci: setup-go is needless

* Don't run go command in `bundle gem`

ref. ruby/rubygems#8183 (comment)

* Revert unrelated date changes

---------

ruby/rubygems@260d7d60b3

Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org>
@pull pull bot merged commit 4423fac into turkdevops:master Nov 19, 2025
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.