The major new feature in this version is that I introduced a new interface (ikvm.internal.LibraryVMInterface) to replace all late-bound library operations in the runtime. In some cases this is a performance optimization, but I mainly did it to get better compile time checking.
In addition to that a number of small steps on the long road to 1.0:
- Merged with GNU Classpath cvs.
- Made the Field/Method/Constructor constructors package private. These objects are constructed from java.lang.VMClass but they live in java.lang.reflect, so they needed to be public, but I realised that since package private turns into assembly accessibility, I could use some map.xml glue to make factory methods in java.lang.VMClass that access the package private constructors in the java.lang.reflect package.
- Fixed a whole bunch of DatagramSocket bugs.
- Increased my Mauve test set enormously. I now run almost all Mauve tests. Current results: 238 of 3600422 tests failed.
- Fixed FileChannelImpl.truncate to only truncate (not grow) the file.
- Fixed several small java.io.File compatibility problems.
- Fixed exception cleaning code to not skip package private methods.
- Fixed a regression in ikvmc that caused it not to emit the names of method parameters.
- Fixed regression that caused an exception when processing a constant boolean field.
- Introduced ikvm.internal.LibraryVMInterface to replace all late binding from the runtime to the class library.
- Added public API IKVM.Runtime.Util.MapException() to map exceptions from non-Java code.
- Added ldobj instruction to remapper.cs.
- Added a tools sub-project (currently only contains one simple app to generate an assembly reference for ilasm).
- Implemented java.nio.channels.Channels.new[In|Out]putStream native methods.
- Added stack trace cleaning to remove java.lang.LibraryVMInterfaceImpl methods.
- Fixed some uncommon cross language Finalize method issues (e.g. when a Java class inherits from a C# class that inherits from Java class).
- Optimized empty finalize methods. They are no longer registered as real Finalize methods.
- Fixed reflection on .NET types to properly handle Java ghost interfaces.
- Added a jvm sub-project to build JVM.DLL (Windows only).
- Removed stub ikvm/classpath/gnu/java/net/protocol/ftp/Handler.java now that GNU Classpath has an ftp implementation.
New snapshots: just the binaries and source plus binaries.