diff --git a/asdf.asd b/asdf.asd
index 96be43fc73e80f80faeb3b469da1b2000dcb84e7..5462a7cb8d1fe0e4a25a52c5a2d19555f5ba0c6b 100644
--- a/asdf.asd
+++ b/asdf.asd
@@ -74,7 +74,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "2.29.5" ;; to be automatically updated by make bump-version
+  :version "2.29.6" ;; to be automatically updated by make bump-version
   :depends-on ()
   #+asdf3 :encoding #+asdf3 :utf-8
   ;; For most purposes, asdf itself specially counts as a builtin system.
diff --git a/filesystem.lisp b/filesystem.lisp
index 669144a6426fa1fd2de31098fd18cf8149372ff3..6ccecc07102b4f25a58b6d0a31cea666a0e05b46 100644
--- a/filesystem.lisp
+++ b/filesystem.lisp
@@ -88,47 +88,48 @@ or the original (parsed) pathname if it is false (the default)."
         (null nil)
         (string (probe-file* (parse-namestring p) :truename truename))
         (pathname
-         (handler-case
-             (or
-              #+allegro
-              (probe-file p :follow-symlinks truename)
-              #-(or allegro clisp gcl2.6)
-              (if truename
-                  (probe-file p)
-                  (and (not (wild-pathname-p p))
+         (and (not (wild-pathname-p p))
+              (handler-case
+                  (or
+                   #+allegro
+                   (probe-file p :follow-symlinks truename)
+                   #-(or allegro clisp gcl2.6)
+                   (if truename
+                       (probe-file p)
                        (ignore-errors
                         (let ((pp (translate-logical-pathname p)))
-                          #+(or cmu scl) (unix:unix-stat (ext:unix-namestring pp))
-                          #+(and lispworks unix) (system:get-file-stat pp)
-                          #+sbcl (sb-unix:unix-stat (sb-ext:native-namestring pp))
-                          #-(or cmu (and lispworks unix) sbcl scl) (file-write-date pp)))
-                       p))
-              #+(or clisp gcl2.6)
-              #.(flet ((probe (probe)
-                         `(let ((foundtrue ,probe))
-                            (cond
-                              (truename foundtrue)
-                              (foundtrue p)))))
-                  #+gcl2.6
-                  (probe '(or (probe-file p)
-                           (and (directory-pathname-p p)
-                            (ignore-errors
-                             (ensure-directory-pathname
-                              (truename* (subpathname
-                                          (ensure-directory-pathname p) ".")))))))
-                  #+clisp
-                  (let* ((fs (find-symbol* '#:file-stat :posix nil))
-                         (pp (find-symbol* '#:probe-pathname :ext nil))
-                         (resolve (if pp
-                                      `(ignore-errors (,pp p))
-                                      '(or (truename* p)
-                                        (truename* (ignore-errors (ensure-directory-pathname p)))))))
-                    (if fs
-                        `(if truename
-                             ,resolve
-                             (and (ignore-errors (,fs p)) p))
-                        (probe resolve)))))
-           (file-error () nil))))))
+                          (and
+                           #+(or cmu scl) (unix:unix-stat (ext:unix-namestring pp))
+                           #+(and lispworks unix) (system:get-file-stat pp)
+                           #+sbcl (sb-unix:unix-stat (sb-ext:native-namestring pp))
+                           #-(or cmu (and lispworks unix) sbcl scl) (file-write-date pp)
+                           p))))
+                   #+(or clisp gcl2.6)
+                   #.(flet ((probe (probe)
+                              `(let ((foundtrue ,probe))
+                                 (cond
+                                   (truename foundtrue)
+                                   (foundtrue p)))))
+                       #+gcl2.6
+                       (probe '(or (probe-file p)
+                                (and (directory-pathname-p p)
+                                 (ignore-errors
+                                  (ensure-directory-pathname
+                                   (truename* (subpathname
+                                               (ensure-directory-pathname p) ".")))))))
+                       #+clisp
+                       (let* ((fs (find-symbol* '#:file-stat :posix nil))
+                              (pp (find-symbol* '#:probe-pathname :ext nil))
+                              (resolve (if pp
+                                           `(ignore-errors (,pp p))
+                                           '(or (truename* p)
+                                             (truename* (ignore-errors (ensure-directory-pathname p)))))))
+                         (if fs
+                             `(if truename
+                                  ,resolve
+                                  (and (ignore-errors (,fs p)) p))
+                             (probe resolve)))))
+                (file-error () nil)))))))
 
   (defun directory* (pathname-spec &rest keys &key &allow-other-keys)
     (apply 'directory pathname-spec
diff --git a/header.lisp b/header.lisp
index d280eff4845be652d44bb38b7a06fb9c4e3296de..87a38b2682c895ab86a960f799b0c6853308404e 100644
--- a/header.lisp
+++ b/header.lisp
@@ -1,5 +1,5 @@
 ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
-;;; This is ASDF 2.29.5: Another System Definition Facility.
+;;; This is ASDF 2.29.6: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
diff --git a/test/script-support.lisp b/test/script-support.lisp
index 3f874dec1d686fdc9c32f86040793e157e8961c9..5b3d083d1f817bfd9e051088380fa60edf8bb812 100644
--- a/test/script-support.lisp
+++ b/test/script-support.lisp
@@ -31,9 +31,9 @@ Some constraints:
 
 (in-package :asdf-test)
 
-(declaim (optimize (speed 2) (safety 3) #-(or allegro gcl) (debug 3)
+(declaim (optimize (speed 2) (safety 3) #-(or allegro gcl genera) (debug 3)
 		   #+(or cmu scl) (c::brevity 2)))
-(proclaim '(optimize (speed 2) (safety 3) #-(or allegro gcl) (debug 3)
+(proclaim '(optimize (speed 2) (safety 3) #-(or allegro gcl genera) (debug 3)
 		     #+(or cmu scl) (c::brevity 2)))
 
 (defvar *trace-symbols*
@@ -154,7 +154,8 @@ Some constraints:
 (defparameter *test-directory*
   (truename
    (make-pathname :name nil :type nil :version nil
-                  :defaults (or *load-pathname* *compile-file-pathname*))))
+                  :defaults (or *load-pathname* *compile-file-pathname* *default-pathname-defaults*))))
+(format t "bye, world~%")
 (defun make-sub-pathname (&rest keys &key defaults &allow-other-keys)
   (merge-pathnames (apply 'make-pathname keys) defaults))
 (defun relative-dir (&rest dir) #-gcl (cons ':relative dir) #+gcl dir)
diff --git a/upgrade.lisp b/upgrade.lisp
index a2ddae0d2fd6fe7ba9dc2fc4f940815e54e51a51..41d08469ed901c49ecf7934e909d9ab09b5f363a 100644
--- a/upgrade.lisp
+++ b/upgrade.lisp
@@ -52,7 +52,7 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
          ;; "3.4.5.67" would be a development version in the official upstream of 3.4.5.
          ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
          ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
-         (asdf-version "2.29.5")
+         (asdf-version "2.29.6")
          (existing-version (asdf-version)))
     (setf *asdf-version* asdf-version)
     (when (and existing-version (not (equal asdf-version existing-version)))
diff --git a/version.lisp-expr b/version.lisp-expr
index 04e55380d98788cb6659c8f1d0113179a1ec354e..7453216f1c01ab596acd891b535f52740248f1ac 100644
--- a/version.lisp-expr
+++ b/version.lisp-expr
@@ -1 +1 @@
-"2.29.5"
+"2.29.6"