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.