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

    Add support for literate ruby files like GHC

    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 http://www.haskell.org/haskellwiki/Literate_programming
    for minformation. N.B. not all of Haskell's literate programming features are
    implemented.
    seydar committed Aug 20, 2009
Commits on Aug 19, 2009
  1. Add todo

    Evan Phoenix committed Aug 19, 2009
  2. Float prims, Inline interface cleanup

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

    Evan Phoenix committed Aug 10, 2009
  4. whitespace fixes

    Evan Phoenix committed Aug 10, 2009
Commits on Aug 17, 2009
  1. Import ensure bytecode.

    Brian Ford committed Aug 17, 2009
  2. Added bytecode for rescue.

    Brian Ford committed Aug 17, 2009
Commits on Aug 12, 2009
  1. Fixed svalue, splat bytecode.

    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
    active.
    Brian Ford committed Aug 12, 2009
  2. Improved argument mapping for defines.

    Brian Ford committed Aug 11, 2009
Commits on Aug 11, 2009
  1. Some fixes for defn, defs, case.

    Brian Ford committed Aug 10, 2009
  2. Simplistic ascii node grapher.

    Brian Ford committed Aug 10, 2009
  3. Import while/until bytecode.

    Brian Ford committed Aug 10, 2009
Commits on Aug 10, 2009
  1. Added Sends to AST.

    Brian Ford committed Aug 10, 2009
  2. Simplify If bytecode generation.

    Brian Ford committed Aug 9, 2009
  3. Imported or stubbed all #bytecode methods.

    Brian Ford committed Aug 8, 2009
  4. Removed use of #args while generating the AST.

    Brian Ford committed Aug 8, 2009
  5. Misc cleanups.

    Brian Ford committed Aug 8, 2009
  6. Work on my todo list

    Evan Phoenix committed Aug 10, 2009
  7. Use a simple while loop for Range#each

    Evan Phoenix committed Aug 6, 2009
Commits on Aug 7, 2009
  1. Fixed module opening toplevel constant.

    Brian Ford committed Aug 7, 2009
  2. Reworked nodes for defining modules.

    Brian Ford committed Aug 7, 2009
  3. Spec for module with local var in name.

    Brian Ford committed Aug 7, 2009
  4. Reworked nodes related to defining classes.

    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
    logic.
    
    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
      end
    Brian Ford committed Aug 6, 2009
  5. More lasgn specs involving classes.

    Brian Ford committed Aug 6, 2009
  6. @cezarsa
  7. @cezarsa
  8. @cezarsa
Commits on Aug 6, 2009
  1. Disable using restart_interp based on usage

    Evan Phoenix committed Aug 6, 2009
  2. Add fast exit for failing guards at the beginning of methods

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

    Evan Phoenix committed Aug 6, 2009
  4. More work on defn and args nodes.

    Brian Ford committed Aug 5, 2009
Commits on Aug 4, 2009
  1. Resurrect ConcatArgs. All array compiler specs pass.

    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.
    Brian Ford committed Aug 4, 2009