Skip to content

Releases: rubinius/rubinius

Release 3.88

01 Jan 05:49
9f6edeb
Compare
Choose a tag to compare

Version 3.88 (2017-12-31)

  • Improve error message on boot. (Brian Shirai)
  • Fix CodeDB location for --preserve-prefix. (Brian Shirai)
  • Move new CodeDB over bootstrap version. (Brian Shirai)

Release 3.87

31 Dec 06:57
670ac49
Compare
Choose a tag to compare

Version 3.87 (2017-12-30)

  • Added boot time stats. (Brian Shirai)

  • Added argument to ret instruction. (Brian Shirai)
    This sets space to add return value type caching and nil values tagged
    to method ids.

  • Improved CodeDB loading metrics. (Brian Shirai)

  • Updated daedalus. (Brian Shirai)
    This will generate the instruction and interpreter files with debug info.

  • Removed unwind label. (Brian Shirai)
    The unwind label was an attempt to move the unwind state from runtime to
    compile time. Due to nested unwind blocks, this needs more work.

  • Updated libsodium to 1.0.14. (Brian Shirai)

  • Added start of CompiledCode#code_id. (Brian Shirai)
    This id is a cryptographic hash of the CompiledCode object that can be
    used by the CodeDB to uniquely identify this object. The code_id can be
    used to lazily load CompiledCode objects when they are going to be run.

  • Added CompiledCode#stamp_id. (Brian Shirai)

  • Updated rubinius-bridge gem. (Brian Shirai)
    This adds CompiledCode#code_id when compiling under MRI.

  • Updated gems. (Brian Shirai)

  • Switch to code_id for runtime/core. (Brian Shirai)

  • Lazily load core methods from CodeDB. (Brian Shirai)

  • Cleaned JIT gen cruft. (Brian Shirai)

  • Add rubygems and bytecode compiler to CodeDB. (Brian Shirai)

  • Updated AST gem. (Brian Shirai)

  • More work on CodeDB being the general compilation cache. (Brian Shirai)

  • Load files from CodeDB if they exist. (Brian Shirai)

  • Load compiler from CodeDB. (Brian Shirai)

  • Add lambda version of logger functions. (Brian Shirai)
    This enables deferring potentially costly operations because of
    call-by-value that would not be needed if the log level is below the
    level of the logging call.

  • Add logging to CodeDB. (Brian Shirai)

  • Slightly better loading from CodeDB. (Brian Shirai)

  • Start migrating from runtime/ to CodeDB. (Brian Shirai)

  • Build and use CodeDB for library code. (Brian Shirai)

  • Remove library from default $LOAD_PATH. (Brian Shirai)

  • Add missing push_file insn files. (Brian Shirai)

  • Copy non-Ruby files to CodeDB source. (Brian Shirai)
    This is mostly for RubyGems but it's conceivable other library code may
    have supporting files.

  • Improved build C-exts for Ruby library. (Brian Shirai)

  • Don't overwrite CodeDB cache with nothing. (Brian Shirai)

  • Remove Converter path caching cruft. (Brian Shirai)
    The cache mechanism was quite blunt and was not even in use. It can be
    replaced with something that works better, but no reason to have the
    unused code in the repo.

  • Add deprecations for Rubinius::{RUNTIME, CORE}_PATH. (Brian Shirai)

  • Don't segv the process if CodeDB is missing, corrupt. (Brian Shirai)

  • Added archdir, removed thens. (Brian Shirai)

  • Use fittest fixture in Enumerable#each_entry spec (Kenichi Kamiya)

  • Fix Enumerable#each_entry with no yield arguments (Kenichi Kamiya)

  • Remove an outdated tag (Kenichi Kamiya)

  1. This spec was tagged in #3581.
  2. Fixed via 8b7d91b
  • Add specs around Enumerator#dup (Kenichi Kamiya)

  • Fix Enumerator#dup on iterating enumerators (Kenichi Kamiya)

  • Add a spec to ensure Enumerator#peek_values identity (Kenichi Kamiya)

  • Fix Enumerator#peek_values identity for multiple arguments (Kenichi Kamiya)

  • Add specs for Enumerator#initialize with special size (Kenichi Kamiya)

  • Ensure to set integer for Enumerator#size (Kenichi Kamiya)

  • Drop Enumerable:: namespace for Enumerator (Kenichi Kamiya)
    We can drop this since dropped 18x supports

  • Fix Regexp.union behavior on optional left parenthesis (Artyom Khramov)
    Regexp::SourceParcer always treats left parenthesis as a beginning of
    a group. However, the parenthesis can be escaped and this case is
    unhandled.

This change tweaks the Regexp::SourceParcer#create_parts method to
handle this case.

  • A dark journey through the twisted woods of Ruby code loading. (Brian Shirai)
    The Rubinius CodeDB is a caching mechanism for executable resources.
    There are various kinds of Resources, with the following defined
    currently:
  1. Script - a resource described by a path on the command line.
  2. CodeModule - a source code resource loaded by Kernel#load.
  3. Feature - a source code resource loaded by Kernel#require.
  4. Library - a shared library resource loaded by Kernel#require.

