Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stackoverflow error in YARD #886

Closed
lsegal opened this issue May 18, 2011 · 3 comments
Closed

Stackoverflow error in YARD #886

lsegal opened this issue May 18, 2011 · 3 comments

Comments

@lsegal
Copy link

lsegal commented May 18, 2011

Hi,

One of our YARD tests is failing in Rubinius HEAD (works in 1.8,1.9,JRuby) with a stack overflow error. The backtrace is long, so I've summarized it:

1) YARD::Registry.load_yardoc should maintain hash key equality on loaded objects
    Failure/Error: Registry.load!(File.dirname(__FILE__) + '/serializers/data/serialized_yardoc')
    StackError:
     StackError
    # kernel/common/array.rb:1065:in `last'
    # kernel/common/string.rb:1739:in `split'
    # ./lib/yard/serializers/yardoc_serializer.rb:47:in `serialized_path'
    # ./lib/yard/serializers/yardoc_serializer.rb:72:in `deserialize'
    # ./lib/yard/registry_store.rb:36:in `[] (get)'
    # ./lib/yard/registry.rb:239:in `root'
    # ./lib/yard/code_objects/base.rb:10:in `initialize'
    # kernel/common/marshal.rb:416:in `construct_array'
    # kernel/common/marshal.rb:353:in `construct'
    # kernel/common/marshal.rb:395:in `construct'
    # kernel/common/marshal.rb:401:in `construct'
    # kernel/common/marshal.rb:847:in `set_instance_variables'
    # kernel/common/integer.rb:121:in `times'
    # kernel/common/marshal.rb:845:in `set_instance_variables'
    # kernel/common/marshal.rb:547:in `construct_object'
    # kernel/common/marshal.rb:361:in `construct'
    # kernel/common/marshal.rb:913:in `load'
    *snip!*

    # ./lib/yard/serializers/yardoc_serializer.rb:75:in `deserialize'
    # ./lib/yard/registry_store.rb:36:in `[] (get)'
    # ./lib/yard/registry.rb:239:in `root'
    # ./lib/yard/code_objects/base.rb:10:in `initialize'
    # kernel/common/marshal.rb:416:in `construct_array'
    # kernel/common/marshal.rb:353:in `construct'
    # kernel/common/marshal.rb:395:in `construct'
    # kernel/common/marshal.rb:401:in `construct'
    # kernel/common/marshal.rb:847:in `set_instance_variables'
    # kernel/common/integer.rb:121:in `times'
    # kernel/common/marshal.rb:845:in `set_instance_variables'
    # kernel/common/marshal.rb:547:in `construct_object'
    # kernel/common/marshal.rb:361:in `construct'
    # kernel/common/marshal.rb:913:in `load'
    # ./lib/yard/serializers/yardoc_serializer.rb:75:in `deserialize'
    # ./lib/yard/registry_store.rb:36:in `[] (get)'
    # ./lib/yard/registry.rb:239:in `root'
    # ./lib/yard/code_objects/base.rb:10:in `initialize'
    # kernel/common/marshal.rb:416:in `construct_array'
    # kernel/common/marshal.rb:353:in `construct'
    # kernel/common/marshal.rb:395:in `construct'
    # kernel/common/marshal.rb:401:in `construct'
    # kernel/common/marshal.rb:847:in `set_instance_variables'
    # kernel/common/integer.rb:121:in `times'
    # kernel/common/marshal.rb:845:in `set_instance_variables'
    # kernel/common/marshal.rb:547:in `construct_object'
    # kernel/common/marshal.rb:361:in `construct'
    # kernel/common/marshal.rb:913:in `load'
    # ./lib/yard/serializers/yardoc_serializer.rb:75:in `deserialize'
    # ./lib/yard/registry_store.rb:36:in `[] (get)'
    # ./lib/yard/registry.rb:239:in `root'
    # ./lib/yard/code_objects/base.rb:10:in `initialize'
    # kernel/common/marshal.rb:416:in `construct_array'
    # kernel/common/marshal.rb:353:in `construct'
    # kernel/common/marshal.rb:395:in `construct'
    # kernel/common/marshal.rb:401:in `construct'
    # kernel/common/marshal.rb:847:in `set_instance_variables'
    # kernel/common/integer.rb:121:in `times'
    # kernel/common/marshal.rb:845:in `set_instance_variables'
    # kernel/common/marshal.rb:547:in `construct_object'
    # kernel/common/marshal.rb:361:in `construct'
    # kernel/common/marshal.rb:913:in `load'
    # ./lib/yard/serializers/yardoc_serializer.rb:75:in `deserialize'
    # ./lib/yard/registry_store.rb:36:in `[] (get)'
    # ./lib/yard/registry.rb:239:in `root'
    # ./lib/yard/code_objects/base.rb:10:in `initialize'
    # kernel/common/marshal.rb:416:in `construct_array'
    # kernel/common/marshal.rb:353:in `construct'
    # kernel/common/marshal.rb:395:in `construct'
    # kernel/common/marshal.rb:401:in `construct'
    # kernel/common/marshal.rb:847:in `set_instance_variables'
    # kernel/common/integer.rb:121:in `times'
    # kernel/common/marshal.rb:845:in `set_instance_variables'
    # kernel/common/marshal.rb:547:in `construct_object'
    # kernel/common/marshal.rb:361:in `construct'
    # kernel/common/marshal.rb:913:in `load'
    # ./lib/yard/serializers/yardoc_serializer.rb:75:in `deserialize'
    # ./lib/yard/registry_store.rb:226:in `load_root'
    # ./lib/yard/registry_store.rb:196:in `load_yardoc'
    # ./lib/yard/registry_store.rb:90:in `load'
    # ./lib/yard/registry_store.rb:101:in `load!'
    # ./lib/yard/registry.rb:132:in `load!'
    # ./spec/registry_spec.rb:201:in `__script__'
    # kernel/common/eval.rb:164:in `instance_eval'
    # kernel/bootstrap/array.rb:90:in `map'
    # kernel/bootstrap/array.rb:71:in `each'
    # kernel/bootstrap/array.rb:90:in `map'
    # kernel/bootstrap/array.rb:90:in `map'
    # kernel/bootstrap/array.rb:71:in `each'
    # kernel/bootstrap/array.rb:90:in `map'
    # kernel/bootstrap/array.rb:90:in `map'
    # kernel/bootstrap/array.rb:71:in `each'
    # kernel/bootstrap/array.rb:90:in `map'

