# Monday, March 29, 2010
« IE9 Preview disables CLR DEVPATH feature... | Main | New Development Snapshot »
New Development Snapshot

It's been a while and enough changes have accumulated to warrant a new development snapshot.


  • Volker implemented dumping a list of threads when Ctrl-Break is pressed (Windows only).
  • Fixed class loader caching in CallerID (thanks to Mainsoft for reporting this).
  • Added workaround to ikvmc for Assembly.Location differing in case when the assembly is loaded from DEVPATH.
  • Added error handling to ikvmc -key: and -keyfile: options.
  • Added code gen optimization to remove some unnecessary explicit class initialization triggers.
  • Several IKVM.Reflection fixes/improvements.
  • Added support to IKVM.Reflection for mcs specific AssemblyBuilderAccess flag (0x800 aka COMPILER_ACCESS) to allow access to members of unbaked TypeBuilders.
  • Added hack to ikvmc to automatically load OpenJDK assemblies from the same location as OpenJDK.Core (when a non-default OpenJDK.Core assembly is specified).
  • Introduced a base class for intrisified AtomitcReferenceFieldUpdaters. This reduces the size of the generates classes somewhat and allows for a public type to represent all intrinsified instances (instead of the HideFromJava nested type).
  • Intrinsified ThreadLocal (under specific circumstances).
  • Fix for bug #2946842.
  • Removed ../../openjdk6-b16 path from response files.
  • Fixed ikvmstub to not export generic type definitions, because the resulting class is final | abstract and that (intentionally) isn't legal.
  • Fixed ClassLoader to not allow unitialized class loader to be used as parent.
  • Replaced incorrect usages of Type.IsArray with ReflectUtil.IsVector().
  • Added workaround for Mono bug #583669.
  • Fixed bug in handling of unrecognized time zones.
  • When running on .NET 3.5 or later, use TimeZoneInfo.Id to identify timezone, because that maps better to the Win32 names that the Java name mapping is based on.
  • Fix for partial trust regression in assembly class loader initialization.
  • Partial trust: File.listRoots() now uses Environment.GetLogicalDrives() instead of Directory.GetLogicalDrives(). Both methods are semantically identical, but the former requires EnvironmentPermission(Unrestricted = true) and the latter SecurityPermission(UnmanagedCode = true). We also now swallow a SecurityException, should it occur.
  • Partial trust: Getting the host name now falls back to "localhost" if we don't have permission to query the name (or if anything else causes GetHostName to fail).

Binaries available here: ikvmbin-0.43.3736.zip

Monday, March 29, 2010 9:00:57 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [3]
Tuesday, March 30, 2010 7:20:07 AM (W. Europe Daylight Time, UTC+02:00)
It would be pretty sweet if you ran automated tests against the java API to see how close you are. I've seen two projects:



Also would make it easier for new developers to see areas they could jump into.
Tuesday, March 30, 2010 8:37:19 AM (W. Europe Daylight Time, UTC+02:00)
I used to run Mauve (and I've actually contributed a couple of fixes to it), but it is no longer active and doesn't add much value (and has lots of bugs and is incredible hard to run, on non-Linux systems).

I also used to run Japitools (most recent results: http://www.frijters.net/ikvm-japi-status.html), but since all the APIs are now there, it also doesn't add any value (the differences in the Japi results are either unimportant, JDK changes or Japitools bugs now).
Tuesday, March 30, 2010 10:27:30 PM (W. Europe Daylight Time, UTC+02:00)
Ctrl+Break handler is much welcome!!
Andy Malakov
Comments are closed.