# Monday, 24 January 2011
« New Development Snapshot | Main | New Development Snapshot »
New Development Snapshot

More IKVM.Reflection fixes to support mcs. Many thanks to Marek for his work.

OpenJDK 6 b21 has been released, so after this snapshot that needs to be integrated and we start preparing for the 0.46 release.

Changes:

  • Several AWT fixes.
  • Image improvements.
  • Added ikvm.runtime.Startup.addBootClassPathAssemby() API.
  • Added -Xreference: option to ikvm.
  • Fix scope id in IPv6 server socket accepted connections.
  • Added support for loading resources from assemblies loaded in the LoadFrom context.
  • Treat unrecognized ikvmc options as errors, instead of warnings.
  • Added ikvm.internal.NotYetImplementedError and throw that instread of sun.reflect.generics.reflectiveObjects.NotImplementedException.
  • Fixed bug that caused reflecting on a field of an unfinished type to throw an exception.
  • IKVM.Reflection: Fix for big endian systems. Thanks to Marek Safar for reporting this.
  • IKVM.Reflection: Add support for NETCF in rendering pseudo DllImportAttribute (i.e. skip fields that don't exist).
  • IKVM.Reflection: Changed __ReadTypeName() to __TryReadTypeName() because it should fail when the type is a nested type (because the name of a nested type cannot be expressed by namespace + name).
  • IKVM.Reflection: Type.Namespace property should not returned escaped string.
  • IKVM.Reflection: Added Type.__Name and Type.__Namespace properties to allow the real (from the ECMA CLI point of view) namespace and names of types to be queried (for TypeDef and TypeBuilder only).
  • IKVM.Reflection: Fixed a bunch of type name escaping bugs.
  • IKVM.Reflection: Added support for nested types that use a namespace.
  • IKVM.Reflection: Type.Name/Namespace/FullName fixes to make everything more compatible (including bugs) with .NET reflection.
  • IKVM.Reflection: Added ModuleBuider.__DefineType() and TypeBuilder.__DefineNestedType() APIs.
  • IKVM.Reflection: Prevent external subclassing. It's not part of the design to support that, now it is also enforced.
  • IKVM.Reflection: Fixed copy/paste bug. A TypeRef pointing to ModuleRef should resolve the type in that module, not the assembly.
  • IKVM.Reflection: Fixed Type.GetNestedType() and be more compatible with .NET reflection (i.e. ignore the namespace).
  • IKVM.Reflection: Added Universe.CreateMissingAssembly() to create an assembly that automatically resolves any type that it is supposed to contain.
  • IKVM.Reflection: Added Type.__IsMissing and Type.__ContainsMissingType properties to detect missing types.
  • IKVM.Reflection: Patch by Marek Safar to implement framework unification for managed implementation of Universe.CompareAssemblyIdentity().
  • IKVM.Reflection: Improved partial trust support.
  • IKVM.Reflection: Added support for saving to a stream instead of a file.
  • IKVM.Reflection: Fixed type resolution to match namespace and name separately, like Mono and the CLR do.
  • IKVM.Reflection: Added Universe.EnableMissingTypeResolution() to enable missing type resolution in all assemblies.
  • IKVM.Reflection: Various fixes to improve support for building mscorlib.

Binaries available here: ikvmbin-0.45.4041.zip

Monday, 24 January 2011 07:08:30 (W. Europe Standard Time, UTC+01:00)  #    Comments [8]
Tuesday, 01 February 2011 14:00:56 (W. Europe Standard Time, UTC+01:00)
Jeroen, would you mind uploading the latest source as well? Sourceforge is megadown atm and it seems like they wont startup CVS again.
Cheers,
Martin
Martin
Tuesday, 01 February 2011 14:06:40 (W. Europe Standard Time, UTC+01:00)
CVS will come back eventually (but they do want to phase it out later). The most recent snapshot (with the OpenJDK 6 b21 integration) sources are available here:
http://www.frijters.net/ikvmbin-0.45.4042.zip
Tuesday, 01 February 2011 14:07:15 (W. Europe Standard Time, UTC+01:00)
CVS will come back eventually (but they do want to phase it out later). The most recent snapshot (with the OpenJDK 6 b21 integration) sources are available here:
http://www.frijters.net/ikvmsrc-0.45.4042.zip
Wednesday, 02 February 2011 09:24:21 (W. Europe Standard Time, UTC+01:00)
Thanks Jeroen,
I had to add sun/awt/image/IkvmImageDecoder.java in allsources.lst, but it stills fail with
"IKVM.OpenJDK.SwingAWT.dll : sun.awt.image.ImageRepresentation::copyInt][offset 0
x000000B6] Method is not visible" when I compile.
Cheers,
Martin
Martin
Wednesday, 02 February 2011 10:28:18 (W. Europe Standard Time, UTC+01:00)
Thanks Martin. I wonder why my javac didn't complain about the missing sun/awt/image/IkvmImageDecoder.java. I added it and double checked to see if I did miss anything else.

I will fix the verification issue. It is specific to .NET 4.0, so you can workaround it by building to .NET 2.0 (which is recommended anyway, because the 4.0 specific stuff is still experimental). Use nant -t:net-2.0 to do that.

