Age | Commit message (Collapse) | Author |
|
with old Bundler
https://github.com/rubygems/rubygems/commit/ce7e8e92ca
|
|
By running tool/update_bundled_ca_certificates.rb
Signed-off-by: Samuel Giddins <[email protected]>
https://github.com/rubygems/rubygems/commit/54f5278450
|
|
```
" = note: some arguments are omitted. use `--verbose` to show all linker arguments\n" +
" = note: error: unexpected argument '-W' found\n" +
" \n" +
" tip: to pass '-W' as a value, use '-- -W'\n" +
" \n" +
" Usage: sccache [OPTIONS] <--dist-auth|--debug-preprocessor-cache|--dist-status|--show-stats|--show-adv-stats|--start-server|--stop-server|--zero-stats|--package-toolchain <EXE> <OUT>|CMD>\n" +
" \n" +
" For more information, try '--help'.\n" +
" \n" +
```
https://github.com/rubygems/rubygems/commit/45e688ae62
|
|
If `gem pristine foo` is run, and there's a default copy of foo, only
executables for it are reset. However, that was causing other copies of
`foo` to only reset executables, which is unexpected.
We should not modify `options[:only_executables]`, but respect its value
for every gem, and make sure special handling for default gems does not
leak to other gems.
https://github.com/rubygems/rubygems/commit/2c3039f1b0
|
|
in gem install
Instead of picking essentially a random matching platform
Signed-off-by: Samuel Giddins <[email protected]>
https://github.com/rubygems/rubygems/commit/3727096297
|
|
This will help centralize wheel platform selection logic eventually
Signed-off-by: Samuel Giddins <[email protected]>
|
|
And adapt release scripts and configuration to the new structure.
https://github.com/rubygems/rubygems/commit/3deb1aedae
|
|
https://github.com/rubygems/rubygems/commit/0e40e7d938
|
|
https://github.com/rubygems/rubygems/commit/5956e7f8e5
|
|
https://github.com/rubygems/rubygems/commit/407c1cbcfe
|
|
Based on PR feedback
Signed-off-by: Samuel Giddins <[email protected]>
https://github.com/rubygems/rubygems/commit/562d7aa087
|
|
Signed-off-by: Samuel Giddins <[email protected]>
https://github.com/rubygems/rubygems/commit/768784910b
|
|
The issue was that the property that
```ruby
platform = Gem::Platform.new $string
platform == Gem::Platform.new(platform.to_s)
```
was not always true.
This property (of acchieving a fix point) is important,
since `Gem::Platform` gets serialized to a string and
then deserialized back to a `Gem::Platform` object.
If it doesn't deserialize to the same object, then
different platforms are used for the initial serialization
than subsequent runs.
I used https://github.com/segiddins/Scratch/blob/main/2025/03/rubygems-platform.rb
to find the failing cases and then fixed them.
With this patch, the prop check test now passes.
https://github.com/rubygems/rubygems/commit/313fb4bcec
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13312
|
|
provided snce Ruby 2.3
Notes:
Merged: https://github.com/ruby/ruby/pull/13311
|
|
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/13275
|
|
Since 9e21dd9, Gem::Package::TarWriter#add_file adds the file to
the tar with Gem.source_date_epoch for its mtime.
This behavior breaks the code depending on the previous add_file
behavior.
Therefore, add_file accepts mtime as an argument, and uses
Gem.source_date_epoch if not specified.
https://github.com/rubygems/rubygems/commit/7020ea98a0
|
|
Copying the URL is painful here because the URL is embedded within a paragraph of text. I presume we don't want to automatically open the browser.
Instead, move the URL to its own line so that "triple click" will automatically select the whole thing.
https://github.com/rubygems/rubygems/commit/21532a69ae
|
|
https://github.com/rubygems/rubygems/commit/62e1bf2d37
Notes:
Merged: https://github.com/ruby/ruby/pull/13177
|
|
https://github.com/rubygems/rubygems/commit/2af1646776
|
|
Co-authored-by: Nobuyoshi Nakada <[email protected]>
|
|
|
|
Because get_push_scope is a method call, Ruby will allocate an array
for *args even though it is not necessary to do so. Using a local
variable avoids the allocation.
Found by the performance warning in Ruby feature 21274.
https://github.com/rubygems/rubygems/commit/0473c0cf32
|
|
mutable dependencies array
That restores support for compact index dummy implementations that only lists
versions, without checksums or dependencies.
This format is undocumented, so we may want to get rid of it in the
future. However, some of our tests rely on it, and some implementations
did use it (gems.mutant.dev at least). And the way the code was written
suggest that support was intentional.
So for now, we should restore it.
https://github.com/rubygems/rubygems/commit/0427d8c983
|
|
https://github.com/rubygems/rubygems/commit/792117980b
|
|
https://github.com/rubygems/rubygems/commit/4bbf02493e
|
|
This decouples `gem exec` behavior (and tests) from the sort order of
the gemspec.
https://github.com/rubygems/rubygems/commit/911cd29159
|
|
When `gem exec foo` is run, and "foo" is a gem that has multiple
executables, none of them named "foo", raise an error explaining the
situation and telling user to be more specific.
Currently the first command in the executables array is run, but this
may come as surprising sometimes, so better raise an error.
https://github.com/rubygems/rubygems/commit/acda5d8f6e
Notes:
Merged: https://github.com/ruby/ruby/pull/12968
|
|
Previously, the comparison code would loop through segments up to the
longest of the two versions being compared. However, this is inefficient
because once one version has more segments than the other we can do a
lot less work.
This commit optimizes the differing segment length case by specializing
the logic once the iteration has passed the shorter of the two segment
lengths. At this point we only need to continue looking at the longer
version's segment, and we know that any String encountered means the
version is less than (pre), and any non-zero Integer means the version
is greater than.
Benchmark:
```
{
first: [Gem::Version.new("1.2.3"), Gem::Version.new("2.2.3")],
second: [Gem::Version.new("1.2.3"), Gem::Version.new("1.3.3")],
third: [Gem::Version.new("1.2.3"), Gem::Version.new("1.2.4")],
length: [Gem::Version.new("1.2.3"), Gem::Version.new("1.2.3.4")],
left_s_second: [Gem::Version.new("1.a.3"), Gem::Version.new("1.2.3")],
left_s_third: [Gem::Version.new("1.2.a"), Gem::Version.new("1.2.3")],
right_s_second: [Gem::Version.new("1.2.3"), Gem::Version.new("1.a.3")],
right_s_third: [Gem::Version.new("1.2.3"), Gem::Version.new("1.2.a")],
left_s_length: [Gem::Version.new("8.0.1.pre"), Gem::Version.new("8.0.1")],
right_s_length: [Gem::Version.new("8.0.1"), Gem::Version.new("8.0.1.pre")],
both_s: [Gem::Version.new("8.0.2.pre1"), Gem::Version.new("8.0.2.pre2")],
}.each do |name, v|
puts "== #{name} =="
raise name unless v[0].fast_comp(v[1]) == (v[0] <=> v[1])
Benchmark.ips do |x|
x.report("fast") { v[0].fast_comp(v[1]) }
x.report("original") { v[0] <=> v[1] }
x.compare!(order: :baseline)
end
end
== first ==
ruby 3.4.2 (2025-02-15 revision https://github.com/rubygems/rubygems/commit/d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
fast 208.555k i/100ms
original 199.789k i/100ms
Calculating -------------------------------------
fast 2.075M (± 6.0%) i/s (481.93 ns/i) - 10.428M in 5.055818s
original 2.045M (± 3.9%) i/s (488.94 ns/i) - 10.389M in 5.090034s
Comparison:
fast: 2075002.8 i/s
original: 2045227.4 i/s - same-ish: difference falls within error
== second ==
ruby 3.4.2 (2025-02-15 revision https://github.com/rubygems/rubygems/commit/d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
fast 192.395k i/100ms
original 183.000k i/100ms
Calculating -------------------------------------
fast 1.892M (± 3.8%) i/s (528.62 ns/i) - 9.620M in 5.094104s
original 1.824M (± 3.5%) i/s (548.11 ns/i) - 9.150M in 5.023163s
Comparison:
fast: 1891722.2 i/s
original: 1824435.3 i/s - same-ish: difference falls within error
== third ==
ruby 3.4.2 (2025-02-15 revision https://github.com/rubygems/rubygems/commit/d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
fast 172.788k i/100ms
original 162.934k i/100ms
Calculating -------------------------------------
fast 1.719M (± 9.0%) i/s (581.72 ns/i) - 8.467M in 5.025861s
original 1.638M (± 3.6%) i/s (610.36 ns/i) - 8.310M in 5.080344s
Comparison:
fast: 1719042.9 i/s
original: 1638389.6 i/s - same-ish: difference falls within error
== length ==
ruby 3.4.2 (2025-02-15 revision https://github.com/rubygems/rubygems/commit/d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
fast 191.741k i/100ms
original 155.952k i/100ms
Calculating -------------------------------------
fast 1.920M (± 3.9%) i/s (520.74 ns/i) - 9.587M in 5.002328s
original 1.576M (± 6.2%) i/s (634.42 ns/i) - 7.954M in 5.072507s
Comparison:
fast: 1920362.1 i/s
original: 1576240.9 i/s - 1.22x slower
== left_s_second ==
ruby 3.4.2 (2025-02-15 revision https://github.com/rubygems/rubygems/commit/d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
fast 176.441k i/100ms
original 164.879k i/100ms
Calculating -------------------------------------
fast 1.609M (± 7.3%) i/s (621.51 ns/i) - 8.116M in 5.083414s
original 1.620M (± 8.3%) i/s (617.43 ns/i) - 8.079M in 5.028525s
Comparison:
fast: 1608994.8 i/s
original: 1619606.5 i/s - same-ish: difference falls within error
== left_s_third ==
ruby 3.4.2 (2025-02-15 revision https://github.com/rubygems/rubygems/commit/d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
fast 160.562k i/100ms
original 152.799k i/100ms
Calculating -------------------------------------
fast 1.591M (± 3.6%) i/s (628.40 ns/i) - 8.028M in 5.052029s
original 1.528M (± 3.6%) i/s (654.31 ns/i) - 7.640M in 5.007526s
Comparison:
fast: 1591334.1 i/s
original: 1528320.6 i/s - same-ish: difference falls within error
== right_s_second ==
ruby 3.4.2 (2025-02-15 revision https://github.com/rubygems/rubygems/commit/d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
fast 135.938k i/100ms
original 132.907k i/100ms
Calculating -------------------------------------
fast 1.367M (± 1.2%) i/s (731.77 ns/i) - 6.933M in 5.074030s
original 1.320M (± 2.4%) i/s (757.35 ns/i) - 6.645M in 5.036155s
Comparison:
fast: 1366548.7 i/s
original: 1320386.4 i/s - same-ish: difference falls within error
== right_s_third ==
ruby 3.4.2 (2025-02-15 revision https://github.com/rubygems/rubygems/commit/d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
fast 129.971k i/100ms
original 123.802k i/100ms
Calculating -------------------------------------
fast 1.273M (± 4.1%) i/s (785.25 ns/i) - 6.369M in 5.011805s
original 1.215M (± 1.8%) i/s (823.04 ns/i) - 6.190M in 5.096330s
Comparison:
fast: 1273487.0 i/s
original: 1215002.9 i/s - same-ish: difference falls within error
== left_s_length ==
ruby 3.4.2 (2025-02-15 revision https://github.com/rubygems/rubygems/commit/d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
fast 211.093k i/100ms
original 155.784k i/100ms
Calculating -------------------------------------
fast 2.120M (± 1.9%) i/s (471.63 ns/i) - 10.766M in 5.079336s
original 1.565M (± 6.7%) i/s (638.87 ns/i) - 7.789M in 5.007522s
Comparison:
fast: 2120296.1 i/s
original: 1565258.0 i/s - 1.35x slower
== right_s_length ==
ruby 3.4.2 (2025-02-15 revision https://github.com/rubygems/rubygems/commit/d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
fast 213.977k i/100ms
original 142.990k i/100ms
Calculating -------------------------------------
fast 2.154M (± 1.3%) i/s (464.15 ns/i) - 10.913M in 5.066124s
original 1.446M (± 1.8%) i/s (691.75 ns/i) - 7.292M in 5.046172s
Comparison:
fast: 2154455.3 i/s
original: 1445607.9 i/s - 1.49x slower
== both_s ==
ruby 3.4.2 (2025-02-15 revision https://github.com/rubygems/rubygems/commit/d2930f8e7a) +PRISM [arm64-darwin23]
Warming up --------------------------------------
fast 154.903k i/100ms
original 131.011k i/100ms
Calculating -------------------------------------
fast 1.515M (± 4.0%) i/s (659.97 ns/i) - 7.590M in 5.019890s
original 1.280M (± 5.3%) i/s (781.28 ns/i) - 6.420M in 5.035387s
Comparison:
fast: 1515223.3 i/s
original: 1279957.8 i/s - 1.18x slower
```
https://github.com/rubygems/rubygems/commit/7195e77152
|
|
https://github.com/rubygems/rubygems/commit/369f9b9311
Notes:
Merged: https://github.com/ruby/ruby/pull/12890
|
|
https://github.com/rubygems/rubygems/commit/176dc7421c
Notes:
Merged: https://github.com/ruby/ruby/pull/12840
|
|
https://github.com/rubygems/rubygems/commit/677e17aa2e
|
|
feature now
https://github.com/rubygems/rubygems/commit/b29f8d6a37
|
|
https://github.com/rubygems/rubygems/commit/c65b8644e6
Co-authored-by: Samuel Giddins <[email protected]>
|
|
dependency
If you force uninstall a dependency but leave other gems depending on
it, those gems will fail to be activated.
In that case, RubyGems prints a rather complicated error:
```
$ rails --version
/Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1413:in 'block in Gem::Specification#activate_dependencies': Could not find 'activesupport' (= 8.0.1) among 478 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/Users/deivid/.local/share/gem/ruby/3.4.0:/Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0' at: /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/specifications/railties-8.0.1.gemspec, execute `gem env` for more information
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1399:in 'Array#each'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1399:in 'Gem::Specification#activate_dependencies'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1381:in 'Gem::Specification#activate'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems.rb:283:in 'block in Gem.activate_bin_path'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems.rb:282:in 'Thread::Mutex#synchronize'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems.rb:282:in 'Gem.activate_bin_path'
from /Users/deivid/.asdf/installs/ruby/3.4.1/bin/rails:25:in '<main>'
/Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/dependency.rb:303:in 'Gem::Dependency#to_specs': Could not find 'activesupport' (= 8.0.1) - did find: [activesupport-7.1.3,activesupport-7.0.8.7] (Gem::MissingSpecVersionError)
Checked in 'GEM_PATH=/Users/deivid/.local/share/gem/ruby/3.4.0:/Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0' , execute `gem env` for more information
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1411:in 'block in Gem::Specification#activate_dependencies'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1399:in 'Array#each'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1399:in 'Gem::Specification#activate_dependencies'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1381:in 'Gem::Specification#activate'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems.rb:283:in 'block in Gem.activate_bin_path'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems.rb:282:in 'Thread::Mutex#synchronize'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems.rb:282:in 'Gem.activate_bin_path'
from /Users/deivid/.asdf/installs/ruby/3.4.1/bin/rails:25:in '<main>'
```
With this commit, the error becomes a bit simpler to parse:
```
$ rails --version
/Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1421:in 'block in Gem::Specification#activate_dependencies': Could not find 'activesupport' (= 8.0.1) among 478 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/Users/deivid/.local/share/gem/ruby/3.4.0:/Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0' at: /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/gems/3.4.0/specifications/railties-8.0.1.gemspec, execute `gem env` for more information
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1407:in 'Array#each'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1407:in 'Gem::Specification#activate_dependencies'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems/specification.rb:1389:in 'Gem::Specification#activate'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems.rb:283:in 'block in Gem.activate_bin_path'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems.rb:282:in 'Thread::Mutex#synchronize'
from /Users/deivid/.asdf/installs/ruby/3.4.1/lib/ruby/site_ruby/3.4.0/rubygems.rb:282:in 'Gem.activate_bin_path'
from /Users/deivid/.asdf/installs/ruby/3.4.1/bin/rails:25:in '<main>'
```
And also, we reduce exception based control flow in our code.
https://github.com/rubygems/rubygems/commit/7e48c49f2d
|
|
|
|
https://github.com/rubygems/rubygems/commit/12f3e78c95
|
|
There are 3 possible locations:
- $HOME/.gem/credentials
- $XDG_DATA_HOME/gem/credentials
- $HOME/.local/share/gem/credentials
https://github.com/rubygems/rubygems/commit/c51756b96e
|
|
https://github.com/rubygems/rubygems/commit/42aaaff15c
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/12444
|
|
|
|
|
|
|
|
https://github.com/rubygems/rubygems/commit/7585825c57
|
|
|
|
|
|
|
|
`Gem::Specification.reset` on benign cases
If `Gem::Specification.reset` is used, but there are still unresolved
dependencies, RubyGems prints a warning. There are though, certain cases
where the situation will not cause any issues.
One such case is when the unresolved dependency does not restrict any
versions (>= 0) and there's a default gem matching it.
In this situation, it doesn't matter if Gem paths change, because
default gems are still activatable, so the dependency will be properly
activated if ever needed.
https://github.com/rubygems/rubygems/commit/e5f8a3068e
|