# Monday, 29 March 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.

Changes:

  • 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, 29 March 2010 09:00:57 (W. Europe Daylight Time, UTC+02:00)  #    Comments [3]
Tuesday, 30 March 2010 07:20:07 (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:

Mauve
http://sources.redhat.com/mauve/

Japitools
http://sab39.netreach.com/japi/

Also would make it easier for new developers to see areas they could jump into.
Matt
Tuesday, 30 March 2010 08:37:19 (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, 30 March 2010 22:27:30 (W. Europe Daylight Time, UTC+02:00)
Ctrl+Break handler is much welcome!!
Andy Malakov
Name
E-mail
Home page

I apologize for the lameness of this, but the comment spam was driving me nuts. In order to be able to post a comment, you need to answer a simple question. Hopefully this question is easy enough not to annoy serious commenters, but hard enough to keep the spammers away.

Anti-Spam Question: What method on java.lang.System returns an object's original hashcode (i.e. the one that would be returned by java.lang.Object.hashCode() if it wasn't overridden)? (case is significant)

Answer:  
Comment (HTML not allowed)  

Live Comment Preview