Unfortunately I'm not too sure what's causing it, so I can't figure out where to start debugging, I figure I might get some better pointers here than going in blind.

Thanks!

@evanphx
Copy link
Member

evanphx commented May 18, 2011

This is actually a fixed bug, so I think that your Rubinius clone is not up to date.

The bug is that CodeObjectList subclasses Array and changes #initialize to have run some other code, and then Marshal wants to create an instance of CodeObjectList so it called #new, which called #initialize, which ran the code to do the unmarshalling, thus the loop.

But we did already fix this. If you're using rvm, you should ask wayne why rvm didn't update you to Rubinius HEAD properly.

@evanphx
Copy link
Member

evanphx commented May 18, 2011

@evanphx evanphx closed this as completed May 18, 2011
@lsegal
Copy link
Author

lsegal commented May 18, 2011

Odd, I just did a git pull this morning and rebuild-- I'm going to verify that I'm using the right ruby, but here's what -v gives me:

rubinius 1.2.1dev (1.8.7 d97571c1 2010-12-21 JI) [x86_64-apple-darwin10.6.0]

brixen added a commit that referenced this issue Jun 16, 2014
RubyGems 2.3.0 installed

=== 2.3.0 / 2014-06-10

Minor enhancements:

* Added the `open` command which allows you to inspect the source of a gem
  using your editor.
  Issue #789 by Mike Perham. Pull request #804 by Vitali F.
* The `update` command shows a summary of which gems were and were not
  updated.  Issue #544 by Mark D. Blackwell.
  Pull request #777 by Tejas Bubane.
* Improved "could not find 'gem'" error reporting.  Pull request #913 by
  Richard Schneeman.
* Gem.use_gemdeps now accepts an argument specifying the path of the gem
  dependencies file.  When the file is not found an ArgumentError is raised.
* Writing a .lock file for a gem dependencies file is now controlled by the
  --[no-]lock option.  Pull reuqest #774 by Jeremy Evans.
* Suggestion of alternate names and spelling corrections during install can be
  suppressed with the --no-suggestions option.  Issue #867 by Jimmy Cuadra.
* Added mswin64 support.  Pull request #881 by U. Nakamura.
* A gem is installable from an IO again (as in RubyGems 1.8.x and older).
  Pull request #716 by Xavier Shay.
* RubyGems no longer attempts to build extensions during activation.  Instead
  a warning is issued instructing you to run `gem pristine` which will build
  the extensions for the current platform.  Issue #796 by dunric.
* Added Gem::UserInteraction#verbose which prints when the --verbose option is
  given.  Pull request #811 by Aaron Patterson.
