I expect that I'll be busy the next couple of weeks working on integrating the OpenJDK libraries that were released yesterday, so I thought I'd release a new development snapshot to reflect the current state. There are quite a few bug fixes, most of them triggered by running test suites suggested by Albert Strasheim. Many thanks to him for running the test suites and passing the interesting ones on to me (including instructions on how to install/build/run them, which is usually the most time consuming and frustrating part.)
This snapshot also includes much improved support for applying .NET custom attributes as Java annotations. The next blog entry will describe the changes in detail.
- Integrated current GNU Classpath cvs version.
- Fixed exception handling to continue working during AppDomain finalization for unload.
- Implement major chunk of custom attribute as annotations support.
- Added support for applying custom attributes to return values.
- Added support for applying AllowMultiple custom attributes multiple times to the same element.
- Restructured ParameterBuilder handling.
- Added system property "ikvm.apartmentstate" to enable setting the COM ApartmentState for threads created in Java code.
- Added hack to support Double.MIN_VALUE and Double.MAX_VALUE toString/parse roundtripping.
- Fixed Throwable.printStackTrace() to call Throwable.printStackTrace(OutputStream) to support exception classes that only override printStackTrace(OutputStream).
- Fixed Throwable.printStackTrace(…) to use PrintWriter/PrintStream.println() to trigger flushing on auto-flush writers/streams.
- Fixed Throwable constructor to set cause correctly if an exception was instantiated but not thrown immediately.
- Moved ikvmc warning handling to fix missing warnings bug (previously depending on compilation order, some warnings might not be shown).
- Fixed verifier/compiler to support dup_x2 form 2. Found by Derby test suite.
- Implemented JSR 133 rule that says that finalize cannot run before constructor is finished.
- Fixed ArrayIndexOutOfBoundsException in generic metadata reflection on dynamically compiled types.
- Fixed PlainDatagramSocketImpl to set initial SO_BROADCAST option to enabled.
- Fixed PlainSocketImpl.getOption(SO_OOBLINE) to return Boolean instead of Integer.
- Fixed DatagramChannelImpl to reflect connectedness on underlying DatagramSocket.
- Fixed SocketChannelImpl.read(ByteBuffer) to handle -1 return values from implRead() for non byte array backed buffers.
Binaries available here: ikvmbin-0.35.2685.zip