TODO 9.84 KB
Newer Older
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
1
* Decree that versions older than 2 years are not supported,
2
3
  remove them from upgrade tests. We should already not support
  anything older than 2.014.5 from Quicklisp, or so.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
4
5
  Yet, we should keep supporting upgrading from what vendors provide
  — so push them to provide recent stuff.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
6
7
8
9
10
11
12
13

* ASDF 3.2: moving toward cross-compilation.
   This would allow to get all or most of the benefits of XCVB
   (reproducibility, scalability, applicability to mobile platforms, etc.),
   except without the backward incompatibility of XCVB.
** Need to further split asdf:perform in two parts:
   A part that runs on the host and specifies (as SEXP or string to read)
   a form that must be evaluated on the target machine, not the host.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
14
15
16
17
   A trivial that runs on the target and doesn't require the network
   of objects related to the ASDF plan to be present,
   or even ASDF itself, for the matter (though UIOP, yes, for sanity).
** Audit all the current specializers of perform, and offer them a new way;
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
18
   they can keep the perform method to run on older versions of ASDF.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
19
20
** Modify SBCL and other implementations so they provide UIOP
   independently from ASDF?
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
21

22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
* CMUCL has bugs:
** In ASDF 2.32.13, sibling-dependencies is renamed to sideway-dependencies
   in defclass component, a superclass of system, and upgrade from
   2.32 or earlier thus fails with
   Error in function KERNEL:CLASS-TYPEP:  Class is currently invalid:
   #<KERNEL::STANDARD-CLASS ASDF/SYSTEM:SYSTEM {58398145}>
   in a direct call from ASDF/FIND-SYSTEM:LOCATE-SYSTEM,
   which suggests CMUCL's PCL fails to finalize classes properly.
** Non-default optimize settings may or may not subtly break PCL.
   For the longest time (from 2.26.136 to 3.1.0.42), ASDF had:
   (declaim (optimize (speed 1) (safety 3) (debug 3)))
   This form may or may not work around that breakage in some cases:
   (setf c::top-level-lambda-max 0)
** At some point there was massive breakage due to uninitialized slots
   as revealed in 3.1.0.37 with
   make t l=cmucl t=test-encodings.script
   which was a different PCL bug from the above (without same workaround)
   but possibly also triggered by the non-standard declaim.

41
42
43
44
45
46
47
* XCL has bad bugs:
  make-pathname doesn't handle :type nil properly and
  has massive lossage in logical-pathname support.
  If using block () and return in search-for-system-definition
  instead of return-from, XCL mistakenly has the return jump
  to the end of the try function or something.
  It also takes a long time for errors to propagate into a debugging REPL —
48
  Maybe O(n^3) behavior or worse in walking the C++ stack?
49
  The backtrace frames may contains unprintable objects.
50
  make-pathname fails to copy the version from the defaults.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
51
52
  (make-pathname :host "ASDFTEST" :directory '(:absolute "system2" "module4")
   :name nil :type nil) fails to handle the logical-pathname-ness of ASDFTEST.
53
54

