|
|
RoadmapFrom $1Table of contents
Here are the features IronRuby is tracking on its way to declaring "1.0". “P1” features are needed in 1.0, “P2” features are still very important, but subject to change, and “P3” features are nice to have, but IronRuby can ship without them. IronRuby.dllCore[P1] Perf
[P2] CLS visibility: See CLS methods/properties on Ruby objects after doing require 'mscorlib' [P3] Scope optimizations: This work should merge RubyScope and RFC, disable eval aliasing -> no dictionaries. This is mainly for throughput optimization; makes IronRuby look better on micro-benchmarks, but it may not affect most scenarios. Need to investigate.
[P?] Language features - BEGIN/END .NET Interop[P1] Support well-known .NET interfaces (both ways are needed, but Ruby calling C# is more baked): Data Binding, IEnumerable <-> Enumerable mixin, IComparable <-> each, etc (see .NET Test Plan’s “Special Concepts”). [P1] IDynamicObject support - Conversions to .NET types, Operator support [P1] to_s -> ToString on non-library CLR classes (including enums), GetHashCode (CLR calling Ruby is simple, both directions should be supported) [P1] Accessing protected methods, accessing public overrides on internal types
[P1] Operators - op_Addition maps to + (Ruby calling CLR should use DLR + operator which maps to op_Addition), enums [P2] Type Builder: Move it to the DLR, but Ruby needs a base implementation. If this is shared among languages, this can give IronRuby compilation support. [P3] COM: for Win32OLE compatibility [P3] Explicit Interface implementation [P3] Non-default indexers [P3] Overriding generic Methods.
[P3] Access to internal and private members: This is useful for testing since InternalsVisibleToAttribute cannot be used to give access to Ruby scripts. It can be a command line switch like -X:PrivateBinding IronRuby.Libraries.dllLibraries are more straight-forward to implement than the core because of RubySpec, and the library support will be scenario-focused (ie. what libraries are needed to run rails, merb, gem, rake, etc). Here are the libraries which are known to need work: MutableString basic operations - $KCODE and encodings are TODO IO, files, FileTest, streams, sockets Cryptography: OpenSSL, Digest String: formatting, unpack/pack Encodings: iconv, String methods Signals: Ctlr+C Process ARGF: InputProvider Time Builtins freezing (array, hash)
Tags:
|