IronRuby r111 is out

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.

Thanks!
-John

  • 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

Thanks,
-John

I notice there’s one line of C# 3.0 syntax in the YAML implementation
(yamlMultiAdapter).

I’m going to have to get a new version of Visual Studio.

Cheers, Wayne.

We can fix that. Can you point me to the file & line #?

Thanks,
-John

Yaml\Engine\BaseConstructor.cs:121

It’s about time I upgraded anyway, but I just wanted to check if this
was a conscious decision to introduce C# 3.0 features into the code
base.

Cheers, Wayne.

Btw, just curious, why not moving to C# 3.0?

Oleg

With just a few more relatively minor patches, we can now successfully
run our first trivial use case:

gem --help

A small milestone :slight_smile:

Cheers, Wayne.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs