On Thu, Jan 28, 2010 at 1:30 PM, Mark Evenson evenson@panix.com wrote:
A [third version of patches][1] are now available to load from JARs in ABCL.
This version can load FASLs from JARs with a asdf:load-just-fasls-op (thanks Alan!) implementation (see web page for instructions).
In general this work seems to be approaching something I would merge to trunk with the following outstanding issues to consider:
- There is a regression in failing logical pathname translation tests in
ABCL.TEST.LISP having to do with improper case conversion. Probably introduced with the Pathname copy constructor I introduced to get around the MERGE-PATHNAME implementation not treating its arguments in final (which is currently a bug on trunk in certain conditions as well).
- Dangling open InputStreams need to be closed
This seems the most dangerous issue. IIRC in some cases abcl has this problem even without your patch. However, it should be just a matter of putting some try-finally blocks in the right places.
- Possibly reestablish the use ZipCache, although I don't think its a win
in its previous form. Maybe something using a timer thread to invalidate? Seems wrong.
Since you used JarURLConnection to access resources inside JARs, you are already using the cache which is built in the JVM, and ZipCache is, or should be, superfluous. This cache is not mentioned in Java's standard API documentation, but it is a known feature of at least Sun's JVM; see for example http://www.szegedi.org/articles/remotejars.html. I expect this feature to be present in all sane JVMs (loading classes from remote Jars without it would be much slower).
Test the use of URLs in JAR pathnames
Wider testing with the ANSI test suite to make sure the Pathname
behavior is at least as correct as the previous version.
I can only say: thanks for your work, it is going to make abcl more deploy-friendly and that's a huge bonus.
Alessio