Skip to content

Release 2.5.8

Compare
Choose a tag to compare
@brixen brixen released this 14 Jul 23:42
· 1750 commits to master since this release

Version 2.5.8 (2015-07-14)

News:

  • Array#flatten compatibility when calling #to_a on elements is improved.

  • Fixed checking the return value of malloc() in case allocation fails.

  • The C++ abort, bug, warn methods use the logger facility.

  • Internal locking is improved.

  • Rubinius::Metrics performance counters are now only counters and not gauges
    because counters preserve their characteristics under sampling.

  • Parsing of configuration options containing a '.' is improved.

  • Rubinius::Metrics FileEmitter writes performance counters to a specified
    file every -Xsystem.metrics.interval milliseconds.

  • BasicObject#equal? is used for Symbol#==.

  • The young generation garbage collector size and lifetime auto-tuning is
    removed. The size can be set with -Xgc.young_bytes, which defaults to 40mb.
    The lifetime can be set with -Xgc.young_lifetime, which defaults to 2.

  • Comparable#== uses a recursion guard instead of rescuing SystemStackError.

  • Marshal#load compatibility is improved for an instance of a Hash that has
    been extended.

  • Configuration options are available for -Xsystem.log.limit,
    -Xsystem.log.access and -Xsystem.log.archives. This provides native log
    rotation by Rubinius that does not depend on signals. Use of signals for key
    functionality in a runtime like Rubinius is problematic because the running
    Ruby program could trap those signals and interfere with the system.

    The option -Xsystem.log.limit sets a limit in bytes on the size of the log
    file.

    The option -Xsystem.log.archives sets a limit on the number of archives that
    are retained. The active log file is zipped and the files are rotated up to
    the limit, resulting in, for example, rbx-user.log, rbx-user.log.1.Z, etc.

    The option -Xsystem.log.access sets the access permissions on the log file.

  • Rubinius::Diagnostics are added. The diagnostics provide state-oriented
    logging, in contrast to the Rubinius::Metrics, which provide monotonic
    counters on various aspects of work performed by the program. The
    diagnostics are emitted in summary form to the log file at regular
    intervals, but only if the values have updated since the last time they were
    emitted, so they do not consume much log space.

  • Threads are immediately removed from the internal list of threads when the
    thread function completes. The Thread object preserves all other state as
    long as it is reachable in the object graph. The process memory for the
    Thread is recovered by a finalizer function when the Thread object is no
    longer reachable.

  • System halt is reworked to prevent race conditions on cleaning up resources
    when the process is halting. The halt code is no longer run by any Ruby
    thread executing, but instead is run on the dedicated thread that processes
    signals.

  • Bundler is updated to 1.10.5.

Changelog:

  • Fixed setting log file access permissions. (Brian Shirai)
  • Updated Bundler to 1.10.5. (Brian Shirai)
  • Fixed default CI spec exit status. (Brian Shirai)
  • Smash another racey process spec. (Brian Shirai)
  • Reworked halting the system. (Brian Shirai)
  • Default to non-zero spec process exit status. (Brian Shirai)
  • Removed "BUNDLER WITH" crap from Gemfile.lock (Yorick Peterse)
  • Remove threads from list when they finish executing. (Brian Shirai)
  • Removed left over Bert files. (Brian Shirai)
  • Calculate total memory diagnostics better. (Brian Shirai)
  • Default eden to 30mb. (Brian Shirai)
  • Reworked ObjectMemory diagnostics. (Brian Shirai)
  • Added memory summary to diagnostics. (Brian Shirai)
  • Cleaned cruft replaced by diagnostics. (Brian Shirai)
  • Added collection counts to Baker, Immix diagnostics. (Brian Shirai)
  • Fixed CodeManager diagnostics. (Brian Shirai)
  • Fixed calculating C-API handle diagnostics. (Brian Shirai)
  • Fixed InflatedHeaders diagnostics. (Brian Shirai)
  • Fixed BakerGC diagnostics. (Brian Shirai)
  • Added config for log file access permission. (Brian Shirai)
  • Added Rubinius::Diagnostics. (Brian Shirai)
  • Fix lookup of respond_to_missing? method and add some specs. (Joe Eli McIlvain)
  • Fixed header file for GCC. (Brian Shirai)
  • Fixed include for Linux. (Brian Shirai)
  • Added config items -Xsystem.log.limit, -Xsystem.log.archives. (Brian Shirai)
  • Added log rotation with compression. (Brian Shirai)
  • More Metrics cleanup. (Brian Shirai)
  • Added Marshal#load spec for extended Array. (Brian Shirai)
  • Fixed Marshal#construct_hash to handle edge case of extended Hash (sshao)
  • added edge-case Marshal#load spec for extended Hashes containing user-marshaled objects (sshao)
  • Merge pull request #3452 from eregon/comparable_equal_recursion (Brian Shirai)
  • Added spec for Comparable#<=> with #<=> calling super. (Benoit Daloze)
  • Added spec for Comparable#<=> without #<=> defined. (Benoit Daloze)
  • Changed Comparable#== to use a recursion guard. (Benoit Daloze)
  • Added a couple more machine metrics. (Brian Shirai)
  • A few more JIT metrics. (Brian Shirai)
  • Rewrote Rubinius::Metrics. (Brian Shirai)
  • Removed young generation auto-tuning. (Brian Shirai)
  • Merge pull request #3449 from eregon/symbol_equal (Yorick Peterse)
  • Use BasicObject#equal? for Symbol#==. (Benoit Daloze)
  • Added OnStack for backtrace / Location Array. (Brian Shirai)
  • Fix for GCC's idiotic warn unused-result. (Brian Shirai)
  • Revert "Switched StatsD to counter." (Brian Shirai)
  • Fixed parsing StatsD config . (Brian Shirai)
  • Added Metrics FileEmitter. (Brian Shirai)
  • Fixed parsing config values with '.'. (Brian Shirai)
  • Switched StatsD to counter. (Brian Shirai)
  • Converted Metrics to only counters. (Brian Shirai)
  • Added typedef for InternalThreadList. (Brian Shirai)
  • Removed Thread#critical=. (Brian Shirai)
  • Merge pull request #3448 from nirvdrum/fix_step_float_iterations_size (Yorick Peterse)
  • Fixed return value for Rubinius::Mirror::Range#step_float_iterations_size. (Kevin Menard)
  • More locking fixes. (Brian Shirai)
  • Emit abort, bug, warn content with logger. (Brian Shirai)
  • Added log of exit status. (Brian Shirai)
  • Fixed latent SEGVs from malloc() returning NULL. (Brian Shirai)
  • Fixed Array#flatten. (Brian Shirai)
  • Added Array#flatten specs. (Brian Shirai)