summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2025-02-13[rubygems/rubygems] Extract some common materialization logic to a methodDavid Rodríguez
https://github.com/rubygems/rubygems/commit/32982fcd33
2025-02-13[rubygems/rubygems] Make LazySpecification#__materialize__ privateDavid Rodríguez
And rename it to something better. https://github.com/rubygems/rubygems/commit/321174d1ad
2025-02-10[rubygems/rubygems] Allocate strings from Requirement match only onceDavid Rodríguez
https://github.com/rubygems/rubygems/commit/c65b8644e6 Co-authored-by: Samuel Giddins <segiddins@segiddins.me>
2025-02-06[rubygems/rubygems] Add `irb` to a Gemfile for a newly created gemyuuji.yaginuma
I think we need this to silence the following warning when running `bin/console` with Ruby 3.4 ``` ./bin/console:10: warning: irb was loaded from the standard library, but will no longer be part of the default gems starting from Ruby 3.5.0. You can add irb to your Gemfile or gemspec to silence this warning. ``` https://github.com/rubygems/rubygems/commit/c46230c856
2025-02-06[rubygems/rubygems] Auto-heal empty installation directoryDavid Rodríguez
https://github.com/rubygems/rubygems/commit/9720a9b980
2025-02-06[rubygems/rubygems] Refine messages about gem installations being missingDavid Rodríguez
The previous wording was too specific, there may be situations when the gem has actually never installed (so never deleted either). https://github.com/rubygems/rubygems/commit/e4a0d71fbe
2025-02-06[rubygems/rubygems] Don't potentially load remote metadata when expanding ↵David Rodríguez
dependencies For installed specifications, we can ignore any constraints they may have, since we know they match the current version of Ruby or otherwise would not be installed. For remote specifications, we already resolve optimistically without metadata and retry force-fetching it if necessary. If in the future we support resolving against a Ruby version different that the one being run, we'll probably need to change this but now it's unnecessary and saves some memory. ### Before Total allocated: 262.99 MB (3177437 objects) Total retained: 115.91 MB (1297821 objects) ### After Total allocated: 259.89 MB (3134199 objects) Total retained: 115.05 MB (1283779 objects) https://github.com/rubygems/rubygems/commit/201c1863fc
2025-02-06[rubygems/rubygems] Move expanding dependencies with metadata to ↵David Rodríguez
specification classes https://github.com/rubygems/rubygems/commit/7f921aa46e
2025-02-06[rubygems/rubygems] Metadata dependencies can be `Gem::Dependency` instancesDavid Rodríguez
They use less memory that way. When resolving from scratch a Gemfile including only `"gem "rails", "~> 8.0.1"`, I get the following results: ### Before Total allocated: 265.06 MB (3186053 objects) Total retained: 116.98 MB (1302280 objects) ### After Total allocated: 262.99 MB (3177437 objects) Total retained: 115.91 MB (1297821 objects) https://github.com/rubygems/rubygems/commit/a4ef9c5f56
2025-02-06[rubygems/rubygems] Remove unnecessary remapping of dependenciesDavid Rodríguez
Sometimes we'll resolve using bare `Gem::Dependency` instances rather than `Bundler::Dependency` instances, which is fine, simpler, and saves some memory. When resolving from scratch a Gemfile including only `"gem "rails", "~> 8.0.1"`, I get the following results: ### Before Total allocated: 277.48 MB (3384318 objects) Total retained: 117.53 MB (1338657 objects) ### After Total allocated: 265.06 MB (3186053 objects) Total retained: 116.98 MB (1302280 objects) https://github.com/rubygems/rubygems/commit/c6dc2966c5
2025-02-06[rubygems/rubygems] Make `Bundler::Dependency` more memory efficientDavid Rodríguez
When resolving from scratch a Gemfile including only `"gem "rails", "~> 8.0.1"`, I get the following results: ### Before Total allocated: 288.21 MB (3498515 objects) Total retained: 119.10 MB (1357976 objects) ### After Total allocated: 277.44 MB (3383182 objects) Total retained: 117.55 MB (1338622 objects) https://github.com/rubygems/rubygems/commit/2d3d6e5015
2025-02-06[rubygems/rubygems] Lazily parse dependencies in EndpointSpecificationDavid Rodríguez
Since not every dependency gets referenced. When resolving from scratch a Gemfile including only `"gem "rails", "~> 8.0.1"`, I get the following results: ### Before Total allocated: 295.01 MB (3624335 objects) Total retained: 119.31 MB (1364474 objects) ### After Total allocated: 288.21 MB (3498515 objects) Total retained: 119.10 MB (1357976 objects) https://github.com/rubygems/rubygems/commit/61eee39d81 Co-authored-by: Samuel Giddins <segiddins@segiddins.me>
2025-02-06Improve bundled gems warning messagesDavid Rodríguez
Currently evenn if the require actually fails, they suggest that the file was actually loaded, which is confusing. I reworded them to reduce this confusion.
2025-02-06Rename "gem" to "name"David Rodríguez
The name "gem" could be confused with RubyGems activation method.
2025-02-06Simplify bundled gems warnings implementationDavid Rodríguez
Most of the stuff is not actually necessary.
2025-02-06Remove unnecessary SINCE_FAST_PATH constantDavid Rodríguez
If anything, I think this may be causing some false positives.
2025-02-05[rubygems/rubygems] Deprecate `CurrentRuby#maglev?` and other related maglev ↵Edouard CHIN
methods: - Follow up to https://github.com/rubygems/rubygems/pull/8430#discussion_r1927239555. The maglev platform was not supported by Bundler, so calling `gem "foo", platforms: ["maglev"]` would raise an error. The helpers added in the `CurrentRuby` class were used at a time when maglev was supported (as explained in https://github.com/rubygems/rubygems/commit/45ec86e2e528). Support of maglev was most likely dropped at some point and the helpers in the `CurrentRuby` class were not deprecated/removed. We decided to deprecate them now. https://github.com/rubygems/rubygems/commit/66388babf8
2025-02-05Expand stub-out scope of Fiddle.dlopenHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/12616
2025-02-04[ruby/resolv] Load win32/resolv with rake testHiroshi SHIBATA
https://github.com/ruby/resolv/commit/3ecfce3626
2025-02-03[ruby/weakref] Add missing block parameterNikita Shilnikov
A block is part of the Delegator's contract. Ruby 3.4 issues a warning if a block is passed but unused. This commit fixes the warning by adding a block to the argument list. https://github.com/ruby/weakref/commit/9495ec9191
2025-02-03[rubygems/rubygems] Raise a simpler error when RubyGems fails to activate a ↵David Rodríguez
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
2025-01-31Stop generating binstubs for Bundler itselfDavid Rodríguez
2025-01-31[rubygems/rubygems] Fix `bundle console` unnecessarily trying to load IRB twiceDavid Rodríguez
https://github.com/rubygems/rubygems/commit/f9bf58573f
2025-01-31[rubygems/rubygems] Remove unnecessary error handlingDavid Rodríguez
These gems always define their main namespace and I don't think that will ever change. https://github.com/rubygems/rubygems/commit/6663cbed53
2025-01-31[rubygems/rubygems] Consolidate the platform into a single list:Edouard CHIN
- Similar change than https://github.com/rubygems/rubygems/commit/29a1be0008e6, keep a single source of truth where we store the platform. The only change worth highlighing is the platform "maglev". It was not part of the supported platform of dependencies, so calling `gem 'foo', plaftorm: 'maglev'` would not work. However, it was supposed to according to https://github.com/rubygems/rubygems/commit/45ec86e2e528. That's why it was possible to do `Bundler.current_ruby.maglev?` or `Bundler.current_ruby.maglev_30?`. I didn't change the current behaviour and maglev is not supported, though I kept the `*maglev` methods as I believe CurrentRuby is public API. https://github.com/rubygems/rubygems/commit/29e219ebcf
2025-01-31[rubygems/rubygems] Consolidated the Ruby version list:Edouard CHIN
- We keep 2 list of supported ruby versions and each time a new ruby version is released we need to maintain both list. Forgetting to update one would prevent users from adding gem for a specific plaftorm (i.e. https://github.com/rubygems/rubygems/commit/7cd19d824d17 and https://github.com/rubygems/rubygems/commit/5462322f8f0c). Extracted the list from the Dependency class and moved it to the CurrentRuby class (which I believe was originally added for that reason). https://github.com/rubygems/rubygems/commit/a91edd6c1f
2025-01-31[rubygems/rubygems] Add ruby_34 and ruby_35 as valid platform:Edouard CHIN
- Fix https://github.com/rubygems/rubygems/pull/8427 - Similar to https://github.com/rubygems/rubygems/commit/7cd19d824d17. Tweaked a bit the test supposed to prevent this error by checking whether the dep respond to these methods. https://github.com/rubygems/rubygems/commit/62012eaeb6
2025-01-29[ruby/error_highlight] Ensure first_line and last_line are setYusuke Endoh
Fixes https://github.com/ruby/error_highlight/pull/58 https://github.com/ruby/error_highlight/commit/9ddc1f31a9
2025-01-28Ignore vendor folder for documentation just onceNobuyoshi Nakada
2025-01-28[rubygems/rubygems] Remove respond_to? check for Thread#name=Akshay Birajdar
Since bundler now requires 3.3.1, we no longer need to do respond_to? check before setting thread name. https://github.com/rubygems/rubygems/commit/bfc37fc7db
2025-01-28[rubygems/rubygems] Fix bug report template incorrectly showing upDavid Rodríguez
If a gem has an internal error, that should not make `bundle console` print the bug report template. https://github.com/rubygems/rubygems/commit/7432a9a084
2025-01-28[rubygems/rubygems] Remove unnecessary checkDavid Rodríguez
At this point, `dep.autorequire` is always nil. https://github.com/rubygems/rubygems/commit/0fb2b0a70a
2025-01-28[rubygems/rubygems] Remove unnecessary initializationDavid Rodríguez
This local variable is initialized later on in this file. https://github.com/rubygems/rubygems/commit/5c15dbd210
2025-01-28[rubygems/rubygems] Retry namespaced require using `retry`David Rodríguez
It's simpler. https://github.com/rubygems/rubygems/commit/76f1e3bf05
2025-01-28[rubygems/rubygems] Handle all `Bundle.require` exceptions at the same levelDavid Rodríguez
https://github.com/rubygems/rubygems/commit/a5519f4f79
2025-01-28[rubygems/rubygems] Remove dead codeDavid Rodríguez
LoadError is not a RuntimeError. https://github.com/rubygems/rubygems/commit/4c67549722
2025-01-28[rubygems/rubygems] Remove unnecessary `@autorequire` initializationDavid Rodríguez
It's initialized again later on. https://github.com/rubygems/rubygems/commit/c3ddc81659
2025-01-28[rubygems/rubygems] Support installing arm native gems on WindowsDavid Rodríguez
https://github.com/rubygems/rubygems/commit/96496e3f53 Co-authored-by: Johnny Shields <johnny.shields@gmail.com>
2025-01-28[rubygems/rubygems] Reuse platform constantsDavid Rodríguez
We need to move platform monkeypatching to happen earlier because otherwise `Bundler::GemHelpers` will use the constants before they have actually been defined. https://github.com/rubygems/rubygems/commit/086c3438dc
2025-01-28[rubygems/rubygems] Define `Bundler::SpecSet#to_s`David Rodríguez
For better debuggability. https://github.com/rubygems/rubygems/commit/21d252fa7a
2025-01-28[rubygems/rubygems] Remove unnecessary mappingDavid Rodríguez
I don't think any supported platform has these names, so the mapping should be unnecessary. https://github.com/rubygems/rubygems/commit/6b1bdfc8a8
2025-01-24Added force_activate feature againHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/12624
2025-01-24irb and reline are now bundled gems, we don't need to skip workaround for themHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/12624
2025-01-24Migrate irb and reline to the bundled gemsHiroshi SHIBATA
Notes: Merged: https://github.com/ruby/ruby/pull/12624
2025-01-24[ruby/uri] [DOC] Make documentation 100%Nobuyoshi Nakada
https://github.com/ruby/uri/commit/fe7aa3dac2
2025-01-23[ruby/weakref] weakref.gemspec: Drop gemspec config on executablesOlle Jonsson
This gem does not expose any executables. https://github.com/ruby/weakref/commit/819471ce35
2025-01-22[ruby/irb] Bump version to 1.15.1tomoya ishida
(https://github.com/ruby/irb/pull/1070) https://github.com/ruby/irb/commit/df37b074e3 Notes: Merged: https://github.com/ruby/ruby/pull/12612
2025-01-22[ruby/irb] Fix pager preview with escape sequence and newlinestomoya ishida
(https://github.com/ruby/irb/pull/1069) https://github.com/ruby/irb/commit/a139562a07 Notes: Merged: https://github.com/ruby/ruby/pull/12612
2025-01-22[ruby/irb] Update documentation about the new copy commandStan Lo
(https://github.com/ruby/irb/pull/1067) https://github.com/ruby/irb/commit/6194111611 Notes: Merged: https://github.com/ruby/ruby/pull/12612
2025-01-22[ruby/irb] Show a quick preview of inspect result before pagertomoya ishida
launch (https://github.com/ruby/irb/pull/1040) * Quickly show inspect preview even if pretty_print takes too much time * Show a message "Inspecting..." while generating pretty_print content * Update inspecting message Co-authored-by: Stan Lo <stan001212@gmail.com> * Update rendering test for preparing inspect message * Don't show preview if pretty_print does not take time --------- https://github.com/ruby/irb/commit/03c36586e6 Co-authored-by: Stan Lo <stan001212@gmail.com> Notes: Merged: https://github.com/ruby/ruby/pull/12612