[Ironruby-core] IronRuby r111 is out

John Lam (IRONRUBY) jflam at microsoft.com
Tue May 20 17:17:30 EDT 2008

This is a really big change that fixes most of the known issues that are blocking us from running Rails. We're not there yet, but we're getting closer.

This change incorporates the latest Ruby specs, which you can test drive via "rake mspec - - fail" for a baseline test. Note that the number of specs passing falls significantly because of some changes to the way some of the specs are run. This is a low-pri issue for us now since we're only fixing things that block us from running Rails for the time being.

Once again, if you're reporting bugs, please let us know in the bug report *where* you found the bug so we can prioritize our investigations appropriately.


- Fixes bug #20139: MemberAssignmentExpression computes lhs expression twice
- It's still not precise (arguments to ArrayItemAccess are evaluated twice now), will fix that later.
- Fixes bug #20140: MemberAssignmentExpression not special cased for &&= and ||= - - Fixes bug #20131: require infinite loop
- Fixed bug #19901: Class variable with ||=

Ignores differences of Ruby Mutex and .NET Monitor for now:
- Ruby Mutex.lock in not reentrant by the same thread
- it could be locked/unlocked from non-owning thread (.NET Monitor throws an exception in that case)

Also IronRuby runtime itself is not hardened against race conditions yet.

Comments out extension type on RubyModule - CLR interop needs to be better designed first.
Merges type to interface/module/class mapping dictionaries into a single one. We now remember the mapping for non-interface modules as well to enable reopening of library defined modules.
Changes library initializer helpers to allow reopening.

- Fixes bug #20199: Getting metaclass for nil causes a .NET exception
- Fixes bug #20137: gsub $n bug
- Fixes bug #19902: Regex global matching vars are not nil when they don't match
- Fixes bug #20222: super call in initialize method of a module
- Fixes bug #20011: Can't subclass module
- Fixed Thread.new so that it won't crash when no block is present

- Also implements Module#initialize, Module#initialize_copy, IO#sync.
- Using new DLR AST factories: Ast.Property, Ast.Field, Ast.NewArrayInit.

Applying patches:
#19991 - adding implementation of Interrupt and SignalException exceptions
#20028 - adding default implementation of Kernel#=~
#20173 - adding default stub implementation of SHA1
#20174 - defining string / integer constants in OpenSSL
#20175 - implementation of Time#gmt_offset

- Added the Ruby specs suite. You can run a baseline test against these via ruby mspec - - fail. The old rubinius specs still run via rake spec - - fail, but they are deprecated and will be removed in a future release. It is highly likely that we will redirect rake spec to rake mspec at that time.

- Fixes for the very basic Dir.glob
- Implemented IO::sync, Struct::Tms, Process.times
- Fixed Thread.new so that it won't crash when no block is present, or when the block throws an exception
- Skip threading spec tests that don't work

- Fixes to mspec to remove extraneous dumps during rake mspec - - fail
- Adds some more baseline excludes that were missing in mspec
- Fixes Yaml test harness to reflect changes in namespace for the YAML lib
- Adds configuration to Rakefile to push out yaml parser from merlin external and yaml tests
- Adds a test_yaml task to Rakefile
- Updated IronRuby.sln external .sln file to reflect new YAML libs


More information about the Ironruby-core mailing list