diff --git a/asdf.asd b/asdf.asd
index 86c779a330a1807538bc80a8e9b0f95f246875f2..624802b55a59d32097b33ef0f5a1658cdfe393b1 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 "3.0.2.7" ;; to be automatically updated by make bump-version
+  :version "3.0.2.8" ;; 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/header.lisp b/header.lisp
index 7261cc10e5effb1dccd271f9b6b3da5452ad50d7..ff61df9f8afcc2e26de05f2ada37d692bda36c74 100644
--- a/header.lisp
+++ b/header.lisp
@@ -1,5 +1,5 @@
 ;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
-;;; This is ASDF 3.0.2.7: Another System Definition Facility.
+;;; This is ASDF 3.0.2.8: Another System Definition Facility.
 ;;;
 ;;; Feedback, bug reports, and patches are all welcome:
 ;;; please mail to <asdf-devel@common-lisp.net>.
diff --git a/test/test-around-compile-lambda.script.dont-run b/test/test-around-compile-lambda.script.dont-run
deleted file mode 100644
index 767a94d5d1a2226dbef596cc0826108f90abee84..0000000000000000000000000000000000000000
--- a/test/test-around-compile-lambda.script.dont-run
+++ /dev/null
@@ -1,12 +0,0 @@
-;;; -*- Lisp -*-
-
-
-(progn
-  (def-test-system test-around-compile-lambda
-    :around-compile (lambda (thunk)
-                      (let ((*read-base* 2))
-                        (funcall thunk)))
-    ;; :depends-on ((:version :asdf "2.017.18")) ; no :around-compile before that.
-    :components ((:file "test")))
-  (load-system 'test-around-compile-lambda :force t)
-  (assert (= 3 (funcall 'add10 1)))) ;; add10 must have been compiled in base 2
diff --git a/test/test-around-compile.script b/test/test-around-compile.script
index babd00e304dabede8d6e3a480ef539c54680b528..33e8fcac76b5fc4eba4ed2d3e15345ef670261e0 100644
--- a/test/test-around-compile.script
+++ b/test/test-around-compile.script
@@ -1,15 +1,24 @@
 ;;; -*- Lisp -*-
 
-
-
 (defun call-in-base-2 (thunk)
   (let ((*read-base* 2))
     (funcall thunk)))
 
-(progn
-  (def-test-system test-around-compile
-    :around-compile call-in-base-2
-    ;; :depends-on ((:version :asdf "2.017.18")) ; no :around-compile before that.
-    :components ((:file "test")))
-  (load-system 'test-around-compile :force t)
-  (assert (= 3 (funcall 'add10 1)))) ;; add10 must have been compiled in base 2
+(DBG "Testing around-compile with a function name")
+(def-test-system test-around-compile
+  :around-compile call-in-base-2
+  ;; :depends-on ((:version :asdf "2.017.18")) ; no :around-compile before that.
+  :components ((:file "test")))
+(load-system 'test-around-compile :force t)
+(assert (= 3 (funcall 'add10 1))) ;; add10 must have been compiled in base 2
+
+(fmakunbound 'add10)
+
+(DBG "Testing around-compile with a lambda")
+(def-test-system test-around-compile-lambda
+  :around-compile (lambda (thunk)
+                    (let ((*read-base* 2))
+                      (funcall thunk)))
+  :components ((:file "test")))
+(load-system 'test-around-compile-lambda :force t)
+(assert (= 3 (funcall 'add10 1))) ;; add10 must have been compiled in base 2
diff --git a/test/test-run-program.script b/test/test-run-program.script
index 98a74c5dad001779d16a3eb6ebae39ce48de17a6..52934f6b4856c867b3f504459579ddba44f68353 100644
--- a/test/test-run-program.script
+++ b/test/test-run-program.script
@@ -19,7 +19,7 @@
 (unless (< 0 (run-shell-command "./bad-shell-command"))
   (error "Failed to capture exit status indicating shell command failure."))
 
-#+asdf-unix
+#+os-unix
 (progn
   (DBG "Testing good shell command in current directory via run-shell-command")
   (unless (equal 0 (run-shell-command "./good-shell-command"))
diff --git a/uiop/run-program.lisp b/uiop/run-program.lisp
index 3309d5bb413a999c0b9125902a8ce83b54c7a7fe..5e2693946395c28c7e778ca2c39bdecbba7f8077 100644
--- a/uiop/run-program.lisp
+++ b/uiop/run-program.lisp
@@ -414,7 +414,7 @@ EXTERNAL-FORMAT for the stream passed to the OUTPUT processor."
                              process))))))
              (system-command (command)
                (etypecase command
-                 (string (if (os-windows-p) (format nil "cmd /c ~A" command) command))
+                 (string command)
                  (list (escape-shell-command
                         (if (os-unix-p) (cons "exec" command) command)))))
              (redirected-system-command (command out)
diff --git a/uiop/utility.lisp b/uiop/utility.lisp
index ab0b99c756396c95fe5336dc3c2def375476f89f..685859bf55debc6f1b3f3981307bb6ebec215851 100644
--- a/uiop/utility.lisp
+++ b/uiop/utility.lisp
@@ -318,14 +318,17 @@ If the FUN is a non-sequence literal constant, return constantly that,
 i.e. for a boolean keyword character number or pathname.
 Otherwise if FUN is a non-literally constant symbol, return its FDEFINITION.
 If FUN is a CONS, return the function that applies its CAR
-to the appended list of the rest of its CDR and the arguments.
+to the appended list of the rest of its CDR and the arguments,
+unless the CAR is LAMBDA, in which case the expression is evaluated.
 If FUN is a string, READ a form from it in the specified PACKAGE (default: CL)
 and EVAL that in a (FUNCTION ...) context."
     (etypecase fun
       (function fun)
       ((or boolean keyword character number pathname) (constantly fun))
       ((or function symbol) fun)
-      (cons #'(lambda (&rest args) (apply (car fun) (append (cdr fun) args))))
+      (cons (if (eq 'lambda (car fun))
+                (eval fun)
+                #'(lambda (&rest args) (apply (car fun) (append (cdr fun) args)))))
       (string (eval `(function ,(with-standard-io-syntax
                                   (let ((*package* (find-package package)))
                                     (read-from-string fun))))))))
diff --git a/upgrade.lisp b/upgrade.lisp
index a8ed6efad46505ba32940f38b3b567720612a9eb..85a06f2f0232bdcd0146ea04517ab82588f13cf9 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 "3.0.2.7")
+         (asdf-version "3.0.2.8")
          (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 4011e8786c41bd5917d3ca311e79cf686557bc87..5c126c496b2249860fa54a22e240bb78bd4b9b2d 100644
--- a/version.lisp-expr
+++ b/version.lisp-expr
@@ -1,2 +1,2 @@
-"3.0.2.7"
+"3.0.2.8"