Next: Pitfalls of the upgrade to ASDF 3, Previous: Decoupled release cycle, Up: “What has changed between ASDF 1, ASDF 2, and ASDF 3?” [Contents][Index]
The main pitfalls in upgrading to ASDF 2 seem to be related to the output translation mechanism.
enable-asdf-binary-locations-compatibility
in
see Backward Compatibility.
But thou shalt not load ABL on top of ASDF 2.
Other issues include the following:
:pathname
argument
to a defsystem
and its components,
a logical pathname (or implementation-dependent hierarchical pathname)
must now be specified with #p
syntax
where the namestring might have previously sufficed;
moreover when evaluation is desired #.
must be used,
where it wasn’t necessary in the toplevel :pathname
argument
(but necessary in other :pathname
arguments).
(directory "/configured/path/**/*.asd")
for every configured path (:tree "/configured/path/")
in your source-registry
configuration 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 :tree
entry but only :directory
entries
or shallow :tree
entries.
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.lis
as 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-type
is deprecated. To access a component’s
file-type, use file-type
, instead. source-file-type
will
be removed.