diff --git a/asdf.lisp b/asdf.lisp
index 946d79f0c7ba365a850ecfcdc734b98743413174..09b4c3230d74261471fd399d8e4013519c129b32 100644
--- a/asdf.lisp
+++ b/asdf.lisp
@@ -70,7 +70,7 @@
                 :test 'equalp :key 'car))
   (let* ((asdf-version
           ;; the 1+ helps the version bumping script discriminate
-          (subseq "VERSION:1.715" (1+ (length "VERSION"))))
+          (subseq "VERSION:1.716" (1+ (length "VERSION"))))
          (existing-asdf (find-package :asdf))
          (vername '#:*asdf-version*)
          (versym (and existing-asdf
@@ -500,7 +500,7 @@ Also, if either argument is NIL, then the other argument is returned unmodified.
              (unspecific-handler (p)
                (if (typep p 'logical-pathname) #'ununspecific #'identity)))
       (multiple-value-bind (host device directory unspecific-handler)
-          (ecase (first directory)
+          (#-gcl ecase #+gcl case (first directory)
             ((nil)
              (values (pathname-host defaults)
                      (pathname-device defaults)
@@ -735,14 +735,13 @@ actually-existing directory."
         (return p))
       (let ((sofar (ignore-errors (truename (pathname-root p)))))
         (unless sofar (return p))
-        (flet ((solution (directory)
+        (flet ((solution (directories)
                  (merge-pathnames*
                   (make-pathname :host nil :device nil
-                                 :directory directory
+                                 :directory `(:relative ,@directories)
                                  :name (pathname-name p)
                                  :type (pathname-type p)
-                                 :version (pathname-version p)
-                                 :defaults "/" :case :local)
+                                 :version (pathname-version p))
                   sofar)))
           (loop :for component :in (cdr directory)
             :for rest :on (cdr directory)
@@ -753,7 +752,7 @@ actually-existing directory."
                             sofar))) :do
             (if more
                 (setf sofar more)
-                (return (solution `(:relative ,@rest))))
+                (return (solution rest)))
             :finally
             (return (solution nil))))))))
 
@@ -2288,9 +2287,10 @@ located."
 (defparameter *os-features*
   '((:windows :mswindows :win32 :mingw32)
     (:solaris :sunos)
+    :linux ;; for GCL at least, must appear before :bsd.
     :macosx :darwin :apple
     :freebsd :netbsd :openbsd :bsd
-    :linux :unix))
+    :unix))
 
 (defparameter *architecture-features*
   '((:x86-64 :amd64 :x86_64 :x8664-target)
@@ -2312,6 +2312,7 @@ located."
                        (:-ics "8")
                        (:+ics ""))
                       (if (member :64bit *features*) "-64bit" ""))
+    #+clisp (subseq s 0 (position #\space s))
     #+clozure (format nil "~d.~d-fasl~d"
                       ccl::*openmcl-major-version*
                       ccl::*openmcl-minor-version*
@@ -2322,11 +2323,11 @@ located."
                   (let ((vcs-id (ext:lisp-implementation-vcs-id)))
                     (when (>= (length vcs-id) 8)
                       (subseq vcs-id 0 8))))
+    #+gcl (subseq s (1+ (position #\space s)))
     #+lispworks (format nil "~A~@[~A~]" s
                         (when (member :lispworks-64bit *features*) "-64bit"))
     ;; #+sbcl (format nil "~a-fasl~d" s sb-fasl:+fasl-file-version+) ; fasl-f-v is redundant
     #+(or armedbear cormanlisp mcl sbcl scl) s
-    #+(or clisp gcl) (subseq s 0 (position #\space s))
     #-(or allegro armedbear clisp clozure cmu cormanlisp digitool
           ecl gcl lispworks mcl sbcl scl) s))
 
diff --git a/doc/asdf.texinfo b/doc/asdf.texinfo
index 9c151c90d6ee33fa3e68f096fa1604fd19a61dfa..1b9aea2e1cbe1a2c7796b75f091cfa903177b263 100644
--- a/doc/asdf.texinfo
+++ b/doc/asdf.texinfo
@@ -552,7 +552,7 @@ by evaluating the following Lisp form:
 (asdf:load-system :@var{foo})
 @end example
 
-On some implementations (namely, SBCL and Clozure CL),
+On some implementations (namely ABCL, Clozure CL and SBCL),
 ASDF hooks into the @code{CL:REQUIRE} facility
 and you can just use:
 
@@ -2731,11 +2731,18 @@ Other issues include the following:
 
 @item
 There is a slight performance bug, notably on SBCL,
-when initially searching for @file{asd} files
-(depending on your configuration).
-The @code{(directory "**/*.asd")} can make things slower than desired.
+when initially searching for @file{asd} files,
+the implicit @code{(directory "/configured/path/**/*.asd")}
+for every configured path @code{(:tree "/configured/path/")}
+in your @code{source-registry} configuration can cause a slight pause.
 Try to @code{(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 @code{:tree} entry but only @code{:directory} entries
+or shallow @code{:tree} entries.
+Or you can fix your implementation to not be quite that slow
+when recursing through directories.
 
 @item
 On Windows, only LispWorks supports proper default configuration pathnames