* RubyGems can now fetch gems from private repositories using S3.  Pull
  request #856 by Brian Palmer.
* Added Gem::ConflictError subclass of Gem::LoadError so you can distinguish
  conflicts from other problems.  Pull request #841 by Aaron Patterson.
* Cleaned up unneeded load_yaml bootstrapping in Rakefile.  Pull request #815
  by Zachary Scott.
* Improved performance of conflict resolution.  Pull request #842 by Aaron
  Patterson.
* Add documentation of "~> 0" to Gem::Version.  Issue #896 by Aaron Suggs.
* Added CONTRIBUTING file.  Pull request #849 by Mark Turner.
* Allow use of bindir in windows_stub_script in .bat
  Pull request #818 by @unak and @nobu
* Use native File::PATH_SEPARATOR and remove $ before gem env on
  Gem::Dependency#to_specs. Pull request #915 by @parkr
* RubyGems recommends SPDX IDs for licenses now.  Pull request #917 by
  Benjamin Fleischer.

Bug fixes:

* RubyGems now only fetches the latest specs to find misspellings which speeds
  up gem suggestions.  Pull request #808 by Aaron Patterson.
* The given .gem is installed again when multiple versions of the same gem
  exist in the current directory.  Bug #875 by Prem Sichanugrist.
* Local gems are preferred by name over remote gems again.  Bug #834 by
  jonforums.
* RubyGems can install local prerelease gems again.  Pull request #866 by
  Aaron Patterson.  Issue #813 by André Arko.
* RubyGems installs development dependencies correctly again.  Issue #893 by
  Jens Wille.
* RubyGems only installs prerelease versions when they are requested again.
  Issue #853 by Seth Vargo, special thanks to Zachary Scott and Ben Moss.
  Issue #884 by Nathaniel Bibler.
* Fixed RubyGems list and search command help.  Pull request #905 and #928 by
  Gabriel Gilder.
* The list of gems to uninstall is always sorted now.  Bug #918 by postmodern.
* The update command only updates exactly matching gem names now.  Bug #919 by
  postmodern.
* Gem::Server now supports prerelease versions.  Bug #857 by Marcelo Alvim.
* RubyGems no longer raises an exception immediately when gems are missing
  with RUBYGEMS_GEMDEPS.  A warning is printed instead.  Issue #886 by Michael
  Kaiser-Nyman.
* Commands using the rubygems.org API no longer try to sign-in when a
  non-rubygems API key has been chosen.  Bug #826 by Ben Sedat.
* Updated documentation of Gem::Specification#executables to indicate that
  only ruby scripts are allowed.  Bug #830 by Geoff Nixon.
* Gem dependency API supports multiple platforms for #platform and #platforms
  now.  Bug #821 by johnny5-.
* Gem dependency API supports lockfiles without explicit sources.  Bug #820 by
  johnny5-.
* Gem dependency API supports lockfiles with multiple sources.  Bug #822 by
  johnny5-, bug #851 by sumit shah.
* Gem dependency API supports lockfiles with git sources using branch, tag and
  ref.  Bug #822 by johnny5-, #931 by Christoph Blank.
* Gem dependency API no longer raises an exception when a gem does not exist
  in one of the configured sources.  Bug #897 by Michael Kaiser-Nyman.
* Gem dependency API no longer lists development dependencies in the lockfile.
  Bug #768 by Diego Viola, #916 by Santiago Pastorino.
* SSL configuration entries in ~/.gemrc are properly round-tripped.  Bug #837
  by Noah Luck Easterly.
* The environment command now shows the system configuration directory where
  the all-users gemrc lives.  Bug #827 by Ben Langfeld.
* Improved speed of conflict checking when activating gems.  Pull request #843
  by Aaron Patterson.
* Improved speed of levenshtein distance for gem suggestion misspellings.
  Pull requests #809, #812 by Aaron Patterson.
* Restored persistent connections.  Pull request #869 by Aaron Patterson.
* Reduced requests when fetching gems with the bundler API.  Pull request #773
  by Charlie Somerville.
* Reduced dependency prefetching to improve install speed.  Pull requests
  #871, #872 by Matthew Draper.
* RubyGems now avoids net/http auto-proxy detection.  Issue #824 by HINOHARA
  Hiroshi.
* Removed conversion of Gem::List (used for debugging installs) to unless
  necessary.  Pull request #870 by Aaron Patterson.
* RubyGems now prints release notes from the current release.  Bug #814 by
  André Arko.
* RubyGems allows installation of unsigned gems again with -P MediumSecurity
  and lower.  Bug #859 by Justin S. Collins.
