The GNU Classpath 0.94 release is due soon (hopefully), but in the mean time here's a new snapshot.
- Integrated current GNU Classpath cvs version.
- Fixed VMStackWalker.firstNonNullClassLoader() to handle reflection scenarios (this fixes a problem with serialization where the wrong class loader would be used when deserializing a class that has a custom readObject method.)
- Added VMFile.setReadable/setWritable/setExecutable/canExecute. Although only setWritable does anything halfway usable (all these methods behave like the JDK on Windows, so only the file's ReadOnly attribute is manipulated).
- Changed the build process to build IKVM.Runtime.dll in two passes, the first pass is used to compile IKVM.GNU.Classpath.dll against and then in the second pass IKVM.Runtime.dll can statically reference IKVM.GNU.Classpath.dll. This removes the need to use reflection to find IKVM.GNU.Classpath.dll at runtime and thus allows multiple versions of IKVM to co-exist side by side in the same AppDomain now.
- Added support for stubbing abstract methods that contain unsupported argument types (ByRef and Pointer)
- Regenerated mscorlib.jar and System.jar
- Changed RetentionPolicy on .NET custom attribute annotations to RUNTIME, so that ikvmc sees them (fixes a regression).
- Handled signature clashes in .NET type methods.
- Made method parameter name handling robust against invalid or incomplete local variables tables.
- Fixed interface implementation to recurse all the way up.
- Fixed bytecode metadata table to mark div/rem bytecodes as possibly throwing an exception (this fixes bug 1676377, thanks to Dennis Ushakov for reporting this)
- Made WinForms/AWT thread into a Background thread, to prevent it from keeping the process alive.
- Added -time option to ikvmc.
- Added x64 detection to jvm.dll build script.
- Fixed several .NET 2.0 "ReflectionOnly" bugs.
- Implemented java.awt.Desktop peer.
- Fixed several issues pointed out by FxCop: FileChannelImpl now calls GetLastWin32Error() immediately after the P/Invoke. Runtime.addShutdownHook() now has a LinkDemand for ControlAppDomain (because it exposes the AppDomain.ProcessExit event, which also has this LinkDemand). Ghost types now have an Equals, GetHashCode, == and != method. Comparable.__Helper now has a private constructor and is sealed. Shadow methods in remapped types (that exist to hide the base class methods from Intellisense) now copy any LinkDemands from the methods they hide.
Binaries available here: ikvmbin-0.33.2641.zip