* GCL is almost working again; but implementation bugs remain.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
  See November 2013 discussion on gcl-devel.
   * Another GCL compiler bug:
   when I changed the definition of getcwd from
   (let ((*default-pathname-defaults* #p"")) (truename #p"")) to
   (let ((*default-pathname-defaults* *nil-pathname*)) (truename *nil-pathname*))
   to guard against e.g. a logical-pathname context while loading asdf
   and parsing #p"", calls to getcwd result in a segfault.
   * An another bug: gcl refuses dynamic-extent declaration on functions.
    uiop/stream.lisp:         #-gcl (declare (dynamic-extent ,@(when
    before `(#',beforef)) ,@(when after `(#',afterf))))
   * (typep p 'logical-pathname) should be T if p has a logical-pathname host.
   * apropos is case-sensitive and returns a same symbol many times
   * compile-file fails to return proper secondary values in case of non-style WARNING.
   * (pathname-directory #p"foo/") is incorrectly ("foo") instead of (:RELATIVE "foo")
   * Missing: chdir, combine-fasls, and plenty more UIOP functions.
   * Do whatever it takes to pass the asdf tests, add the above?
   * Have (require "asdf") and (require "ASDF") both work.
   * Trying to uiop:slurp-stream-forms from a stream with #+(or) :foo
     (or read-file-forms from an file with same) results in an error,
     rather than nil. This is probably a bug in #+ processing.
     Unhappily, debian creates such a file in
     /etc/common-lisp/asdf-output-translations.conf.d/01-common-lisp-controller.conf
77

Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
78
* Some out-of-line configuration mechanism for various options?
79
  i.e. let configuration files override some variables around compilation of some systems.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
80
81
82

* Find an easier way to bind variables around compilation and loading of files

83
* Find out why ABCL fails the timestamp propagation test.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
84

85
* Fix bugs on http://bugs.launchpad.net/asdf/+bugs
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
86

87
* fix directory-files to not return directories on CCL, etc. Add tests.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
88

89
* use cl-test-grid to see if asdf-user can :use most (all?) of UIOP.
90
91
  Unhappily, on SBCL, sb-grovel uses asdf and sb-ext,
  which causes a clash with run-program.
92
  Or has this been changed long enough ago? Can it be special-cased?
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
93

Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
94
* have a mode to explain WHY a component needs to be recompiled.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
95

96
* have a better defsystem form verifier - see lp#1007335
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
97

98
99
100
* 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.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
101

102
* have with-input-file use the encodings mechanism?
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
103

104
* have a single test .asd that tests as many features as possible, use it for upgrade test.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
105

106
* implement deferred warnings support on lispworks
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
107

108
* work with cl-test-grid to eliminate deferred warnings from quicklisp libraries
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
109

Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
110
111
* fix upgrade on clisp, cmucl, abcl (if still broken)
** Extract minimal test case, build a battery of automated tests
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
112

113
* Bug found by fe[nl]ix: infinite loop if the definitions in an asd file
114
115
116
  are not in strict defsystem-depends-on dependency order.
** At least document the issue.
** Real solution: defer parsing and evaluation of defsystem forms.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
117

118
* Learn to use cl-grid-test, to make sure ASDF changes don't break stuff,
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
119
 and that breakage gets fixed quickly.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
120
121

* Include some ABL test for stassats's (now obsolete?) thing:
122
123
   (asdf:enable-asdf-binary-locations-compatibility
    :centralize-lisp-binaries t :default-toplevel-directory *fasl-dir*)
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
124

Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
125
126
* Make load-op a generic operation that selects the proper strategy
  for each system, module or file, according to component properties and user-configuration:
127
  compile the lisp file then load the fasl (load-fasl-op on a cl-source-file),
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
128
  load the lisp file without compiling (load-source-op),
129
130
  compile all files for the system, link them and load the result
   (load-fasl-op on the system),
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
131
132
133
134
  compile all files for the system *and* its dependencies, link and load (monolithic-load-fasl-op),
  concatenate all files for the system, then load the result (load-concatenated-source-op),
  concatenate all files for the system, then link them and load the result (load-compiled-concatenated-op),
  concatenate all files for the system *and* its dependencies, link and load (monolithic-load-compiled-concatenated-op).
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
135

136
137
* operation cleanup?
** Kill backward-compat functions after all clients have moved on.
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
138
** Kill original-initargs -- BEWARE, it currently has clients!
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
139

140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
* Get rid of component-properties
** directly use component-properties:
*** yaclml.asd => misguided :features for version comparison
*** amazon-ecs-20110418-git/amazon-ecs.asd => :website property
*** hemlock.asd => bad implementation of latin1 encodings
** .asd use :properties
*** arnesi, arnesi+ => :features, misguided for version comparison and pseudo #+features
*** lkcas, thopter => :long-name
*** cl-irc cliki-bot rss cl-syslog com.informatimago.clext
   com.informatimago.clisp com.informatimago.clmisc
   com.informatimago.common-lisp.arithmetic
   om.informatimago.common-lisp.bank
   com.informatimago.common-lisp.cesarum
   com.informatimago.common-lisp com.informatimago.common-lisp.csv
   com.informatimago.common-lisp.cxx
   com.informatimago.common-lisp.data-encoding
   com.informatimago.common-lisp.diagram
   com.informatimago.common-lisp.ed
   com.informatimago.common-lisp.graphviz
   com.informatimago.common-lisp.heap
   com.informatimago.common-lisp.html-base
   com.informatimago.common-lisp.html-generator
   com.informatimago.common-lisp.html-parser
   com.informatimago.common-lisp.http
   com.informatimago.common-lisp.interactive
   com.informatimago.common-lisp.invoice
   com.informatimago.common-lisp.lisp
   com.informatimago.common-lisp.lisp.ibcl
   com.informatimago.common-lisp.lisp.stepper
   com.informatimago.common-lisp.lisp-reader
   com.informatimago.common-lisp.lisp-sexp
   com.informatimago.common-lisp.lisp-text
   com.informatimago.common-lisp.parser
   com.informatimago.common-lisp.picture
   com.informatimago.common-lisp.regexp
   com.informatimago.common-lisp.rfc2822
   com.informatimago.common-lisp.rfc3548
   com.informatimago.common-lisp.telnet
   com.informatimago.common-lisp.unix
   linc
   com.informatimago.lispdoc
   com.informatimago.lua
   com.informatimago.cocoa-playground
   com.informatimago.objcl
   com.informatimago.rdp
   com.informatimago.rdp.basic
   com.informatimago.rdp.basic.example
   com.informatimago.rdp.example
   com.informatimago.susv3
   com.informatimago.common-lisp.tools.make-depends
   com.informatimago.xcode
   spartns
   xlunit
   => (uninterned!)
   #:author-email #:date
   (#:albert #:output-dirs)
   (#:albert #:formats)
   (#:albert #:docbook #:template)
   (#:albert #:docbook #:bgcolor)
   (#:albert #:docbook #:textcolor)
   (#:albert #:docbook #:dtd)
*** portableaserve
   =>
   ("system" "author" "email")
   ("albert" "presentation" "output-dir")
   ("albert" "presentation" "formats")
   ("albert" "docbook" "dtd")
   ("albert" "docbook" "template")
*** com.clearly-useful.generic-collection-interface => :com.clearly-useful
*** metatilities
   => :ait-timeout :system-applicable-p
*** ucw ucw-core 
   =>
   version
Francois-Rene Rideau's avatar
Francois-Rene Rideau committed
214
215
216

* ASDF4: search for this tag, rename things (incompatibly, thus) and cleanup code.