* Fixed typo in Jim Weirich's name.  Ruby pull request #577 by Mo Khan.
* Fixed typo in Gem.datadir documentation.  Pull request #868 by Patrick
  Jones.
* Fixed File.exists? warnings.  Pull request #829 by SHIBATA Hiroshi.
* Fixed show_release_notes test for LANG=C.  Issue #862 by Luis Lavena.
* Fixed Gem::Package from IO tests on windows.  Patch from issue #861 by Luis
  Lavena.
* Check for nil extensions as BasicSpecification does not initialize them.
  Pull request #882 by André Arko.
* Fixed Gem::BasicSpecification#require_paths receives a String for
  @require_paths. Pull requrest #904 by @danielpclark
* Fixed circular require warnings.  Bug #908 by Zachary Scott.
* Gem::Specification#require_paths can no longer accidentally be an Array.
  Pull requests #904, #909 by Daniel P. Clark.
* Don't build extensions if `build_dir/extensions` isn't writable.
  Pull request #912 by @dunric
* Gem::BasicSpecification#require_paths respects default_ext_dir_for now.  Bug
  #852 by Vít Ondruch.

=== 2.2.2 / 2014-02-05

Bug fixes:

* Fixed ruby tests when BASERUBY is not set.  Patch for #778 by Nobuyoshi
  Nakada.
* Removed double requests in RemoteFetcher#cache_update_path to improve remote
  install speed.  Pull request #772 by Charlie Somerville.
* The mkmf.log is now placed next to gem_make.out when building extensions.
* `gem install -g --local` no longer accesses the network.  Bug #776 by Jeremy
  Evans.
* RubyGems now correctly handles URL passwords with encoded characters.  Pull
  request #781 by Brian Fletcher.
* RubyGems now correctly escapes URL characters.  Pull request #788 by Brian
  Fletcher.
* RubyGems can now unpack tar files where the type flag is not given.  Pull
  request #790 by Cody Russell.
* Typo corrections.  Pull request ruby/ruby#506 by windwiny.
* RubyGems now uses both the default certificates and ssl_ca_cert instead of
  one or the other.  Pull request #795 by zebardy.
* RubyGems can now use the bundler API against hosted gem servers in a
  directory.  Pull request #801 by Brian Fletcher.
* RubyGems bin stubs now ignore non-versions.  This allows RubyGems bin stubs
  to list file names like "_foo_".  Issue #799 by Postmodern.
* Restored behavior of Gem::Version::new when subclassed.  Issue #805 by
  Sergio Rubio.

------------------------------------------------------------------------------
brixen added a commit that referenced this issue Jun 16, 2014
RubyGems 2.3.0 installed

=== 2.3.0 / 2014-06-10

Minor enhancements:

* Added the `open` command which allows you to inspect the source of a gem
  using your editor.
  Issue #789 by Mike Perham. Pull request #804 by Vitali F.
* The `update` command shows a summary of which gems were and were not
  updated.  Issue #544 by Mark D. Blackwell.
  Pull request #777 by Tejas Bubane.
* Improved "could not find 'gem'" error reporting.  Pull request #913 by
  Richard Schneeman.
* Gem.use_gemdeps now accepts an argument specifying the path of the gem
  dependencies file.  When the file is not found an ArgumentError is raised.
* Writing a .lock file for a gem dependencies file is now controlled by the
  --[no-]lock option.  Pull reuqest #774 by Jeremy Evans.
* Suggestion of alternate names and spelling corrections during install can be
  suppressed with the --no-suggestions option.  Issue #867 by Jimmy Cuadra.
* Added mswin64 support.  Pull request #881 by U. Nakamura.
* A gem is installable from an IO again (as in RubyGems 1.8.x and older).
  Pull request #716 by Xavier Shay.
* RubyGems no longer attempts to build extensions during activation.  Instead
  a warning is issued instructing you to run `gem pristine` which will build
  the extensions for the current platform.  Issue #796 by dunric.
* Added Gem::UserInteraction#verbose which prints when the --verbose option is
  given.  Pull request #811 by Aaron Patterson.
* RubyGems can now fetch gems from private repositories using S3.  Pull
  request #856 by Brian Palmer.
* Added Gem::ConflictError subclass of Gem::LoadError so you can distinguish
  conflicts from other problems.  Pull request #841 by Aaron Patterson.
* Cleaned up unneeded load_yaml bootstrapping in Rakefile.  Pull request #815
  by Zachary Scott.