Other sorts of resources that are plausible include AST, LLVM IR, shared
libraries, and machine code functions.

The CodeDB cache presumes a source (eg filesystem) for resources. A
resource is the CodeDB can be represented by two attributes (purgeable
or unpurgeable) and three states (cached, uncached, nonexistent).

A resource is a mapping from a "stem" in a "context" (eg $LOAD_PATH,
$LOADED_FEATURES) to the cache or filesystem. The naming of the resource
is a string of the form "#{prefix}#{stem}#{extension}" where both prefix
and extension may be empty strings. The full string is the feature.

The following state machine describes loading a resource that exists in
the cache:

   +---------+   True       +-------------+   False    /------------\
   | loaded? | ---------->  | reload flag | ---------> | Don't load |
   +---------+              +-------------+            \------------/
        |                          |                          ^
        | False                    | True                     |
        |                          |                          |
        +--------------------------+                          |
        |                                                     |
        v                                                     |
  +------------+   False    /------\                          |
  | purgeable? | ---------> | Load |                          |
  +------------+            \------/                          |
        |                      ^                              |
        | True                 |                              |
        |                      |                              |
        v                      |                              |
  +-------------+              |                              |
  | prefix in   |  False       |                              |
  | $LOAD_PATH? | ------------- )-----------------------------+
  +-------------+              |                              |
        |                      |                              |
        | True                 |                              |
        |                      |                              |
        v                      |                              |
  +----------------+           |                              |
  | feature exists | False     |                              |
  | on filesystem? | ---------- )-----------------------------+
  +----------------+           |                              |
        |                      |                              |
        | True                 |                              |
        |                      |                              |
        v                      |                              |
  +---------------+            |                              |
  | cache mtime > | False      |                              |
  | file mtime?   | ----------- )-----------------------------+
  +---------------+            |
        |                      |
        | True                 |
        |                      |
        +----------------------+
  • Fix compiler warning. (Brian Shirai)
  • Fixed CodeDB call. (Brian Shirai)
  • Add start of caching at runtime to CodeDB. (Brian Shirai)
  • Copy core CodeDB to cached CodeDB on boot. (Brian Shirai)
  • Ensure cached CodeDB is current. (Brian Shirai)
  • Write CompiledCode objects to CodeDB. (Brian Shirai)
  • Write updated CodeDB to file system on halt. (Brian Shirai)
  • Don't cache on Travis; it won't be used. (Brian Shirai)
  • Convert CodeDB to a single file. (Brian Shirai)
    The CodeDB cache meets three constraints:
  1. easy to lock for concurrent access;
  2. easy to mmap for low latency;
  3. easy to update the data wihout writing a lot of data.

The single file is composed of the following regions:

  1. header includes the file magic, cache version, signature, and region
    sizes;
  2. list of code IDs to run when initializing the system from this cache;
  3. the code itself in serialized form (data);
  4. the index of code IDs to data offset and length;
  5. the contents mapping files to code IDs of the file execution context.

When the cache is opened, the data region is mmap'd for low latency
access to loading code. The index and contents regions are read into
in-memory map structures.

When the cache is used in a read-write mode, on close, the new data is
appended to the existing data by writing only the new data at the end of
the data region. The index and contents maps are then written to the new
index and contents regions after the data region.

  • Build using CodeDB cache. (Brian Shirai)

  • Removed Bundler from build. (Brian Shirai)

  • Removed remnants of Bundler, RedCard. (Brian Shirai)

  • Temporary gem install daedalus. (Brian Shirai)

  • Prepare for new build system. (Brian Shirai)

  • Moved codegen scripts to build/scripts. (Brian Shirai)

  • Move config.rb to build/config. (Brian Shirai)
    This file will be replaced by a non-Ruby dictionary of configured and
    default values for building Rubinius.

  • Always build in a staging directory. (Brian Shirai)

  • Fix assumptions about file locations during build. (Brian Shirai)

  • Fix missed path. (Brian Shirai)

  • Moved vendor/ to build/libraries. (Brian Shirai)

  • Temporarily pull daedalus in for rewrite. (Brian Shirai)

  • Move all build artifacts to build/artifacts. (Brian Shirai)

  • Start moving generated files out of machine/gen. (Brian Shirai)

  • Fix looping build. (Brian Shirai)

  • Finish movin...

Read more

Release 3.86

27 Sep 17:19
Compare
Choose a tag to compare

Version 3.86 (2017-09-27)

  • Added stubs for remaining instruction specs. (Brian Shirai)
  • Retire insns/interp machine tests. (Brian Shirai)
    Since starting on the new interpreter and instruction set, WebAssembly has
    been officially adopted by all major browser vendors and has become a
    legitimate implementation target.

