# Friday, 02 December 2011
« New Development Snapshot | Main | Custom Modifiers »
New Development Snapshot

The theme of this snapshot is custom modifiers. I've been working on ikvmc to make more use of custom modifiers for fields and constructors that have "special" types in their signatures and on the IKVM.Reflection side I completly rewrote custom modifier handling (unrelated to ikvmc) to allow roundtripping C++/CLI files (minus the unmanaged bits, obviously) and support interleaved modreq and modopt sequences.

Changes:

  • Updated version to 7.1.4352.0.
  • Fixed dynamic mode with class GC enabled to automatically add required InternalsVisibleToAttribute to the dynamic assemblies.
  • Greatly improved access stub generation. Fixed many related bugs.
  • Fixed ikvmc exception when decoding NameSigAttribute with missing type.
  • Added ikvm.runtime.Util.getClassFromTypeHandle() overload for classes that represent arrays of remapped .NET types and .NET primitives.
  • Instead of mangling field names and using NameSigAttribute, we now use modopt to modify the signature and record the real type.
  • Removed legacy remap feature that allowed final fields as properties to be defined (long time ago this was used for the System.in/out/err fields).
  • Fixed Graphics2D.clip(null) to not throw an exception for bitmap and print graphics.
  • Fixed java.nio.file.FileStore for non-accessible drive to throw exception when trying to create the FileStore, not when accessing the name() or type() properties.
  • Stop mangling property names for access stubs (instead we rely on custom modifiers to make them unique).
  • Stop mangling property accessor method names, but use a custom modifier instead.
  • Generate access stubs for final fields (when -strictfinalfieldsemantics isn't specified).
  • Fixed ikvmc to not treat informational messages as error when -warnaserror is specified. Fix for #3443377.
  • Changed ikvmc to not enforce pre-1.5 class name rules (since HotSpot, by default doesn't enforce any naming rules for classes loaded by trusted class loaders). Fix for #3443373.
  • Relax dynamic mode class name validation for trusted class loaders.
  • Implemented NetToolkit.isModalExclusionTypeSupported() (by always returning false). Fix for #3441959.
  • Added extension methods for (almost) all instance methods in Object, String and Throwable to ikvm.extensions.ExtensionMethods.
  • Added ObsoleteAttribute to instancehelper_ methods in remapped types (with a message saying that the extension methods should be used).
  • Added parameter name to Throwable.addSuppressed() in map.xml.
  • Added -Xverify option to ikvm.exe.
  • Use custom modifiers (instead of NameSigAttribute) for constructors with mangled types.
  • When a member with unloadable types in its signature is exposed via reflection, the unloadable types should be resolved to actual types.
  • Mark getSpace0 with SecuritySafeCritical to avoid getting an exception with .NET 4.0 build.
  • IKVM.Reflection: Rewrote custom modifier handling to retain ordering.
  • IKVM.Reflection: Added ConstructorInfo.__ReturnParameter to expose custom modifiers.
  • IKVM.Reflection: Added __GetCustomModifiers() to various *Info types.
  • IKVM.Reflection: Added CustomModifiers type to encapsulate a custom modifier sequence.
  • IKVM.Reflection: Added CustomModifiersBuilder to create a CustomModifiers sequence.
  • IKVM.Reflection: Marked a number of IKVM.Reflection specific methods Obsolete, because they are replaced with method that take CustomModifiers value(s).
  • IKVM.Reflection: Added support for function pointer types.
  • IKVM.Reflection: Added support for custom modifiers to StandAloneMethodSig.
  • IKVM.Reflection: Added custom modifier support in local variable signatures.
  • IKVM.Reflection: Fixed SignatureHelper to support custom modifiers in method signatures.
  • IKVM.Reflection: Added new overload of __ResolveOptionalParameterTypes() that supports resolving generic type parameters and custom modifiers.

Binaries available here: ikvmbin-7.1.4352.0.zip

Friday, 02 December 2011 07:49:54 (W. Europe Standard Time, UTC+01:00)  #    Comments [0]