* Improved performance of conflict resolution.  Pull request #842 by Aaron
  Patterson.
* Add documentation of "~> 0" to Gem::Version.  Issue #896 by Aaron Suggs.
* Added CONTRIBUTING file.  Pull request #849 by Mark Turner.
* Allow use of bindir in windows_stub_script in .bat
  Pull request #818 by @unak and @nobu
* Use native File::PATH_SEPARATOR and remove $ before gem env on
  Gem::Dependency#to_specs. Pull request #915 by @parkr
* RubyGems recommends SPDX IDs for licenses now.  Pull request #917 by
  Benjamin Fleischer.

Bug fixes:

* RubyGems now only fetches the latest specs to find misspellings which speeds
  up gem suggestions.  Pull request #808 by Aaron Patterson.
* The given .gem is installed again when multiple versions of the same gem
  exist in the current directory.  Bug #875 by Prem Sichanugrist.
* Local gems are preferred by name over remote gems again.  Bug #834 by
  jonforums.
* RubyGems can install local prerelease gems again.  Pull request #866 by
  Aaron Patterson.  Issue #813 by André Arko.
* RubyGems installs development dependencies correctly again.  Issue #893 by
  Jens Wille.
* RubyGems only installs prerelease versions when they are requested again.
  Issue #853 by Seth Vargo, special thanks to Zachary Scott and Ben Moss.
  Issue #884 by Nathaniel Bibler.
* Fixed RubyGems list and search command help.  Pull request #905 and #928 by
  Gabriel Gilder.
* The list of gems to uninstall is always sorted now.  Bug #918 by postmodern.
* The update command only updates exactly matching gem names now.  Bug #919 by
  postmodern.
* Gem::Server now supports prerelease versions.  Bug #857 by Marcelo Alvim.
* RubyGems no longer raises an exception immediately when gems are missing
  with RUBYGEMS_GEMDEPS.  A warning is printed instead.  Issue #886 by Michael
  Kaiser-Nyman.
* Commands using the rubygems.org API no longer try to sign-in when a
  non-rubygems API key has been chosen.  Bug #826 by Ben Sedat.
* Updated documentation of Gem::Specification#executables to indicate that
  only ruby scripts are allowed.  Bug #830 by Geoff Nixon.
* Gem dependency API supports multiple platforms for #platform and #platforms
  now.  Bug #821 by johnny5-.
* Gem dependency API supports lockfiles without explicit sources.  Bug #820 by
  johnny5-.
* Gem dependency API supports lockfiles with multiple sources.  Bug #822 by
  johnny5-, bug #851 by sumit shah.
* Gem dependency API supports lockfiles with git sources using branch, tag and
  ref.  Bug #822 by johnny5-, #931 by Christoph Blank.
* Gem dependency API no longer raises an exception when a gem does not exist
  in one of the configured sources.  Bug #897 by Michael Kaiser-Nyman.
* Gem dependency API no longer lists development dependencies in the lockfile.
  Bug #768 by Diego Viola, #916 by Santiago Pastorino.
* SSL configuration entries in ~/.gemrc are properly round-tripped.  Bug #837
  by Noah Luck Easterly.
* The environment command now shows the system configuration directory where
  the all-users gemrc lives.  Bug #827 by Ben Langfeld.
* Improved speed of conflict checking when activating gems.  Pull request #843
  by Aaron Patterson.
* Improved speed of levenshtein distance for gem suggestion misspellings.
  Pull requests #809, #812 by Aaron Patterson.
* Restored persistent connections.  Pull request #869 by Aaron Patterson.
* Reduced requests when fetching gems with the bundler API.  Pull request #773
  by Charlie Somerville.
* Reduced dependency prefetching to improve install speed.  Pull requests
  #871, #872 by Matthew Draper.
* RubyGems now avoids net/http auto-proxy detection.  Issue #824 by HINOHARA
  Hiroshi.
* Removed conversion of Gem::List (used for debugging installs) to unless
  necessary.  Pull request #870 by Aaron Patterson.
* RubyGems now prints release notes from the current release.  Bug #814 by
  André Arko.
* RubyGems allows installation of unsigned gems again with -P MediumSecurity
  and lower.  Bug #859 by Justin S. Collins.
* Fixed typo in Jim Weirich's name.  Ruby pull request #577 by Mo Khan.
* Fixed typo in Gem.datadir documentation.  Pull request #868 by Patrick
  Jones.
* Fixed File.exists? warnings.  Pull request #829 by SHIBATA Hiroshi.
* Fixed show_release_notes test for LANG=C.  Issue #862 by Luis Lavena.
* Fixed Gem::Package from IO tests on windows.  Patch from issue #861 by Luis
  Lavena.
