I released 0.24.0.1 to SourceForge. João Saraiva reported that ikvmstub doesn't work correctly for mscorlib, but I've decided not to fix that for this version and instead make the correct mscorlib.jars available for download: .NET 1.1 and .NET 2.0
A lot of *EXTREMELY* interesting and important updates this time round. According to Jeroens description from his January 16th post announcing the first release candidate for version 0.24:
A new release candidate based on GNU Classpath 0.20 that was released this weekend. The GNU Classpath progress has been truly amazing. Updated japi results are available here. If no major bugs are found in this rc it will turn into a release, probably by the end of the week or early next week.
With each and every release of, first, Classpath, and then, IKVM.NET, the Java/.NET interoperability picture becomes *MUCH* more clear, and as such, impressive! There are still a few things here and there that require a bit of work e.g. as I've recently discovered, Regular Expressions, a language feature new to the Java language as of v1.4, are not as complete as they could be from the Classpath side of things. However, both Sun and Microsoft have implemented RegEx using the Traditional NFA model, and as such, you can simply use the 'import cli.System.Text.RegularExpressions' made possible by the Java bytecode stub version of the mscorlib.dll. For those unaware, in addition to the mscorlib.dll > mscorlib.jar, there is also System.dll > System.jar, and System.Xml.dll > System.Xml.jar that comes pre-packaged with the IKVM.NET project. If you want to implement others, you simply use the ikvmstub.exe file to compile the desired .NET assembly to a stubbed Java bytecode jar file. Pretty simple and *EXTREMELY* beneficial!
A lot of work has gone into both the IKVM and Classpath projects, led by Jeroen Frijters and Mark Wielaard, respectively. A *HUGE* thanks to both of you as well as the extensive list of other folks who have contributed to both of these projects in *ANY* capacity.
True Legends of Software in both the making *AND* the here and now!
Thanks guys! :)
[UPDATE: I suddenly realized that while I added Jeroen, the developer of the IKVM.NET project, to the "Legends" list a while back (see main page, left column) just as important to the Saxon.NET project (and, as such, the reason Jeroen has *MORE* than earned his inclusion on this list) is the Classpath project. I've already mentioned Mark Wielaard as the lead for this project. And now I've fixed the mistake of not including him in this group of *ELITE* developers who have in one form or another helped in extending both the support and reach of XSLT, promoting its usage as a Domain Specific Language.
Welcome Mark! My apologies for just now realizing that you were not a part of this list before now. Like Jeroen, you most certainly *MORE* than deserve to be a part of this exclusive list!]
---
IKVM.NET v.0.24 Compiled Change Log
---
* Integrated GNU Classpath 0.20
* Changed nant build files to use NAnt 0.85-rc3 syntax and features
* Removed support for compiling classpath with jikes
* Added support for targetting both .NET 1.1 and .NET 2.0 to the build files
* Removed assembly names from type names in map.xml (to better support targetting a different version of the CLR)
* Added conditional compilation support to map.xml parser (based on target CLR version)
* Changed map.xml Object.hashCode implementation to use RuntimeHelpers.GetHashCode when targetting .NET 2.0 (RuntimeHelpers.GetHashCode is broken on .NET 1.1 and the non-virtual call trick is no longer verifiable on .NET 2.0)
* Added map.xml Object.equals implementation instead of relying on System.Object.Equals.
* Changed map.xml VMSystem.identityHashCode to use RuntimeHelpers.GetHashCode when targetting .NET 2.0
* Hardened VMSystemProperties to work better on the Compact Framework (where several methods are missing)
* Fixed several NIO socket bugs
* Changed FileChannelImpl to work on the Compact Framework (stdin, stdout and stderr are missing on the Compact Framework)
* Hardened VMClassLoader to work better on the Compact Framework
* Changed static compiler to use ReflectionOnly context for loading and generating assemblies (when compiled for .NET 2.0)
* Added conditional compilation #ifs to the runtime to work better on the Compact Framework
* Changed compilation of invokespecial bytecode to be verifiable on .NET 2.0
* Added IKVM.Runtime.Util.GetInstanceTypeFromClass() to go from java.lang.Class to System.Type. Note that due to the object model mapping issues there is no one-to-one correspondence from Class to Type, so this method returns the "instance" type, which is logically equivalent to doing Class.newInstance().GetType().
* Fixed ikvm.exe to give a proper error message when using the -jar option on a jar that doesn't have a manifest or a manifest that doesn't have a Main-Class attribute.
* Added several hacks to ikvmc, ikvmstub and the runtime to support loading assemblies in the ReflectionOnly context.
* Implemented optimization in compiler to remove redundant box/unbox operation is many cases.
* Changed compiler to explicitly implement all inherited interfaces, for compatibility with the Compact Framework.
* Fixed DotNetTypeWrapper.LoadTypeFromLoadedAssemblies to support generic type instantiations.
* Optimized compiler to push/pop only the rightmost requires arguments when doing method argument conversions.
* Implement "this" reference tracking in verifier, to enable code generator to emit more efficient (and verifiable on .NET 2.0) non-virtual base class method calls.
* Optimized compiler to use short encoding when possible for backward branches.
* Removed unnecessary verifier hack branch at the end of methods that don't use exception blocks and used short form of the branch.
* Fixed Math.pow(1.0, Double.INFINITY) result on .NET 2.0.
* Added SourceFileAttribute to module when running in dynamic mode, to enable source file reporting when running on .NET 2.0.
* Changed code generator to leave out redundant branches.
* Fixed infinite recursion in resource loading when SecurityManager is installed.
* Changed WinForms event loop thread to STA.
* Fixed handling of open generic types (by making sure they are invisible to Java code).
TrackBack URL for this entry:
http://www.xsltblog.com/xslt-blog-mt/mt-tb.cgi/1334