To facilitate transitioning to multiple VM targets, the instruction set needs
to be specified in a format that is target-independent. The spec/instructions
specs are a reasonable intermediate target, but are also a step towards a
language-neutral textual asm format and assembler that will provide complete
targe independence.

  • Removed old interpreter. (Brian Shirai)
  • fixed zsuper instruction for keyword arguments and arguments placeholder (Andrew Aladjev)
  • improved specs for super arguments (Andrew Aladjev)

Release 3.85

24 Sep 20:26
da2766e
Compare
Choose a tag to compare

Version 3.85 (2017-09-24)

  • Fixed running ensure in new interpreter. (Brian Shirai)
  • Fixed new interpreter for break. (Brian Shirai)
  • Added interpreter spec for return in block. (Brian Shirai)
  • Added logging when creating experimental interpreter. (Brian Shirai)
  • Fixed raise_exc, raise_return insn interpreters. (Brian Shirai)
  • Added configuration switch for experimental interpreter. (Brian Shirai)
  • Reworked handling unwinds in new interpreter. (Brian Shirai)
  • Updated daedalus. (Brian Shirai)
  • Fixed interpreter vm tests. (Brian Shirai)
  • Rename run_exception insn. (Brian Shirai)
  • Updated rubinius-compiler gem. (Brian Shirai)
  • Reworked run_exception instruction as unwind. (Brian Shirai)
  • Add unwind check to bytecode verifier. (Brian Shirai)
  • Bumped compiler and AST versions. (Brian Shirai)
  • Fixes for unwind instruction. (Brian Shirai)
  • Added basic UnwindSite caching. (Brian Shirai)
  • Use UnwindSite for unwinding the call stack. (Brian Shirai)
  • Set up CallFrame for instruction tests. (Brian Shirai)
  • Updated compiler version. (Brian Shirai)
  • Fixed more new interpreter insns for unwind. (Brian Shirai)
  • Updated daedalus. (Brian Shirai)
  • Fixed handling return value in new interpreter. (Brian Shirai)
  • Fixed setting call flags in new interpreter. (Brian Shirai)
  • Fixed storing literals in new interpreter. (Brian Shirai)
  • Fixed unwind in new interpreter. (Brian Shirai)
  • Fixed break in new interpreter. (Brian Shirai)
  • Temporary fix for IP to line in new interpreter. (Brian Shirai)
  • Enable experimental interpreter for CI. (Brian Shirai)
  • Updated gems_list.txt. (Brian Shirai)

Release 3.84

02 Aug 19:23
3970f17
Compare
Choose a tag to compare

Version 3.84 (2017-08-02)

  • Added start of instruction specs. (Brian Shirai)
  • Use new interpreter for instruction specs. (Brian Shirai)
  • Add example branch instruction spec. (Brian Shirai)
  • Added basic run_exception insn spec. (Brian Shirai)
  • Added exception rescue spec. (Brian Shirai)
  • Added rb_hash_fetch C-API. Closes #3753. (Brian Shirai)

Release 3.83

27 Jul 00:00
Compare
Choose a tag to compare

Version 3.83 (2017-07-26)

  • Fix a typo in the GitHub issue template (#3750) (Jos Ahrens)
    Corrects a typo 'issued' -> 'issue' in 8.c

  • Add Random::DEFAULT as an instance of Random (#3752) (Lin Jen-Shin (godfat))
    This is basically for MRI compatibility. This could be verified by:

    ruby -ve 'p ObjectSpace.each_object(Random).to_a == [Random::DEFAULT]'
    ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
    true

Closes #3296

Release 3.82

28 Jun 04:49
1a98abf
Compare
Choose a tag to compare

Version 3.82 (2017-06-27)

  • For #3747 (#3748) (NightFeather)
    when stop is nil or omitted,
    should be set to infinity_value,
    and sign would be same with step.

I don't know a better way the cover this in spec though

  • Remove unneeded specs. (Brian Shirai)
    Specs should positively test values or state changes. There is an infinite
    number of ways code could not raise an error, so asserting a value created or
    state changed is the preferred way to write specs.

  • Attempt to work around broken Travis image. (Brian Shirai)
    The Travis Trusty image update fails to set STDOUT as a TTY.

  • Revert "Attempt to work around broken Travis image." (Brian Shirai)
    This reverts commit 96887de.

  • Guard TTY spec. (Brian Shirai)
    Travis CI sporadically breaks their images such that STDOUT isn't a TTY.

Release 3.81

10 Jun 05:32
2fb232d
Compare
Choose a tag to compare

Version 3.81 (2017-06-09)

  • Extract Array#{inspect, to_s} object inspect. (Brian Shirai)
  • Fixed Hash#{inspect, to_s}. (Brian Shirai)

Release 3.80

09 Jun 21:51
e3ae5d5
Compare
Choose a tag to compare

Version 3.80 (2017-06-09)

  • Fixed Array#{inspect, to_s}. Fixes #3746. (Brian Shirai)

Release 3.79

01 Jun 21:46
Compare
Choose a tag to compare

Version 3.79 (2017-06-01)

  • Kernel: allow caller{,_locations} to accept a Range (#3745) (Tamir Duberstein)
    Closes #3744.