* Check for nil extensions as BasicSpecification does not initialize them.
  Pull request #882 by André Arko.
* Fixed Gem::BasicSpecification#require_paths receives a String for
  @require_paths. Pull requrest #904 by @danielpclark
* Fixed circular require warnings.  Bug #908 by Zachary Scott.
* Gem::Specification#require_paths can no longer accidentally be an Array.
  Pull requests #904, #909 by Daniel P. Clark.
* Don't build extensions if `build_dir/extensions` isn't writable.
  Pull request #912 by @dunric
* Gem::BasicSpecification#require_paths respects default_ext_dir_for now.  Bug
  #852 by Vít Ondruch.

------------------------------------------------------------------------------

RubyGems installed the following executables:
  /source/rubinius/rbx/bin/gem

RubyGems system software updated
brixen added a commit that referenced this issue Oct 21, 2014
Installing RubyGems 2.4.2
RubyGems 2.4.2 installed

=== 2.4.2 / 2014-10-01

This release was sponsored by Ruby Central.

Bug fixes:

* RubyGems now correctly matches wildcard no_proxy hosts.  Issue #997 by
  voelzemo.
* Added support for missing git_source method in the gem dependencies API.
* Fixed handling of git gems with an alternate install directory.
* Lockfiles will no longer be truncated upon resolution errors.
* Fixed messaging for `gem owner -a`.  Issue #1004 by Aaron Patterson, Ryan
  Davis.
* Removed meaningless ensure.  Pull request #1003 by gogotanaka.
* Improved wording of --source option help.  Pull request #989 by Jason Clark.
* Empty build_info files are now ignored.  Issue #903 by Adan Alvarado.
* Gem::Installer ignores dependency checks when installing development
  dependencies.  Issue #994 by Jens Willie.
* `gem update` now continues after dependency errors.  Issue #993 by aaronchi.
* RubyGems no longer warns about semantic version dependencies for the 0.x
  range.  Issue #987 by Jeff Felchner, pull request #1006 by Hsing-Hui Hsu.
* Added minimal lock to allow multithread installation of gems.  Issue #982
  and pull request #1005 by Yorick Peterse
* RubyGems now considers prerelease dependencies as it did in earlier versions
  when --prerelease is given.  Issue #990 by Jeremy Tryba.
* Updated capitalization in README.  Issue #1010 by Ben Bodenmiller.
* Fixed activating gems from a Gemfile for default gems.  Issue #991 by khoan.
* Fixed windows stub script generation for Cygwin.  Issue #1000 by Brett
  DiFrischia.
* Allow gem bindir and ruby.exe to live in separate diretories.  Pull request
  #942 by Ian Flynn.
* Fixed handling of gemspec in gem dependencies files to match Bundler
  behavior.  Issue #1020 by Michal Papis.
* Fixed `gem update` when updating to prereleases.  Issue #1028 by Santiago
  Pastorino.
* RubyGems now fails immediately when a git reference cannot be found instead
  of spewing git errors.  Issue #1031 by Michal Papis

=== 2.4.1 / 2014-07-17

Bug fixes:

* RubyGems can now be updated on Ruby implementations that do not support
  vendordir in RbConfig::CONFIG.  Issue #974 by net1957.

=== 2.4.0 / 2014-07-16

Minor enhancements:

* The contents command now supports a --show-install-dir option that shows
  only the directory the gem is installed in.  Feature request #966 by Akinori
  MUSHA.
* Added a --build-root option to the install command for packagers.  Pull
  request #965 by Marcus Rückert.
* Added vendor gem support to RubyGems.  Package managers may now install gems
  in Gem.vendor_dir with the --vendor option to gem install.  Issue #943 by
  Marcus Rückert.

Bug fixes:

* Kernel#gem now respects the prerelease flag when activating gems.
  Previously this behavior was undefined which could lead to bugs when a
  prerelease version was unintentionally activated.  Bug #938 by Joe Ferris.
* RubyGems now prefers gems from git over installed gems.  This allows gems
  from git to override an installed gem with the same name and version.  Bug
  #944 by Thomas Kriechbaumer.
* Fixed handling of git gems in a lockfile with unversioned dependencies.  Bug
  #940 by Michael Kaiser-Nyman.
* The ruby directive in a gem dependencies file is ignored when installing.
  Bug #941 by Michael Kaiser-Nyman.
* Added open to list of builtin commands (`gem open` now works).  Reported by
  Espen Antonsen.
