diff --git a/asdf.asd b/asdf.asd
index 6aea3707bc2d657590356cc67075ff81fef82774..f05ec5104d3a8643683c1e87b96323c3d64714a2 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.8" ;; to be automatically updated by make bump-version
+  :version "2.29.9" ;; 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/find-system.lisp b/find-system.lisp
index 1bc83f2a03eb26cc7781e6dc61bd17ebc361b275..bcdb16453b9085030aefaa4c6549f207d05dddaf 100644
--- a/find-system.lisp
+++ b/find-system.lisp
@@ -256,15 +256,17 @@ Going forward, we recommend new users should be using the source-registry.
   (defmacro with-system-definitions ((&optional) &body body)
     `(call-with-system-definitions #'(lambda () ,@body)))
 
-  (defun load-asd (pathname &key name (external-format (encoding-external-format (detect-encoding pathname))) &aux (readtable *readtable*))
+  (defun load-asd (pathname &key name (external-format (encoding-external-format (detect-encoding pathname))) &aux (readtable *readtable*) (print-pprint-dispatch *print-pprint-dispatch*))
     ;; Tries to load system definition with canonical NAME from PATHNAME.
     (with-system-definitions ()
       (with-standard-io-syntax
         (let ((*package* (find-package :asdf-user))
-              ;; Note that our backward-compatible readtable is
+              ;; Note that our backward-compatible *readtable* is
               ;; a global readtable that gets globally side-effected. Ouch.
+              ;; Same for the *print-pprint-dispatch* table.
               ;; We should do something about that for ASDF3 if possible, or else ASDF4.
               (*readtable* readtable)
+              (*print-pprint-dispatch* print-pprint-dispatch)
               (*print-readably* nil)
               (*default-pathname-defaults*
                 ;; resolve logical-pathnames so they won't wreak havoc in parsing namestrings.
diff --git a/header.lisp b/header.lisp
index 77df3ba2fac9bdf929be283d0e1cae8910d1fb85..37a0bcf214a04acfb8147a4114b7ff0d1fccd3b6 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.8: Another System Definition Facility.
+;;; This is ASDF 2.29.9: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
diff --git a/upgrade.lisp b/upgrade.lisp
index e82c9f131c65c93cbd13a37b843a8e39c553c85c..cbcd9055236a2a6194007d62e095624d31fc4b47 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.8")
+         (asdf-version "2.29.9")
          (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 7f57ae86817f9e34278c3ad2ef84c55e5a23bc49..83c8c00c1d5c5b98d8d64dc708cfb7e6fef25f4c 100644
--- a/version.lisp-expr
+++ b/version.lisp-expr
@@ -1 +1 @@
-"2.29.8"
+"2.29.9"