OK, so ASDF 1.711 is officially our release candidate. Consider the git master frozen for anything but bug fixes and documentation. Please use branches for any other development.
My next task is to find someone responsible for every implementation to 1- test it on each supported OS 2- actually commit it downstream
Below is the message I want to send to each implementation's vendor support mailing-list.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] The naturalistic fallacy: "if it's natural, it's good." The anti-naturalistic fallacy: "if it's natural, it's bad." The a-naturalistic fallacy: "nature has no relationship to good and bad."
------>8------>8------>8------>8------>8------>8------>8------>8------>8------
Dear <vendor developers>,
could you test the current release candidate of ASDF 2 (version 1.711) with your implementation, send us fixes for any glaring bug, and otherwise include it in any alpha-testing release channel for users of your implementation? I think it's mostly ready, and I'd like to have it widely tested before actual release.
ASDF 2 is an evolution of ASDF that tries to be backwards compatible with previous releases and their many extensions, while at the same time improving the user experience.
ASDF 2 is in pre-release mode. Hopefully we'll release it in May 2010 without any code change (except maybe for some tweaks to enhance support for some Lisp implementations on some operating systems), and with slightly enhanced documentation (notably based on your feedback).
I'm using it ITA; recent versions are already included in ECL and ABCL; several hackers have tried building plenty of packages with it. While it's far from perfect and only a relatively small evolution, I believe it's already notably better enough than the previous generation of ASDF that I'd like to get it out to the world, and doesn't have any egregious regression from ASDF 1.
What has changed since ASDF 1 is documented at the following page: http://common-lisp.net/project/asdf/asdf/FAQ.html
Improvements include:
* portably handle naming of files wrt directory, type, host/device, etc.
* a builtin user-configurable output translation mechanism, superseding asdf-binary-locations and previous hacks in common-lisp-controller and cl-launch.
* a user-configurable source registry system for finding systems (the old *central-registry* is still available)
* improved portability to many implementations.
* improved support for Windows (though configuration is still lacking implementation-dependent support except on LispWorks)
* many bug fixes
* the test suite while still largely incomplete covers more cases and is more robust across implementations.
* notable performance fixes for large systems with thousands of components
* API improvements: load-system, system-relative-pathname, etc.
* better documentation
* a sensible versioning system for ASDF 2 itself, that can be now be upgraded in a running system. This allows in the future to more easily decouple the releases of ASDF and those of your implementation.
* better support various extensions as used by ECL and ABCL, and also by POIU, ASDF-DEPENDENCY-GROVEL.
Main pitfalls include:
* Output translations is enabled by default. This may surprise some users, most of them in pleasant way (we hope), a few of them in an unpleasant way. It is trivial to disable output translations.
* Some systems in the large have been known not to play well with asdf output translations. They were easy to fix. It is also easy to disable output translations or override its configuration.
* ASDF 2 output translations do not work with ASDF-Binary-Locations. They replace A-B-L, and include a compatibility mode to emulate your previous A-B-L configuration. But you shouldn't load ABL on top of ASDF 2.
* A notable performance bug on SBCL: (directory "**/*.asd") can make things slower than desired when initially searching for asd files (depending on your configuration).
* On Windows, when not using cygwin, only LispWorks has proper defaults for configuration pathnames. Other implementations make do. Patches welcome. Windows support is largely under-tested, too.
As to how to best include ASDF in your implementation, here is an excerpt from the FAQ section of our manual:
12.3.2 “I'm a Common Lisp implementation vendor. When and how should I upgrade ASDF?”
Starting with current candidate releases of ASDF 2, it should always be a good time to upgrade to a recent version of ASDF. You may consult with the maintainer for which specific version they recommend, but the latest RELEASE should be correct. We trust you to thoroughly test it with your implementation before you release it. If there are any issues with the current release, it's a bug that you should report upstream and that we will fix ASAP.
As to how to include ASDF, we recommend the following:
* If ASDF isn't installed yet, then (require :asdf) should load the version of ASDF that is bundled with your system. You may have it load some other version configured by the user, if you allow such configuration.
* If your system provides a mechanism to hook into CL:REQUIRE, then it would be nice to add ASDF to this hook the same way that SBCL, CCL and ABCL do it.
* You may, like SBCL, have ASDF be implicitly used to require systems that are bundled with your Lisp distribution. If you do have a few magic systems that come with your implementation in a precompiled way such that one should only use the binary version that goes with your distribution, like SBCL does, then you should add them in the beginning of wrapping-source-registry.
* If you have magic systems as above, like SBCL does, then we explicitly ask you to NOT distribute asdf.asd as part of those magic systems. You should still include the file asdf.lisp in your source distribution and precompile it in your binary distribution, but asdf.asd if included at all, should be secluded from the magic systems, in a separate file hierarchy, or you may otherwise rename the system and its file to e.g. asdf-ecl and asdf-ecl.asd, or sb-asdf and sb-asdf.asd. Indeed, if you made asdf.asd a magic system, then users would no longer be able to upgrade ASDF using ASDF itself to some version of their preference that they maintain independently from your Lisp distribution.
* If you do not have any such magic systems, or have other non-magic systems that you want to bundle with your implementation, then you may add them to the default-source-registry, and you are welcome to include asdf.asd amongst them.
* Please send us upstream any patches you make to ASDF itself, so we can merge them back in for the benefit of your users when they upgrade to the upstream version.
[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ] Merely having an open mind is nothing; the object of opening the mind, as of opening the mouth, is to shut it again on something solid. — G.K. Chesterton