The main pitfalls in upgrading to ASDF 2 seem to be related to the output translation mechanism.
enable-asdf-binary-locations-compatibilityin see Backward Compatibility. But thou shalt not load ABL on top of ASDF 2.
Other issues include the following:
:pathnameargument to a
defsystemand its components, a logical pathname (or implementation-dependent hierarchical pathname) must now be specified with
#psyntax where the namestring might have previously sufficed; moreover when evaluation is desired
#.must be used, where it wasn’t necessary in the toplevel
:pathnameargument (but necessary in other
(directory "/configured/path/**/*.asd")for every configured path
(:tree "/configured/path/")in your
source-registryconfiguration can cause a slight pause. Try to
(time (asdf:initialize-source-registry))to see how bad it is or isn’t on your system. If you insist on not having this pause, you can avoid the pause by overriding the default source-registry configuration and not use any deep
:treeentry but only
:directoryentries or shallow
:treeentries. Or you can fix your implementation to not be quite that slow when recursing through directories. Update: This performance bug fixed the hard way in 2.010.
(defmethod source-file-type ((component cl-source-file) (system (eql (find-system 'foo)))) (declare (ignorable component system)) "lis"). Now, the pathname for a component is eagerly computed when defining the system, and instead you will
(defclass cl-source-file.lis (cl-source-file) ((type :initform "lis")))and use
:default-component-class cl-source-file.lisas argument to
defsystem, as detailed in a see How do I create a system definition where all the source files have a .cl extension? below.
source-file-typeis deprecated. To access a component’s file-type, use
source-file-typewill be removed.