* `gem open` now works with command-line editors.  Pull request #962 by Tim
  Pope.
* `gem install -g` now respects `--conservative`.  Pull request #950 by Jeremy
  Evans.
* RubyGems releases announcements now now include checksums.  Bug #939 by
  Alexander E. Fischer.
* RubyGems now expands ~ in $PATH when checking if installed executables will
  be runnable.  Pull request #945 by Alex Talker.
* Fixed `gem install -g --explain`.  Issue #947 by Luis Lavena.  Patch by
  Hsing-Hui Hsu.
* RubyGems locks less during gem activation.  Pull request #951 by Aaron
  Patterson and Justin Searls, #969 by Jeremy Tryba.
* Kernel#gem is now thread-safe.  Pull request #967 by Aaron Patterson.
* RubyGems now handles spaces in directory names for some parts of extension
  building.  Pull request #949 by Tristan Hill.
* RubyGems no longer defines an empty Date class.  Pull Request #948 by Benoit
  Daloze.
* RubyGems respects --document options for `gem update` again.  Bug 946 by
  jonforums.  Patch by Hsing-Hui Hsu.
* RubyGems generates documentation again with --ignore-dependencies.  Bug #961
  by Pulfer.
* RubyGems can install extensions across partitions now.  Pull request #970 by
  Michael Scherer.
* `-s` is now short for `--source` which resolves an ambiguity with
  --no-suggestions.  Pull request #955 by Alexander Kahn.
* Added extra test for ~> for 0.0.X versions.  Pull request #958 by Mark
  Lorenz.
* Fixed typo in gem updated help.  Pull request #952 by Per Modin.
* Clarified that the gem description should not be excessively long.  Part of
  bug #956 by Renier Morales.
* Hid documentation of outdated test_files related methods in Specification.
  Guides issue #90 by Emil Soman.
* RubyGems now falls back to the old index if the rubygems.org API fails
  during gem resolution.

=== 2.3.0 / 2014-06-10

Minor enhancements:

* Added the `open` command which allows you to inspect the source of a gem
  using your editor.
  Issue #789 by Mike Perham. Pull request #804 by Vitali F.
* The `update` command shows a summary of which gems were and were not
  updated.  Issue #544 by Mark D. Blackwell.
  Pull request #777 by Tejas Bubane.
* Improved "could not find 'gem'" error reporting.  Pull request #913 by
  Richard Schneeman.
* Gem.use_gemdeps now accepts an argument specifying the path of the gem
  dependencies file.  When the file is not found an ArgumentError is raised.
* Writing a .lock file for a gem dependencies file is now controlled by the
  --[no-]lock option.  Pull reuqest #774 by Jeremy Evans.
* Suggestion of alternate names and spelling corrections during install can be
  suppressed with the --no-suggestions option.  Issue #867 by Jimmy Cuadra.
* Added mswin64 support.  Pull request #881 by U. Nakamura.
* A gem is installable from an IO again (as in RubyGems 1.8.x and older).
  Pull request #716 by Xavier Shay.
* RubyGems no longer attempts to build extensions during activation.  Instead
  a warning is issued instructing you to run `gem pristine` which will build
  the extensions for the current platform.  Issue #796 by dunric.
* Added Gem::UserInteraction#verbose which prints when the --verbose option is
  given.  Pull request #811 by Aaron Patterson.
* RubyGems can now fetch gems from private repositories using S3.  Pull
  request #856 by Brian Palmer.
* Added Gem::ConflictError subclass of Gem::LoadError so you can distinguish
  conflicts from other problems.  Pull request #841 by Aaron Patterson.
* Cleaned up unneeded load_yaml bootstrapping in Rakefile.  Pull request #815
  by Zachary Scott.
* Improved performance of conflict resolution.  Pull request #842 by Aaron
  Patterson.
* Add documentation of "~> 0" to Gem::Version.  Issue #896 by Aaron Suggs.
* Added CONTRIBUTING file.  Pull request #849 by Mark Turner.
* Allow use of bindir in windows_stub_script in .bat
  Pull request #818 by @unak and @nobu
* Use native File::PATH_SEPARATOR and remove $ before gem env on
  Gem::Dependency#to_specs. Pull request #915 by @parkr
* RubyGems recommends SPDX IDs for licenses now.  Pull request #917 by
  Benjamin Fleischer.

Bug fixes:

* RubyGems now only fetches the latest specs to find misspellings which speeds
  up gem suggestions.  Pull request #808 by Aaron Patterson.
