Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Aug 20, 2009
  1. @seydar
  2. @seydar
  3. @seydar

    Add support for literate ruby files like GHC

    seydar authored
    GHC, of Haskell fame, supports .lhs files that either use code marked with
    'bird feet' (> puts 5) or LaTeX style (\begin{code}...\end{code}). These files
    can be either run directly or required, but if run directly, the .lrb ending
    is mandatory, and if required, .rb and .rbc files have higher precedence
    over .lrb files. See
    for minformation. N.B. not all of Haskell's literate programming features are
Commits on Aug 19, 2009
  1. Add todo

    Evan Phoenix authored
  2. Float prims, Inline interface cleanup

    Evan Phoenix authored
    * Inlining code doesn't manipulate the operand stack, it requires
      the caller of the inliner to properly make user of the inliners
      exported value.
  3. Updated todo

    Evan Phoenix authored
  4. whitespace fixes

    Evan Phoenix authored
Commits on Aug 17, 2009
  1. @brixen

    Import ensure bytecode.

    brixen authored
  2. @brixen

    Added bytecode for rescue.

    brixen authored
Commits on Aug 12, 2009
  1. @brixen

    Fixed svalue, splat bytecode.

    brixen authored
    Some compiler specs fail, but they are broken and need to be
    fixed. As a consequence of wrapping splat nodes in array nodes
    in the rewriter, literals of the form [*[something]] were
    causing the bytecode sequence to be emitted:
      make_array 0     # yup, create an empty array
      push something   # ie push each elt of the literal array
      make_array size  # size of the inner literal array
      send :+          # put all the inner elts in the empty array
    This is totally unnecessary since
      [] + [something] == [something]
    The specs will be updated once the compiler changes are made
  2. @brixen
  3. @brixen
Commits on Aug 11, 2009
  1. @brixen
  2. @brixen

    Simplistic ascii node grapher.

    brixen authored
  3. @brixen

    Import while/until bytecode.

    brixen authored
Commits on Aug 10, 2009
  1. @brixen

    Added Sends to AST.

    brixen authored
  2. @brixen
  3. @brixen
  4. @brixen
  5. @brixen

    Misc cleanups.

    brixen authored
  6. Work on my todo list

    Evan Phoenix authored
  7. Use a simple while loop for Range#each

    Evan Phoenix authored
Commits on Aug 7, 2009
  1. @brixen
  2. @brixen
  3. @brixen
  4. @brixen

    Reworked nodes related to defining classes.

    brixen authored
    ClassWrapper will probably be renamed to Class once all specs are
    passing an the old compiler is replaced. The idea is to have the
    AST represent the actual structure (eg using ClassName) rather
    than having aspects of the AST structure represented in conditional
    Some logic is necessary to distinguish different structures at the
    top levels, but that logic is easy to follow because it results in
    concrete forms (at a lexical level) rather than resulting in different
    forms of output from running the code. This also enables better
    processing phases. For example, an EmptyClass can be processed by
    either form recognition (if node.kind_of? EmptyClass) or by adding
    methods to it rather that trying to inject logic into places that
    already do something like:
      if @body.empty?
        handle empty body
  5. @brixen
  6. @cezarsa
  7. @cezarsa
  8. @cezarsa
Commits on Aug 6, 2009
  1. Disable using restart_interp based on usage

    Evan Phoenix authored
  2. Add fast exit for failing guards at the beginning of methods

    Evan Phoenix authored
    * Using restart rather than continue eliminates the need for the
      CallFrame to be created by the JIT when it's not needed.
  3. Adjust the call_count of inlined methods

    Evan Phoenix authored
  4. @brixen
Commits on Aug 4, 2009
  1. @brixen

    Resurrect ConcatArgs. All array compiler specs pass.

    brixen authored
    Like a nauseatingly sweet cake, the compiler currently has
    3 thick layers of obfuscating logic: 1) the sexp rewriting,
    2) the sexp consumption and args methods, 3) the bytecode
    generation. The compiler is a bad marriage between a sexp
    processor and an object-oriented compiler. All this is built
    on the often confusing foundation of MRI's parse tree.
    I mean, seriously, rewrite argscat into splats that are wrapped
    in arrays so other nodes can take them apart again? Seriously?
    So I am the divorce judge and this union is being destroyed.
    Sorry, sexps, you get nothing. Dismissed. Goodbye. Objects,
    you get stripped of your twisty internal logic, to the extent
    reasonable. How? By creating more classes as appropriate that
    each do their own simple thing.
    Again, this is a WIP, but the general principle is that if a
    thing needs a particular form, it should be a particular thing,
    not some murky shape-shifter.
Something went wrong with that request. Please try again.