Major changes from v0.2.5 to v0.2.6
dna:
* Command line parameters are now passed to the .NET executable, in the args[] array to Main().
* When calling a method on a null reference, a NullReferenceException is now thrown,
rather than crashing. However - note that internally thrown exceptions don't act quite
as expected, as their constructors are not yet called.
------------------------------------------------------------------------------
Major changes from v0.2.4 to v0.2.5
All Visual Studio solutions have been upgraded to VS2008.
dna:
* Fixed bug with static fields in generic types. The memory location for the field
was not being initialised properly.
* Fixed bug with overridding virtual methods in generic types. Virtual method table
indexes were being generated for partially defined generic types, which shouldn't
be done as virtual method tables are not available for these types.
* Fixed bug where generic method type arguments were not propogated through the type
system correctly. (In fact, at all).
* Fixed bug in finding generic methods in another assembly. The generic method
signature was not being checked correctly.
* Fixed bug in MetaData_LoadTables() where the blob index size was being read incorrecty.
Thanks to Patrick Levesque for report and fix.
* Fixed bug in casting to nullable types.
* Fixed bug in using typeof() on generic arguments.
* Fixed bug in Array.GetValue() and Array.SetValue() when using nullable types.
* Improved error reporting for missing methods. Now shows the correct containing type.
* Improved conversion operations. All conversions are now supported, with more efficient
runtime operation. However, checked conversions run as unchecked conversions.
* Implemented all the unsigned branch instructions, long versions.
corlib:
* Added IComparer[T], IComparer and Comparer.
* Added IEqualityComparer[T], IEqualityComparer and EqualityComparer.
* Dictionary[TKey, TValue], List[T] and ArrayList re-implemented and improved.
* Fixed missing functionality in Nullable[T].Equals() method.
* Implemented Enum.GetNames().
System.Core:
* Added System.Core.dll, containing:
- Most LINQ to Objects extension methods.
- Func[...] and Action[...] delegates.
------------------------------------------------------------------------------
Major changes from v0.2.3 to v0.2.4
All parts of this project are now licensed under the MIT license.
------------------------------------------------------------------------------
Major changes from v0.2.2 to v0.2.3
dna:
* Improved time resolution of DateTime.UtcNow
* Added code to selectively generate combined-opcode versions often-used methods.
It is disabled by default, but may be enabled in config.h
It currently has the following major problems:
- It doesn't appear to actually speed up execution very much (~5% in testing).
- It leaks some memory when 'de-optimizing' methods that are no longer
frequently used. This won't be too difficult to fix.
* Added support for static fields containing value-types.
* Added support for casting from Int64 to Double.
corlib:
* DateTimeFormatInfo implemented
* Calendar and GregorianCalendar very basically implemented. Enough that DateTime
formatting now works.
* DateTime.ToString() now works properly (except for timezones).
* More of Math class implemented.
* Implemented IComparable, IComparable[T] and IEquatable[T] on Int16, Int32,
Int64, Single, Double, UInt16 ,UInt32, UInt64, Byte, SByte and Boolean.
System.Drawing:
* Region is very basically implemented. Only infinite and rectangular regions
are supported.
* Added clipping support to Graphics.
* Graphics.MeasureString() has some overloads implemented.
* Graphics.DrawEllipse() and FillEllipse() with int and rect arguments implemented.
* Fixed bug with line drawing.
libIGraph:
* Implemented native parts of region.
* Implemented native clipping support for all Graphics operations.
* Implemented native parts of MeasureString().
* Implemented ellipse drawing and filling.
System:
* Stack[T] class added.
------------------------------------------------------------------------------
Major changes from v0.2.1 to v0.2.2
dna:
* Added native code for DNS class
* Added native code for System.Threading.Interlocked class
corlib:
* Added all System.Threading.Interlocked methods that operate on Int32 values.
Enumerators defined using yield return therefore now work - they need
CompareExchange().
* Added delegates: Action[T], Predicate[T]
* Added TimeSpan - complete except for Parse() and TryParse()
* Added DateTime - DateTime.Now is not implemented, DateTime.UtcNow is.
Add simple operations are implemented, but not more complex/obscure stuff,
e.g. ToFileTime(). ToString() is only crudely implemented, not taking
any notice of formatting specified, or culture. It is always shown in
UK format (dd/mm/yyyy hh:mm:ss).
System:
* Added the beginnings of the Dns class. It is now possible to get the IPv4
address for a host-name.
------------------------------------------------------------------------------
Major changes from v0.2.0 to v0.2.1
dna:
* Fixed bug in constrained virtual calls.
* Fixed bug with how Single and Double types were handled.
* Added array functionality for floating-point types.
* Improved how internal calls are looked up.
* Updated the VS2005 build config for release, to place the executable
in the correct place.
* Implemented Nullable types.
* Implemented basic native socket functionality.
* A little more reflection implemented.
* Misc other bug-fixes and improvements.
System:
* Implemented Nullable and Nullable[T] classes.
* Implemented the Socket class (and friends). Only the very basic operations
are currently implemented. A socket can be created, used to listen or connect
and can send and receive data. Only IPv4 is supported and at the moment only
TCP is support (UDP to be added later). More will be implemented later.
corlib:
* A little more reflection implemented.
------------------------------------------------------------------------------
Major changes from v0.1 to v0.2.0
The Interpreter:
* The main interpreter loop has changed from a 'loop with switch'
to use direct threading (see http://en.wikipedia.org/wiki/Threaded_code
for details). This gives a performance advantage, although not on Windows
as having __asm code in a function appears to stop all other optimizations.
The assembler code is only required on non-GNU compilers as GNU provides
the computed goto statement.
* A dynamic code generator (strictly, just a combiner) has been
implemented, which dynamically generates multi-opcode instructions.
However, it is disabled by default because it currently generates
dynamic code for all JITted methods, which uses large amounts of
memory, and is not always faster (due to code caching). An algorithm
to selectively re-JIT frequently-used methods is being worked on.
* Split out the configuration into a seperate Config.h file.
* Misc other bug-fixes and improvements.
System.Drawing:
* Implmented LinearGradiantBrush
* Fixed bug in HatchBrush that caused all hatches to be drawn 90
degrees rotated.