Skip to content

Release 3.60

Compare
Choose a tag to compare
@brixen brixen released this 22 Sep 16:56
· 751 commits to master since this release

Version 3.60 (2016-09-21)

  • Bump libsodium to 1.0.11 (#3696) (Jesse Cooke)
  • Specs for reopening class/module private constant. (Brian Shirai)
  • Apple 10.12 deprecates syscall(2). (Brian Shirai)
  • Removed support for private constants. Closes #3697. (Brian Shirai)
    Private constants are a bad idea, and supporting them isn't necessarily a good
    idea.

Private constants do not add any capability to Ruby. They merely restrict
programs that would otherwise run. For this reason, not supporting private
constants in Rubinius doesn't prohibit any code that would otherwise run in
Ruby, except for the fruitless class of code that soley relies on accessing a
private constant to raise an exception.

The exception that is raised is a NameError, which causes confusion between a
constant not being defined at all, and therefore able to be defined or
autoloaded, etc., and the constant being defined but private, and therefore
prohibiting defining the constant. To distinguish between these cases would
require parsing the exception text itself.

Despite being labeled private and superficially not accessible, it is easy to
actually access the constant. So no well-meaning code is actually inhibited by
labeling a constant private.

If code were presented that relied on private constants being private, in the
positive sense (ie added capability, not merely prohibited capability), we
can revisit support for private constants.

  • Guard File.setgid? spec for superuser. (Brian Shirai)
  • Properly include stdint.h for uint64_t. (Brian Shirai)