diff --git a/action.lisp b/action.lisp
index 247569753dee08a25a895b6249cf3104c84fd20a..61eeb776063f95b911ec6a2ed0702be759bb38d4 100644
--- a/action.lisp
+++ b/action.lisp
@@ -19,7 +19,7 @@
    #:input-files #:output-files #:output-file #:operation-done-p
    #:action-status #:action-stamp #:action-done-p
    #:component-operation-time #:mark-operation-done #:compute-action-stamp
-   #:perform #:perform-with-restarts #:retry #:accept))
+   #:perform #:perform-with-restarts #:retry #:accept #:feature))
 (in-package :asdf/action)
 
 (deftype action () '(cons operation component)) ;; a step to be performed while building the system
diff --git a/asdf.asd b/asdf.asd
index ff40eae5244c339b4d319fd1ad2b2d31e0bd05a5..2a0e709d9a3a5a1923256de3b9f6e6565388b173 100644
--- a/asdf.asd
+++ b/asdf.asd
@@ -15,7 +15,7 @@
   :licence "MIT"
   :description "Another System Definition Facility"
   :long-description "ASDF builds Common Lisp software organized into defined systems."
-  :version "2.26.92" ;; to be automatically updated by bin/bump-revision
+  :version "2.26.93" ;; to be automatically updated by bin/bump-revision
   :depends-on ()
   :components ((:module "build" :components ((:file "asdf"))))
   :in-order-to (#+asdf2.27 (compile-op (monolithic-load-concatenated-source-op generate-asdf))))
diff --git a/compatibility.lisp b/compatibility.lisp
index f5b62c6dfbb27620fca24665d2ca5fcddfb9aff9..c7304306dd2a4006351caa2790b99bb1ff3d3277 100644
--- a/compatibility.lisp
+++ b/compatibility.lisp
@@ -35,14 +35,12 @@
 
 #+allegro
 (eval-when (:load-toplevel :compile-toplevel :execute)
-  (setf excl::*autoload-package-name-alist*
-        (remove "asdf" excl::*autoload-package-name-alist*
-                :test 'equalp :key 'car)) ; need that BEFORE any mention of package ASDF as below
   (defparameter *acl-warn-save*
     (when (boundp 'excl:*warn-on-nested-reader-conditionals*)
       excl:*warn-on-nested-reader-conditionals*))
   (when (boundp 'excl:*warn-on-nested-reader-conditionals*)
-    (setf excl:*warn-on-nested-reader-conditionals* nil)))
+    (setf excl:*warn-on-nested-reader-conditionals* nil))
+  (setf *print-readably* nil))
 
 #+ecl
 (eval-when (:load-toplevel :compile-toplevel :execute)
diff --git a/concatenate-source.lisp b/concatenate-source.lisp
index 2a1a0b60bfb6ccbcfd49fd94d65d2376c232c83e..fa784368d2c8ccce095fe3c48a271f35a72e48f1 100644
--- a/concatenate-source.lisp
+++ b/concatenate-source.lisp
@@ -5,8 +5,9 @@
   (:recycle :asdf/concatenate-source :asdf)
   (:intern #:translate-output-p #:concatenated-source-file)
   (:use :common-lisp :asdf/utility :asdf/stream
-        :asdf/component :asdf/operation :asdf/system :asdf/find-system :asdf/defsystem
-        :asdf/action :asdf/lisp-action :asdf/bundle)
+   :asdf/upgrade :asdf/component :asdf/operation
+   :asdf/system :asdf/find-system :asdf/defsystem
+   :asdf/action :asdf/lisp-action :asdf/bundle)
   (:export
    #:concatenate-source-op
    #:load-concatenated-source-op
diff --git a/defsystem.lisp b/defsystem.lisp
index 8efea30a8d349fe62541f85520cf9a8546209b10..d1a2f2f2225d425d56f12882b5136375cbf2fe4c 100644
--- a/defsystem.lisp
+++ b/defsystem.lisp
@@ -4,8 +4,8 @@
 (asdf/package:define-package :asdf/defsystem
   (:recycle :asdf/defsystem :asdf)
   (:use :common-lisp :asdf/utility :asdf/pathname :asdf/stream
-   :asdf/component :asdf/system :asdf/find-system :asdf/find-component
-   :asdf/lisp-action :asdf/operate
+   :asdf/upgrade :asdf/component :asdf/system
+   :asdf/find-system :asdf/find-component :asdf/lisp-action :asdf/operate
    :asdf/backward-internals)
   #+gcl<2.7 (:shadowing-import-from :asdf/compatibility #:type-of)
   (:export
diff --git a/header.lisp b/header.lisp
index 360abf0b1cf7c6710de202479b3880f377689d06..efc53eb1519cbfa4ec8306d9993de7e9bf88ff01 100644
--- a/header.lisp
+++ b/header.lisp
@@ -1,5 +1,5 @@
 ;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; coding: utf-8 -*-
-;;; This is ASDF 2.26.92: Another System Definition Facility.
+;;; This is ASDF 2.26.93: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
diff --git a/interface.lisp b/interface.lisp
index 5f4544cdc8ad07c5d4f45c9c482a4217400a50bc..1a5e77e36e01f5e439dfdda5f4278da685593507 100644
--- a/interface.lisp
+++ b/interface.lisp
@@ -5,7 +5,7 @@
   (:nicknames :asdf :asdf-utilities)
   (:recycle :asdf/interface :asdf)
   (:unintern
-   #:*asdf-revision* #:around #:asdf-method-combination #:intern*
+   #:*asdf-revision* #:around #:asdf-method-combination
    #:do-traverse #:do-dep #:do-one-dep #:visit-action #:component-visited-p
    #:split #:make-collector
    #:loaded-systems ; makes for annoying SLIME completion
@@ -17,6 +17,8 @@
    :asdf/output-translations :asdf/source-registry
    :asdf/plan :asdf/operate :asdf/defsystem :asdf/bundle :asdf/concatenate-source
    :asdf/backward-interface)
+  (:shadowing-import-from :asdf/package
+   :find-symbol* #:intern*)
   ;; TODO: automatically generate interface by merging select used packages?
   (:export
    #:defsystem #:find-system #:locate-system #:coerce-name
diff --git a/lisp-action.lisp b/lisp-action.lisp
index 70911cb632aa21859e025f19f23c12eb26d99eab..95835092ab82ff5713727452a82cac6c091592e3 100644
--- a/lisp-action.lisp
+++ b/lisp-action.lisp
@@ -5,7 +5,7 @@
   (:recycle :asdf/lisp-action :asdf)
   (:intern #:proclamations #:flags)
   (:use :common-lisp :asdf/compatibility :asdf/utility :asdf/lisp-build
-   :asdf/component :asdf/system :asdf/find-component :asdf/operation :asdf/action)
+   :asdf/upgrade :asdf/component :asdf/system :asdf/find-component :asdf/operation :asdf/action)
   (:export
    #:compile-error #:compile-failed #:compile-warned #:try-recompiling
    #:cl-source-file #:cl-source-file.cl #:cl-source-file.lsp
diff --git a/os.lisp b/os.lisp
index 253e17d0b980b3bd078caa9e5cc57b07c2804110..6b2c037c2563b0ee83a8b286a41599ad48df415d 100644
--- a/os.lisp
+++ b/os.lisp
@@ -199,7 +199,7 @@ then returning the non-empty string value of the variable"
   ;; Note: untested on RMCL
   #+(or abcl clozure cmucl ecl genera lispworks mcl mkcl sbcl scl xcl) (machine-instance)
   #+cormanlisp "localhost" ;; is there a better way? Does it matter?
-  #+allegro (excl.osi:gethostname)
+  #+allegro (symbol-call :excl.osi :gethostname)
   #+clisp (first (split-string (machine-instance) :separator " "))
   #+gcl (system:gethostname))
 
diff --git a/output-translations.lisp b/output-translations.lisp
index f4702b5b71be20120dd649a77085a8ad961a0ad6..fd0d60c09c5d5301365cf932ba9532847795f4c1 100644
--- a/output-translations.lisp
+++ b/output-translations.lisp
@@ -5,7 +5,7 @@
   (:recycle :asdf/output-translations :asdf)
   (:use :common-lisp :asdf/utility :asdf/pathname :asdf/os :asdf/lisp-build :asdf/upgrade :asdf/configuration)
   (:export
-   #:*output-translations* #:*output-translation-parameter*
+   #:*output-translations* #:*output-translations-parameter*
    #:invalid-output-translation
    #:output-translations #:output-translations-initialized-p
    #:initialize-output-translations #:clear-output-translations
diff --git a/package.lisp b/package.lisp
index 905a8aabd8b672bcbeff1515c5b200f512f49e8c..cc5472b195ec13771d4adc3cf95521002947c1e1 100644
--- a/package.lisp
+++ b/package.lisp
@@ -284,11 +284,14 @@ or when loading the package is optional."
 ;;; ensure-package, define-package
 
 (eval-when (:load-toplevel :compile-toplevel :execute)
-  (defvar *all-package-fishiness* '(t))
+  (defvar *all-package-happiness* '())
+  (defvar *all-package-fishiness* (list t))
   (defvar *package-fishiness* '())
   (defun flush-fishy ()
     (when *package-fishiness*
-      (push (nreverse *package-fishiness*) *all-package-fishiness*)
+      (if (null (rest *package-fishiness*))
+          (push (first *package-fishiness*) *all-package-happiness*)
+          (push (nreverse *package-fishiness*) *all-package-fishiness*))
       (setf *package-fishiness* nil)))
   (defun record-fishy (info)
     (push info *package-fishiness*))
@@ -570,9 +573,16 @@ or when loading the package is optional."
                (foo))
      (apply 'ensure-package ',(parse-define-package-form package clauses))))
 
-#+clisp
-(eval-when (:compile-toplevel :load-toplevel :execute)
+
+;;; Final tricks to keep various implementations happier
+(eval-when (:load-toplevel :compile-toplevel :execute)
+  #+allegro
+  (setf excl::*autoload-package-name-alist*
+        (remove "asdf" excl::*autoload-package-name-alist*
+                :test 'equalp :key 'car)) ; We need that BEFORE any mention of package ASDF.
   (unless (member :asdf2.27 *features*)
-    (when (find-package :asdf)
-      (delete-package* :asdf t))
-    (make-package :asdf :use ())))
+    #+clisp
+    (progn
+      (when (find-package :asdf)
+        (delete-package* :asdf t))
+      (make-package :asdf :use ()))))
diff --git a/source-registry.lisp b/source-registry.lisp
index b5de6f38ce8fc18e09a5bc2e474981991b6545f7..47b08c54cb5c82aea1cb52b5a9a2444ff095fc71 100644
--- a/source-registry.lisp
+++ b/source-registry.lisp
@@ -289,10 +289,14 @@ with a different configuration, so the configuration would be re-read then."
 (defvar *source-registry-parameter* nil)
 
 (defun* initialize-source-registry (&optional (parameter *source-registry-parameter*))
-  #-clisp ;; CLISP really hates our package munging. Don't try to load it twice.
-  (setf *asdf-upgrade-already-attempted* nil) ;; in case a new ASDF appears in the registry
+  ;; In case we haven't upgraded ASDF yet, and it appears in the registry,
+  ;; clear the upgrade attempt flag:
+  (setf *asdf-upgrade-already-attempted* (not *upgraded-p*))
+  ;; Record the parameter used to configure the registry 
   (setf *source-registry-parameter* parameter)
+  ;; Clear the previous registry database:
   (setf *source-registry* (make-hash-table :test 'equal))
+  ;; Do it!
   (compute-source-registry parameter))
 
 ;; Checks an initial variable to see whether the state is initialized
diff --git a/system.lisp b/system.lisp
index c8d15b251efd4cb0e7ecd135c732a211e678ddef..ef8b86a24933d58144694410133c9ff5033a955e 100644
--- a/system.lisp
+++ b/system.lisp
@@ -83,13 +83,13 @@
 (defclass proto-system () ; slots to keep when resetting a system
   ;; To preserve identity for all objects, we'd need keep the components slots
   ;; but also to modify parse-component-form to reset the recycled objects.
-  ((asdf/component::name) (source-file) #|(children) (children-by-names)|#))
+  ((name) (source-file) #|(children) (children-by-names)|#))
 
 (defclass system (module proto-system)
   ;; Backward-compatibility: inherit from module. ASDF3: only inherit from parent-component.
   (;; {,long-}description is now inherited from component, but we add the legacy accessors
-   (asdf/component::description :accessor system-description)
-   (asdf/component::long-description :accessor system-long-description)
+   (description :accessor system-description)
+   (long-description :accessor system-long-description)
    (author :accessor system-author :initarg :author)
    (maintainer :accessor system-maintainer :initarg :maintainer)
    (licence :accessor system-licence :initarg :licence
@@ -105,8 +105,8 @@
 ;;;; Pathnames
 
 (defmethod component-pathname ((system system))
-  (if (or (slot-boundp system 'asdf/component::relative-pathname)
-            (slot-boundp system 'asdf/component::absolute-pathname)
+  (if (or (slot-boundp system 'relative-pathname)
+            (slot-boundp system 'absolute-pathname)
             (slot-value system 'source-file))
     (call-next-method)
     (default-directory)))
diff --git a/test/run-tests.sh b/test/run-tests.sh
index 1d512654798a2858517491cc6b12bef7dc6fd7a7..d8969012a1474292077dfb20e7306c0da17270c9 100755
--- a/test/run-tests.sh
+++ b/test/run-tests.sh
@@ -114,7 +114,7 @@ case "$lisp" in
     eval="--eval" ;;
   allegro)
     command="${ALLEGRO:-alisp}"
-    flags="-q"
+    #flags="-q"
     nodebug="-batch"
     eval="-e" ;;
   allegromodern)
diff --git a/test/script-support.lisp b/test/script-support.lisp
index fa179cff3a16e855a6b1a3a60ea70eccfe2ffe0c..5393fa8ec03d13d65eab956a75f763286f09b1a7 100644
--- a/test/script-support.lisp
+++ b/test/script-support.lisp
@@ -40,8 +40,11 @@ Some constraints:
 
 ;;; Minimal compatibility layer
 (eval-when (:compile-toplevel :load-toplevel :execute)
-  #+allegro (setf excl:*warn-on-nested-reader-conditionals* nil)
-
+  #+allegro
+  (setf excl:*warn-on-nested-reader-conditionals* nil
+        excl::*autoload-package-name-alist*
+        (remove "asdf" excl::*autoload-package-name-alist*
+                :test 'equalp :key 'car)) ; We need that BEFORE any mention of package ASDF.
   #+gcl
   (when (or (< system::*gcl-major-version* 2)
             (and (= system::*gcl-major-version* 2)
diff --git a/upgrade.lisp b/upgrade.lisp
index 90bcf1d45ffc96348c55acd48651157955c42067..ea5b1744c77ef1df0d53b05d9fe78b1a812118e6 100644
--- a/upgrade.lisp
+++ b/upgrade.lisp
@@ -10,7 +10,10 @@
    #:*asdf-upgrade-already-attempted*
    #:*post-upgrade-cleanup-hook* #:*post-upgrade-restart-hook* #:cleanup-upgraded-asdf
    #:asdf-version #:*upgraded-p*
-   #:asdf-message #:*asdf-verbose* #:*verbose-out*))
+   #:asdf-message #:*asdf-verbose* #:*verbose-out*
+   ;; There will be no symbol left behind!
+   #:o #:c #:dep-o #:dep-c #:intern*)
+  (:import-from :asdf/package #:intern* #:find-symbol*))
 (in-package :asdf/upgrade)
 
 ;;; Special magic to detect if this is an upgrade
@@ -32,7 +35,7 @@
          ;; "2.345.6" would be a development version in the official upstream
          ;; "2.345.0.7" would be your seventh local modification of official release 2.345
          ;; "2.345.6.7" would be your seventh local modification of development version 2.345.6
-         (asdf-version "2.26.92")
+         (asdf-version "2.26.93")
          (existing-asdf (find-class (find-symbol* :component :asdf nil) nil))
          (existing-version *asdf-version*)
          (already-there (equal asdf-version existing-version)))
diff --git a/utility.lisp b/utility.lisp
index 9d03d59fc4a997b25126da174941a28fa042c19f..b42f24f23e89ea98f78dfd31133a2dd5d7464780 100644
--- a/utility.lisp
+++ b/utility.lisp
@@ -51,6 +51,7 @@
     ((defdef (def* def)
        `(defmacro ,def* (name formals &rest rest)
           `(progn
+             #-clisp ;; clisp is unhappy about fmakunbound.
              (undefine-function ',name)
              #-gcl ; gcl 2.7.0 notinline functions lose secondary return values :-(
              ,@(when (and #+ecl (symbolp name)) ; fails for setf functions on ecl
diff --git a/version.lisp-expr b/version.lisp-expr
index f27308924c61f5f48d1352a0e859aa244970687b..91cc49c04c96e9108fc26059ca9c3942a324dddb 100644
--- a/version.lisp-expr
+++ b/version.lisp-expr
@@ -1 +1 @@
-"2.26.92"
+"2.26.93"