* The given .gem is installed again when multiple versions of the same gem
  exist in the current directory.  Bug #875 by Prem Sichanugrist.
* Local gems are preferred by name over remote gems again.  Bug #834 by
  jonforums.
* RubyGems can install local prerelease gems again.  Pull request #866 by
  Aaron Patterson.  Issue #813 by André Arko.
* RubyGems installs development dependencies correctly again.  Issue #893 by
  Jens Wille.
* RubyGems only installs prerelease versions when they are requested again.
  Issue #853 by Seth Vargo, special thanks to Zachary Scott and Ben Moss.
  Issue #884 by Nathaniel Bibler.
* Fixed RubyGems list and search command help.  Pull request #905 and #928 by
  Gabriel Gilder.
* The list of gems to uninstall is always sorted now.  Bug #918 by postmodern.
* The update command only updates exactly matching gem names now.  Bug #919 by
  postmodern.
* Gem::Server now supports prerelease versions.  Bug #857 by Marcelo Alvim.
* RubyGems no longer raises an exception immediately when gems are missing
  with RUBYGEMS_GEMDEPS.  A warning is printed instead.  Issue #886 by Michael
  Kaiser-Nyman.
* Commands using the rubygems.org API no longer try to sign-in when a
  non-rubygems API key has been chosen.  Bug #826 by Ben Sedat.
* Updated documentation of Gem::Specification#executables to indicate that
  only ruby scripts are allowed.  Bug #830 by Geoff Nixon.
* Gem dependency API supports multiple platforms for #platform and #platforms
  now.  Bug #821 by johnny5-.
* Gem dependency API supports lockfiles without explicit sources.  Bug #820 by
  johnny5-.
* Gem dependency API supports lockfiles with multiple sources.  Bug #822 by
  johnny5-, bug #851 by sumit shah.
* Gem dependency API supports lockfiles with git sources using branch, tag and
  ref.  Bug #822 by johnny5-, #931 by Christoph Blank.
* Gem dependency API no longer raises an exception when a gem does not exist
  in one of the configured sources.  Bug #897 by Michael Kaiser-Nyman.
* Gem dependency API no longer lists development dependencies in the lockfile.
  Bug #768 by Diego Viola, #916 by Santiago Pastorino.
* SSL configuration entries in ~/.gemrc are properly round-tripped.  Bug #837
  by Noah Luck Easterly.
* The environment command now shows the system configuration directory where
  the all-users gemrc lives.  Bug #827 by Ben Langfeld.
* Improved speed of conflict checking when activating gems.  Pull request #843
  by Aaron Patterson.
* Improved speed of levenshtein distance for gem suggestion misspellings.
  Pull requests #809, #812 by Aaron Patterson.
* Restored persistent connections.  Pull request #869 by Aaron Patterson.
* Reduced requests when fetching gems with the bundler API.  Pull request #773
  by Charlie Somerville.
* Reduced dependency prefetching to improve install speed.  Pull requests
  #871, #872 by Matthew Draper.
* RubyGems now avoids net/http auto-proxy detection.  Issue #824 by HINOHARA
  Hiroshi.
* Removed conversion of Gem::List (used for debugging installs) to unless
  necessary.  Pull request #870 by Aaron Patterson.
* RubyGems now prints release notes from the current release.  Bug #814 by
  André Arko.
* RubyGems allows installation of unsigned gems again with -P MediumSecurity
  and lower.  Bug #859 by Justin S. Collins.
* Fixed typo in Jim Weirich's name.  Ruby pull request #577 by Mo Khan.
* Fixed typo in Gem.datadir documentation.  Pull request #868 by Patrick
  Jones.
* Fixed File.exists? warnings.  Pull request #829 by SHIBATA Hiroshi.
* Fixed show_release_notes test for LANG=C.  Issue #862 by Luis Lavena.
* Fixed Gem::Package from IO tests on windows.  Patch from issue #861 by Luis
  Lavena.
* Check for nil extensions as BasicSpecification does not initialize them.
  Pull request #882 by André Arko.
* Fixed Gem::BasicSpecification#require_paths receives a String for
  @require_paths. Pull requrest #904 by @danielpclark
* Fixed circular require warnings.  Bug #908 by Zachary Scott.
* Gem::Specification#require_paths can no longer accidentally be an Array.
  Pull requests #904, #909 by Daniel P. Clark.
* Don't build extensions if `build_dir/extensions` isn't writable.
  Pull request #912 by @dunric
* Gem::BasicSpecification#require_paths respects default_ext_dir_for now.  Bug
  #852 by Vít Ondruch.

------------------------------------------------------------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants