Lot's of changes in just a week. The most interesting one being that ikvmc and the runtime now work together to project all the classes that were in the original jars compiled by ikvmc are now visible in the same (virtual) jars at runtime.
To avoid making the generated assemblies much bigger, this is implemented by having ikvmc generate a compressed file called --ikvm-classes--/ in the resources jar that contains the names of the classes compiled from this jar. This typically adds about 0.5% size overhead. At runtime when that jar is read in by java.util.zip.ZipFile it expands the list of class names to create virtual ZipEntries. Only when a virtual class resource is accessed is the class stub generated.
- Fixed ikvmc to give a proper error message if it fails to write to the output file.
- If a class can't be statically compiled due to a missing base class/interface, include it as a resource.
- Modified the assembly class loader to try to load classes from resources.
- Made dynamic binding to unloadable types the default (for ikvmc).
- Added -static option to ikvmc to disable dynamic binding.
- Unified all ikvmc filename validation.
- Implemented StandardGlyphVector.getGlyphOutline().
- Bug fix. When looking for a method to override we should handle internal access methods.
- Fixed some runtime memory model issues (for non-x86 architectures).
- Bug fix. Custom attribute annotation should skip indexer properties.
- Bug fix. The available() method of the InputStream returned by ZipFile.getInputStream() was based on ZipEntry passed in, instead of the actual one.
- Fixed ikvmc to suppress "class not found" warning for a classes that fails to compile for any reason (because we've already given a warning about it).
- Bug fix. Don't look for main method in excluded classes.
- Unified the handling of resources and classes in ikvmc.
- Include all uncompilable .class files (from jars) into the resource jars.
- Project stub classes into the jar the classes originated from.
- Fixed ikvmc to prefer the last jar entry if there are duplicate entries. This mirrors the behavior of Java and dynamic mode.
- Fixed ikvmc to compare extensions case sensitive to find .class files.
- Fixed ikvmc to use the jar entry name, instead of the class name to load classes.
- Removed exclude.lst left over from ancient times.
- Removed META-INF/mailcap.default and META-INF/mimetypes.default resources that are no longer in resources.jar.
- Changed ikvmc -recurse: option to give a fatal error if it matches no files.
Binaries available here: ikvmbin-7.3.4796.zip