tfpt review “/shelveset:ClrPrimitives2;REDMOND\tomat”
Python, DLR outer ring changes:
Hoists FloorDivision implementation to MathUtils - Ruby uses the very
A couple of breaking changes:
Removes ClrString constant. CLR string should be referred to
Removes IronRuby library. "require 'IronRuby'" is no longer
needed, IronRuby module is now a built-in module.
Implements integer/float operations for all CLR primitive numeric types
(byte, sbyte, short, ushort, uint, long, ulong, float).
Those integer types that fit in 32-bit signed integer (Fixnum) are
widened to Fixnum for all operations. The other integer types are
widened to BigInteger. Float is converted to double.
The operations on these types don’t narrow their results even if the
values fit. For example, (System::Byte.new(1) + 1).class == Fixnum, not
System::Byte. This might not be optimal for some scenarios. If we find
it important we’ll fix this in future.
The implementation takes the operations from FixnumOps, BignumOps and
FloatOps and moves them to new modules IronRuby::Clr::Integer,
IronRuby::Clr::BigInteger and IronRuby::Clr::Float respectively. These
are mixed back into the numeric types. Some methods need to be
specialized for each types, so we generated C# code for them. Ruby 1.9
script ClrInteger.Generator.rb produces ClrInteger.Generated.cs.
Implements System::Char and System::String methods so that they behave
like an immutable UTF-8 encoded string (of size 1 character in the case
of System::Char). Many methods in MutableStringOps can share
implementation with CLR string. There is still a lot of work to be done
here, especially to support encodings. So for now, to make CLR strings
work like Ruby frozen strings to a large extent, I’ve implemented
method-missing dispatch that forwards to a MutableString.
Adds IronRuby::Clr::MultiDimensionalArray that is mixed into all
multi-dimensional arrays. This mixin needs to implement those IList
methods that only work with vectors.
Enables checked arithmetic operations in debug builds. Fixes
underflow/overflow bugs in integer operations and adds tests for them.
Adds C# code generator script - used for generating ClrInteger classes.
Groups all StringFormatter sites into a single site local storage class.
Fixes [#20265] library classes nested in an extension class have wrong