Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on May 24, 2012
  1. @ryoqun
Commits on Jan 8, 2012
  1. @brixen
  2. @brixen

    Added support for BEGIN.

    brixen committed
Commits on Jun 15, 2011
  1. @brixen

    Fixed 1.9 parser GC issue.

    brixen committed
    References creating during parsing were not in memory that the MRI GC
    could not see. If the process ran long enough, the references would
    get collected and the process would crash.
    In rbx, the C-API handles prevented the objects from getting collected
    because the method that called into C was still on the stack, and the
    handles are associated with that native method frame.
    The solution is to keep a list of references created during parsing and
    root that list in the Melbourne instance used to process the C-struct
    parse tree into an AST of Ruby objects.
Commits on Jun 3, 2011
  1. More cleanup for separate parsers.

    Brian Ford committed
Commits on May 28, 2011
  1. Enable using different compilers to build kernel.

    Brian Ford committed
Commits on May 27, 2011
  1. Allow use of 1.9 parser. WARNINGS BELOW.

    Brian Ford committed
    I'm probably going to regret this.
    The 1.9 parser+compiler is not ready for general use. It cannot
    compile the kernel. It may segfault or fire missiles. Basically,
    do not use it. You have been warned. :)
Commits on Apr 4, 2011
  1. More 1.9 syntax porting (still not done).

    Brian Ford committed
Commits on Feb 14, 2011
  1. @brixen
  2. @brixen
Commits on Nov 22, 2010
  1. Silence some warnings during build.

    Brian Ford committed
Commits on Oct 19, 2010
  1. Use 1.9 parser for building.

    Brian Ford committed
Commits on Oct 13, 2010
  1. Structure for 1.8 and 1.9 parsers to coexist.

    Brian Ford committed
Commits on Jul 26, 2010
  1. Track all syntax errors and raise the first one

    Evan Phoenix committed
Commits on Apr 19, 2010
  1. Interim fix for DATA. Closes #245.

    Brian Ford committed
Commits on Mar 31, 2010
  1. Silence MRI warnings about compiler ivars.

    Brian Ford committed
Commits on Mar 16, 2010
  1. Reworked handling DATA.

    Brian Ford committed
    * If at all possible, features should not modify the parser. Doing so
      only introduces potential incompatibilities, bugs, and complicates
    * The __END__ element is arguably part of the AST. It could be considered
      a child of the toplevel execution context, but it must be handled
      before everything else in that context because code there may rely on
      DATA being set. Wrapping the toplevel node in the EndData node captures
      this better that making EndData a child. Consider a script 'p DATA'.
      The toplevel here is not a Block node but a single SendWithArguments.
    * It is possible to support __END__ with no parser changes at all because
      parsing is halted by the __END__ marker.
    * The use case for __END__ is quite limited and requiring the .rb file
      to be available is not unreasonable given the use case (i.e. a single
      script that carries some data with it, not a Ruby source file that
      is part of a larger application).
    * Providing DATA as an IO on the .rb source file ensures that code should
      behave the same on rbx and MRI.
Commits on Mar 5, 2010
  1. Fix being able to specify a line of 1 or less to eval

    Evan Phoenix committed
Commits on Mar 1, 2010
  1. Added String#to_sexp and File.to_sexp.

    Brian Ford committed
Commits on Dec 4, 2009
  1. Changed require paths for compiler to avoid RUBYOPT complications.

    Brian Ford committed
    The precompile scheme for installing Rubinius would use -Ilib with MRI. If the
    user had RUBYOPT=rubygems set, MRI would require rubygems which would end up
    trying to load the Rubinius lib/etc.rb.
    This approach essentially hardcodes the paths relative to the actual files.
    This is desirable given that the compiler needs to be loaded in various
    Ruby implementations (probably MRI but not necessarily so) and we should
    ensure that only these particulay files are loaded.
Commits on Nov 16, 2009
  1. Add magic comments and Array Zen

    Evan Phoenix committed
    The parser now communicates any magic comments it sees to the compiler.
    Currently, the compiler enables any transform available using the text
    of the comment as the transform name.
    The current transform using this is Array Zen. It's a list comprehension
    transform. Currently, limited, but should be expanded to handle a number
    of more forms.
Commits on Nov 8, 2009
  1. Fixed emitting line numbers.

    Brian Ford committed
    This prevents nil in CompiledMethod lines tuple and ensures
    that the first line for a method corresponds to the 'def x' line.
Commits on Nov 6, 2009
  1. Don't try to compile non-existent files.

    Brian Ford committed
  2. @dwaite

    Stylistic improvement

    dwaite committed
Commits on Nov 5, 2009
  1. @dwaite
Commits on Nov 4, 2009
  1. Build melbourne for MRI.

    Brian Ford committed
  2. Put melbourne ext for rbx in a subdir.

    Brian Ford committed
Commits on Sep 22, 2009
Commits on Sep 21, 2009
  1. Added AST transforms.

    Brian Ford committed
    The transforms were previously implemented as compiler plugins.
    Here, the functionality is split in two parts: 1) recognizing
    a form that will be transformed and returning a node that will
    emit different bytecode, 2) emitting the bytecode.
    The recognition step is essentially stateless and is implemented
    as class methods on each transform class. For now, only the CALL
    parse tree node is processed for possible transforms.
    The transform classes register themselves under a category. For
    now, the categories are :default and :kernel. The catergory of
    transforms to be applied is selected for each compiler instance.
    Instead of applying all the transforms in a category, it is also
    possible to apply only a selected set of transforms.
Commits on Sep 2, 2009
  1. Migrated AST nodes out of melbourne.

    Brian Ford committed
Commits on Jul 20, 2009
  1. Interface changes for melbourne processor.

    Brian Ford committed
  2. Added Melbourne parser extension.

    Brian Ford committed
    The basic machinery is in place but the processor is all stubs. Both
    String#to_ast and File.to_ast "work". The next steps are:
    1. Get a harness in place to run the specs
    2. Start adding functionality to the processor methods
    3. Fix the arguments passed to processor methods from the visitor
    4. Augment the compiler Node classes with additional methods as needed
    5. Get all specs passing
    6. Remove the dependencies on libmpa, libmquard, libcchash
Something went wrong with that request. Please try again.