If you want to fix it for .NET 4.0 you should add @cli.System.Security.SecurityCriticalAttribute.Annotation to copyByte and copyInt in openjdk/sun/awt/image/ImageRepresentation.java.
Wednesday, 02 February 2011 17:11:15 (W. Europe Standard Time, UTC+01:00)
aha, thank you very much Jeroen :)
Martin
Saturday, 05 February 2011 20:44:47 (W. Europe Standard Time, UTC+01:00)
Glad to hear project is alive. We are avid users. Running entire Java stack under IKVM without problems: Tomcat/JSP, Spring, Hibernate/JDBC, ActiveMQ/JMS, and much more. Great Job, Jeroen!

Regards, Andy
Andy
Sunday, 13 February 2011 21:56:57 (W. Europe Standard Time, UTC+01:00)
Hi, jetlang-0.2.1.jar compiles without warnings/errors to jetlang-0.2.1.dll but scala-library.jar of version 2.8.1.final generates a lot of warnings.

I used ikvmc versions 0.44.0.5 and 0.45.4042.

C:\ikvm\bin-x86>ikvmc -target:library scala-library.jar
Note IKVMC0002: output file is "scala-library.dll"
Warning IKVMC0100: class "scala.Either$$anonfun$joinLeft$1" not found
Warning IKVMC0100: class "scala.Either$$anonfun$joinRight$1" not found
Warning IKVMC0100: class "scala.Enumeration$$anonfun$Value$1" not found
Warning IKVMC0100: class "scala.Predef$Ensuring$$anonfun$ensuring$2" not found
Warning IKVMC0100: class "scala.Predef$Ensuring$$anonfun$ensuring$1" not found
Warning IKVMC0100: class "scala.actors.ReplyReactor$$anonfun$react$1" not found
Warning IKVMC0100: class "scala.actors.ReplyReactor$$anonfun$reactWithin$1" not
found
Warning IKVMC0100: class "scala.actors.Actor$$anonfun$link$2" not found
Warning IKVMC0100: class "scala.actors.Actor$$anonfun$link$1" not found
Warning IKVMC0100: class "scala.actors.Actor$$anonfun$unlink$1" not found
Warning IKVMC0100: class "scala.actors.Actor$$anonfun$receive$1" not found
Warning IKVMC0100: class "scala.actors.Actor$$anonfun$receiveWithin$1" not found

Warning IKVMC0100: class "scala.collection.immutable.BitSet$$anonfun$$plus$1" no
t found
Warning IKVMC0100: class "scala.collection.immutable.BitSet$$anonfun$$minus$1" n
ot found
Warning IKVMC0100: class "scala.collection.immutable.Stream$StreamWithFilter$$an
onfun$foreach$1" not found
Warning IKVMC0100: class "scala.collection.mutable.ArrayBuffer$$anonfun$remove$1
" not found
Warning IKVMC0100: class "scala.collection.mutable.LinkedListLike$$anonfun$inser
t$1" not found
Warning IKVMC0100: class "scala.collection.mutable.FlatHashTable$$anonfun$newThr
eshold$1" not found
Warning IKVMC0100: class "scala.collection.mutable.FlatHashTable$$anonfun$checkC
onsistent$1$$anonfun$apply$mcVI$sp$1" not found
Warning IKVMC0100: class "scala.concurrent.ops$$anonfun$2" not found
Warning IKVMC0100: class "scala.concurrent.ops$$anonfun$1" not found
Warning IKVMC0100: class "scala.reflect.generic.UnPickler$Scan$$anonfun$at$1" no
t found
Warning IKVMC0100: class "scala.reflect.generic.UnPickler$Scan$$anonfun$readSymb
ol$3" not found
Warning IKVMC0100: class "scala.testing.SUnit$Assert$$anonfun$assertSameElements
XML$1" not found
Warning IKVMC0100: class "scala.util.continuations.ControlContext$$anonfun$3$$an
onfun$5" not found
Warning IKVMC0100: class "scala.xml.EntityRef$$anonfun$text$1" not found
Warning IKVMC0100: class "scala.xml.MetaData$$anonfun$toString$1" not found
Warning IKVMC0100: class "scala.xml.MetaData$$anonfun$toString1$1" not found
Warning IKVMC0100: class "scala.xml.NamespaceBinding$$anonfun$toString$1" not fo
und
Warning IKVMC0100: class "scala.xml.NamespaceBinding$$anonfun$buildString$1" not
found
Warning IKVMC0100: class "scala.xml.PrettyPrinter$$anonfun$format$2" not found
Warning IKVMC0100: class "scala.xml.PrettyPrinter$$anonfun$endTag$1" not found
Warning IKVMC0100: class "scala.xml.PrettyPrinter$$anonfun$leafTag$1" not found
Warning IKVMC0100: class "scala.xml.PrettyPrinter$$anonfun$startTag$1" not found

Warning IKVMC0100: class "scala.xml.PrettyPrinter$$anonfun$formatNodes$1" not fo
und
Warning IKVMC0100: class "scala.xml.Utility$$anonfun$escape$1" not found
Warning IKVMC0100: class "scala.xml.Utility$$anonfun$appendQuoted$1" not found
Warning IKVMC0100: class "scala.xml.Xhtml$$anonfun$toXhtml$2" not found
Warning IKVMC0100: class "scala.xml.Xhtml$$anonfun$toXhtml$1" not found
Warning IKVMC0100: class "scala.xml.dtd.ContentModel$$anonfun$toString$1" not fo
und
Warning IKVMC0100: class "scala.xml.dtd.ContentModel$$anonfun$buildString$1" not
found
Warning IKVMC0100: class "scala.xml.dtd.AttrDecl$$anonfun$toString$1" not found
Warning IKVMC0100: class "scala.xml.dtd.DEFAULT$$anonfun$toString$2" not found

Dave
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