I’ve spent most of the past month or so working on a rewrite of the internals of RubyCLR. I got the last major set of tests to pass today, and I’m almost at feature parity with the Drop 4 release. So I finally decided to check in new bits into the Subversion repository.

Here’s a brief summary of what’s changed:

  1. Better coverage in trapping CLR exceptions and marshaling them to Ruby.
  2. Better error reporting – you will see both a CLR and a Ruby stack trace if your application crashes.
  3. Better performance, the unit tests run about 60% faster than in Drop 4.
  4. Cleaner organization of code in the C++ layer. I would say that 90% of the code was touched during this rewrite (which is why it took so long).
  5. Vastly improved support for generics and nested types.
  6. Independent set of unit tests for new reflection library.
  7. Better separation of layers. Things are very strict in this release and it’s much more obvious which layer you’re coding in.

Most of the samples work, including the prototype irb in Avalon. I’ll fix the few remaining bugs on my list and will probably release a Drop 5 tomorrow in anticipation of Beta 1 (which will include docs!) in time for RubyConf.