`Gem::Version.new`, `#bump`, and `#release` do not work in ractor

Abierto
#9,964 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

@mmporong ya está trabajando en esto.

Desde el 27/10/2026.

  • #9977 de @mmporong — abierto

Evaluación

Dificultad
3/5
Tiempo estimado
Medio día
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
ruby
Área
tooling

Línea de trabajo

Start with lib/rubygems/version.rb, especially Gem::Version.new, #bump, and #release, and review how their class variables are used. Reproduce the reported Ractor::IsolationError in a non-main Ractor, then add or update the relevant RubyGems tests to cover those methods in Ractors. Done means the methods work in the reported Ractor scenarios without the class-variable isolation error, with focused tests passing.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

RubyGems

reproduction:

Gem::VERSION # => "4.0.23"

Ractor.new { Gem::Version.new(1) }
# => #<Thread:0x0000000122ea71d0 run> terminated with exception (report_on_exception is true):
# => ~/.asdf/installs/ruby/4.0/lib/ruby/4.0.0/rubygems/version.rb:201:in 'Gem::Version.new':
# => can not access class variables from non-main Ractors (@@all from Gem::Version) (Ractor::IsolationError)

relevant code: https://github.com/ruby/rubygems/blob/f033df93676007227d1ae0bd7326008e6396b3e9/lib/rubygems/version.rb#L212-L220

i guess this hasn't become apparent yet because gem versions are usually initialized at load-time? it could, however, be an issue for a few gems that do things like if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('3.0') at runtime.

same for #bump and #release:

Ractor.new(Gem::Version.new(1), &:bump)
# => #<Thread:0x00000001206e3658 run> terminated with exception (report_on_exception is true):
# => ~/.asdf/installs/ruby/4.0/lib/ruby/site_ruby/4.0.0/rubygems/version.rb:236:in 'Gem::Version#bump':
# => can not access class variables from non-main Ractors (@@bump from Gem::Version) (Ractor::IsolationError)

Ractor.new(Gem::Version.new(1), &:release)
# => #<Thread:0x00000001206c0b80 run> terminated with exception (report_on_exception is true):
# => ~/.asdf/installs/ruby/4.0/lib/ruby/site_ruby/4.0.0/rubygems/version.rb:314:in 'Gem::Version#release':
# => can not access class variables from non-main Ractors (@@release from Gem::Version) (Ractor::IsolationError)
Lenguaje dominante
Ruby
Estrellas
4k
Forks
2k
Merge medio
1 d 17 h
PR fusionados (30 d)
50

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de ruby/rubygems

Todos los issues de ruby/rubygems

Issues similares

Más issues de Ruby

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.