Since it has been a while, time for a new development snapshot.
Changes:
- Expose annotations on statically compiled code as java.lang.reflect.Proxy instead of the custom attribute object, to deal with broken code that assumes annotations are always implemented with Proxy. Fix for #3254823.
- Added delegate conversion for java.lang.reflect.InvocationHandler to ikvm.runtime.Delegates.
- Changed build to specify "-cp dummy" for javac compile to avoid accidentally picking up classes on the CLASSPATH.
- Added experimental (i.e. not yet finished) -proxy: option to ikvmc to pre-generate proxy class.
- Added method prologue support to remap file.
- Updated AtomicInteger, AtomicIntegerArray, AtomicLonger, AtomicLongerArray to use .NET 2.0 interlocked operations.
- Added stind_i8 opcode to remap file.
- Changed build and JNI code to use different names for the Windows x86 and x64 versions of the native dll.
- Added missing lib/*.properties files (in particular lib/calendars.properties which caused java.util.JapaneseImperialCalendar to fail).
- Retain reflection field ordering for ikvmc compiled code (not required by spec, but to improve compatibility with broken code).
- AWT: Fixed a StringIndexOutOfBoundsException if RTL and LTR text are used in one string.
- AWT: Added emulation for fixed metrics to make drawString and stringWidth compatible.
- AWT: Added workaround for bug in OpenJDK 6 on Windows. The result is that the needed width for painting of labels and buttons can be 1 pixel larger as the prefered size. The result was labels with "...".
- IKVM.Reflection: Fixed TypeBuilder.DefineNestedType() to accept a null reference for the interfaces parameter.
Binaries available here: ikvmbin-0.47.4154.zip