[MacRuby-devel] experimental branch: status update

Laurent Sansonetti lsansonetti at apple.com
Mon Apr 6 01:47:24 PDT 2009


Hi guys,

I figured out that it would be a good idea to give periodical status  
updates on what's happening in the experimental branch, so here is the  
first one :)

- The compiler is now able (AFAIK) to compile all the language specs,  
so I guess it's now roughly complete.

- Lots of progresses on the RubySpecs - Eloy might want to comment  
here maybe :)

- A third of the core/io specs are now passing too. Good progress on  
the IO front.

- The `for' expression has been fixed (it was too unstable).

- Lots of fixes in eval & dynamic variables. A preliminary version of  
Binding was implemented. The new dvar implementation is more or less  
twice faster than the previous one.

- Better exception handling of top level exceptions.

- Calling 'return' from a block has been implemented (but not  
optimized, yet).

- Fixed the 'require of the death' bug (basically, requiring a file  
that requires another file that require the first file again).

- Implemented implicit enumeratorization (Example: [1,2,3].each).

- Ported old code to the new rb_objc_block_call() syntax (which is  
faster).

- Implemented catch/throw.

- Thanks to everything above, IRB is now running!

$ ./miniruby -I./lib bin/irb
irb: warn: can't alias exit from irb_exit.
irb(main):001:0> 1+2
=> 3
irb(main):002:0> x=40
=> 40
irb(main):003:0> x+2
=> 42
irb(main):004:0> def foo; 42; end
=> nil
irb(main):005:0> foo
=> 42
irb(main):006:0>

(With a few caveats: there are _lots_ of bugs around.)

Starting IRB takes about 1.5 seconds on my machine, this is way to  
slow and we need to optimize this. So I will work on this. The  
compiler & JIT strategy have not been optimized yet.

Next step will be to implement the BridgeSupport plumbing then we can  
bootstrap Cocoa again!

Laurent


More information about the MacRuby-devel mailing list