CARVIEW |
Select Language
HTTP/2 200
x-amz-id-2: gedPrw1kXtNOq5RxkFDbb3H5gxDpnK8OqSVQuEV1Q8SudYZYb8T5oVZinQ9KKlXOLBt3zGTrPttf5RnfGgSsUphj8qbNxT3y7iggnh1/6fA=
x-amz-request-id: ZG1ZZT4TKFJM7AC3
last-modified: Sat, 10 May 2025 12:40:50 GMT
etag: "95f444d8a7b36f77c994b1cf7ffad945"
x-amz-server-side-encryption: AES256
server: AmazonS3
content-encoding: gzip
via: 1.1 varnish, 1.1 varnish
content-type: text/plain; charset=utf-8
accept-ranges: bytes
age: 0
date: Wed, 23 Jul 2025 15:37:18 GMT
x-served-by: cache-tyo11945-TYO, cache-bom-vanm7210021-BOM
x-cache: HIT, MISS
x-cache-hits: 0, 0
x-timer: S1753285038.570724,VS0,VE564
vary: Accept-Encoding
content-length: 1099
From: "Eregon (Benoit Daloze) via ruby-core"
Date: 2025-05-10T12:36:43+00:00
Subject: [ruby-core:121988] [Ruby Bug#21324] Namespace loads RubyGems in root Namespace but it should not
Issue #21324 has been reported by Eregon (Benoit Daloze).
----------------------------------------
Bug #21324: Namespace loads RubyGems in root Namespace but it should not
https://bugs.ruby-lang.org/issues/21324
* Author: Eregon (Benoit Daloze)
* Status: Open
* ruby -v: ruby 3.5.0dev (2025-05-10T07:50:29Z namespace-on-read-.. bd4f57f96b) +PRISM [x86_64-linux]
* Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN
----------------------------------------
RubyGems has tons of mutable state, isn't core library and isn't "builtin classes" either, so it should not be in root Namespace, as it is currently:
```
$ RUBY_NAMESPACE=1 ruby -ve 'ns = Namespace.new; p ns::Gem.equal?(Gem)'
ruby 3.5.0dev (2025-05-10T07:50:29Z namespace-on-read-.. bd4f57f96b) +PRISM [x86_64-linux]
ruby: warning: Namespace is experimental, and the behavior may change in the future!
See doc/namespace.md for know issues, etc.
true
```
A concrete example of what breaks most likely due to this:
```
$ gem i delegate:0.3.1
$ RUBY_NAMESPACE=1 ruby -ve 'require "delegate"; p Delegator::VERSION; ns = Namespace.new; File.write "ns.rb", "gem %{delegate}, %{0.3.1}; require :delegate.to_s; p Delegator::VERSION"; ns.require "./ns"'
ruby 3.5.0dev (2025-05-10T07:50:29Z namespace-on-read-.. bd4f57f96b) +PRISM [x86_64-linux]
ruby: warning: Namespace is experimental, and the behavior may change in the future!
See doc/namespace.md for know issues, etc.
"0.4.0"
/home/eregon/prefix/ruby-master/lib/ruby/3.5.0+0/rubygems/specification.rb:2232:in 'Gem::Specification#check_version_conflict': can't activate delegate-0.3.1, already activated delegate-0.4.0 (Gem::LoadError)
from /home/eregon/prefix/ruby-master/lib/ruby/3.5.0+0/rubygems/specification.rb:1383:in 'Gem::Specification#activate'
from /home/eregon/prefix/ruby-master/lib/ruby/3.5.0+0/rubygems/core_ext/kernel_gem.rb:62:in 'block in Kernel#gem'
from /home/eregon/prefix/ruby-master/lib/ruby/3.5.0+0/rubygems/core_ext/kernel_gem.rb:62:in 'Thread::Mutex#synchronize'
from /home/eregon/prefix/ruby-master/lib/ruby/3.5.0+0/rubygems/core_ext/kernel_gem.rb:62:in 'Kernel#gem'
from /home/eregon/ns.rb:1:in ''
from -e:1:in 'Namespace#require'
from -e:1:in ''
```
i.e. `ns` sees delegate-0.4.0 was loaded in main namespace but it shouldn't.
Previously mentioned in https://bugs.ruby-lang.org/issues/21311#note-36
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/