From 4afe446bb39765f01ddf2de51c51492d9a7094bc Mon Sep 17 00:00:00 2001
From: Francois-Rene Rideau <tunes@google.com>
Date: Tue, 11 Feb 2014 14:33:41 -0500
Subject: [PATCH] More TODO updates, notably on cross-compilation. Mention the
 walkthrough in the documentation.

---
 TODO           | 62 ++++++++++++++++++++++++++++++++++++--------------
 doc/index.html |  3 +++
 2 files changed, 48 insertions(+), 17 deletions(-)

diff --git a/TODO b/TODO
index 47cfd23d..5607b475 100644
--- a/TODO
+++ b/TODO
@@ -27,16 +27,26 @@
    but still require loading the defsystem-depends-on dependencies:
    on the target:
 
-   (defmethod perform-forms ((target null) operation component)
-     ;; null target designates current image
-     `((asdf:perform ',op ',comp)))
-   (defmethod perform-forms ((target external-target) operation component)
-     ;; external target means a cross compiler
-     `((require :asdf)
-       (map () 'asdf:load-system '(,defsystem-deps))
+   ;; null means the target is the current host.
+   ;; Or should the base class be plan-traversal or such?
+   (defmethod perform-form ((target null) operation component)
+     ;; :host means execute on the host. () is empty options.
+     `(:host () (asdf:perform ',op ',comp)))
+
+   ;; external-target means a cross compiler that we spawn.
+   (defmethod perform-form ((target external-target) operation component)
+     `(:target ;; who is to execute that? the target Lisp.
+       ;; options for the performing system:
+       (:depends-on ,(defsystem-dependencies
+                      (component-system component)))
+       ;; The actual forms to evaluate
        (asdf:perform ,(fake-operation-form operation)
                      ,(fake-component-form component))))
 
+   By specifying :host-common-lisp you can have forms run on the host.
+   By specifying :run-program, you can spawn a subprocess without
+   having to first spawn a Lisp that will call run-program. etc.
+
    The other way around the default perform method could be:
 
    (defmethod perform ((o t) (c t))
@@ -66,6 +76,13 @@
    they can keep the perform method to run on older versions of ASDF.
 ** Modify SBCL and other implementations so they provide UIOP
    independently from ASDF?
+** The default perform-plan method could iterate over pre-computed forms,
+   in a way that does not involve the ASDF object model anymore,
+   making ASDF friendlier to self-upgrades.
+   Then, ASDF wouldn't need to be concatenated during upgrade
+   — but should still concatenate for bootstrap purposes,
+   when require'ing it as an implementation-provided module,
+   compiling from ASDF 2, or otherwise distributing as a single file.
 
 * Implementation bugs
 ** CMUCL has bugs:
@@ -128,6 +145,11 @@
 
 ** Find out why ABCL fails the timestamp propagation test.
 
+** ECL has issues with its bundles.
+   On MacOS X, test-bundle.script fails.
+   On Linux, test-program.script fails with recent ECL 237af2e,
+   but used to work quite fine earlier in 2013.
+
 * Find an easier way to bind variables around compilation and loading of files
 
 * Design & Implement some out-of-line configuration mechanism for various options?
@@ -137,10 +159,12 @@
   * Use the above variable binding mechanism.
 
 * Fix bugs on http://bugs.launchpad.net/asdf/+bugs
+** fix directory-files to not return directories on CCL, etc. Add tests.
 
-* fix directory-files to not return directories on CCL, etc. Add tests.
-
-* use cl-test-grid to see if asdf-user can :use most (all?) of UIOP.
+* Learn to use cl-grid-test
+** So we can easily make sure ASDF changes don't break stuff,
+   and that breakage gets fixed quickly.
+** So we see if ASDF-USER can :use most (all?) of UIOP.
   SB-GROVEL used (until 25c1769 from 2013-02-23) to :use both ASDF and
   SB-EXT, which prevents ASDF from exporting RUN-PROGRAM, but
   should not be a problem with ASDF-USER :use'ing UIOP.
@@ -149,13 +173,14 @@
 
 * have a mode to explain WHY a component needs to be recompiled.
 
-* have a better defsystem form verifier - see lp#1007335
-
-* have a function verify-strict-asd that can verify a asd is pure lp#541562
+* Improve robustness
+** have a better defsystem form verifier - see lp#1007335
+** have a function verify-strict-asd that can verify a asd is pure lp#541562
   Then if it passes, use load-strict-asd.
   If not, optionally issue a warning. Start migrating people toward that.
 
 * have with-input-file use the encodings mechanism?
+** Import asdf-encodings into UIOP? Sounds a lot of code for no users.
 
 * have a single test .asd that tests as many features as possible, use it for upgrade test.
 
@@ -164,12 +189,15 @@
 ** At least document the issue.
 ** Real solution: defer parsing and evaluation of defsystem forms.
 
-* Learn to use cl-grid-test, to make sure ASDF changes don't break stuff,
- and that breakage gets fixed quickly.
-
 * Include some ABL test for stassats's (now obsolete?) thing:
    (asdf:enable-asdf-binary-locations-compatibility
-    :centralize-lisp-binaries t :default-toplevel-directory *fasl-dir*)
+    :centralize-lisp-binaries t :default-toplevel-directory
+   *fasl-dir*)
+** Or deprecate and remove ABL compatibility altogether?
+   No one has been using ASDF1 for years.
+   There is no ABL to be compatible with —
+   is anyone still using the compatibility mode?
+   Maybe issue a warning, then a cerror, before to remove the code?
 
 * Make load-op a generic operation that selects the proper strategy
   for each system, module or file, according to component properties and user-configuration:
diff --git a/doc/index.html b/doc/index.html
index 9aa2f8eb..ef977d7a 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -232,6 +232,9 @@ Peter Graves <gnooth@gmail.com> (XCL).
           or the slides of the
           <a href="https://github.com/fare/asdf3-2013/blob/master/els-slides.org"
              >ASDF 3 tutorial</a> presented at ELS 2013.
+          For an introduction to the source code, see also this video:
+          <a href="https://www.youtube.com/watch?v=Qqqbc31ZZ-U">ASDF3.1 walkthrough</a>.
+        </p>
         <p>Finally, while the manual covers all the basics,
           some advanced or new features remain underdocumented.
           Please contact our mailing-list (see below)
-- 
GitLab