Time for a new snapshot. Not too many changes, but the IKVM.Reflection API changes should suggest what I've been working on.
Changes:
- Updated version to 7.1.4406.0.
- Handle Main-Class manifest value that spans multiple lines. Fix for bug #3461012.
- When constructing a generic class loader we can't use GetWrapperFromType() on the type arguments, because they might refer to a subtype that is currently being loaded.
- Made base TypeWrapper resolution lazy for compiled and .NET TypeWrappers.
- Use modopt custom modifiers for methods instead of name mangling and NameSigAttribute.
- Added version info resource to JVM.DLL. Modified version of patch #3472413.
- Added version info resource to ikvm-native-win32-{arch}.dll. Modified version of patch #3472413.
- Added support for delegates with ByRef parameters.
- When a dynamic only interface method ends up being "implemented" by a static or non-public method, it should throw the appropriate exception.
- When instantiating a delegate and the object passed in does not properly implement the delegate's Method interface, bind the delegate to an error stub that throws the appropriate error.
- The right remap filename should be put in the SourceFileAttribute, instead of the last one.
- Stack trace elements in methods in remapped .NET types should not list the source filename as map.xml.
- IKVM.Reflection: FieldInfo.IsAssembly should test for FieldAttributes.Assembly access, not FieldAttributes.Family.
- IKVM.Reflection: Added Module.__FileAlignment property.
- IKVM.Reflection: Added ManifestResourceInfo.__Offset property.
- IKVM.Reflection: Avoid the need for (expensive) ResolveMethod call when emitting debug symbols. Thanks to Miguel Garcia for pointing this out.
- IKVM.Reflection: Add AssemblyName.__Hash property (to expose the hash in an AssemblyRef).
- IKVM.Reflection: Added Module.__EntryPointRVA and Module.__EntryPointToken properties.
- IKVM.Reflection: Added MethodBase.__MethodRVA property.
- IKVM.Reflection: Fixed regression introduced with AssemblyName rewrite. The AssemblyName returned from __GetReferencedAssemblies() should include an empty public key token if the referenced assembly is not strong named.
- IKVM.Reflection: API change. Allow Type.MetadataToken to be called on missing type (it will return 0 or the token hint when the type was forwarded).
- IKVM.Reflection: Added Universe.ResolveType() API that can be used to construct missing types.
- IKVM.Reflection: Fixed various Module.Resolve* methods to throw proper exception when wrong metadata token is supplied.
- IKVM.Reflection: Fixed type parameter binding for missing types.
- IKVM.Reflection: Added Module.__EnumerateCustomAttributeTable() API.
- IKVM.Reflection: Removed Module.__GetDeclarativeSecurityFor() API.
- IKVM.Reflection: Added CustomAttributeData.__Parent API.
- IKVM.Reflection: Added Module.__ImageRuntimeVersion API.
Binaries available here: ikvmbin-7.1.4406.zip