home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / CLISP-1.LHA / CLISP960530-sr.lha / src / TODO < prev    next >
Encoding:
Text File  |  1996-04-15  |  9.7 KB  |  267 lines

  1. This file contains suggestions for further work.
  2.  
  3. URGENT PROBLEMS
  4. ===============
  5.  
  6. Should handle these soon.
  7.  
  8. (list #+foo #-bar 1 2) -> (2), not ()
  9. Lawrence Mayka reported this in comp.lang.lisp, and the only implementation
  10. that does it right is CMUCL.
  11.  
  12.  
  13. When the disk gets full while you are dribbling, there's no way to get
  14. clisp into a meaningful state. You have to Ctrl-Z and kill it.
  15.  
  16.  
  17. Calling (dribble) from within the debugger dribbles every character twice.
  18. Arghh!
  19.  
  20.  
  21. MAYBE
  22. =====
  23.  
  24. Still have to think about these, whether they are good ideas or not.
  25.  
  26.  
  27. Add Unicode (ISO 10646-1) support. Extend the CHARACTER type to have 24 bits
  28. instead of 16: 4 "bits", 4 "font", 16 "unicode". A Latin-1 character will
  29. consist of the following 32 bits:  |typecode|bits|font|00000000|Latin-1code|
  30. Problem: Streams of type CHARACTER - shall they transmit their characters in
  31. 24 bit chunks or in UTF-8 format?
  32.  
  33.  
  34. If you (TRACE generic-function) and then reload the file defining that
  35. function, you get an error saying that #<CLOSURE TRACED-xxx> is not a generic
  36. function.
  37.  
  38.  
  39. FFI: Introduce a macro like CMU's FFI:ADDR
  40.  
  41.  
  42. FFI: Actually support :language :cc/:gcc by passing appropriate flags
  43. to the avcall/vacall macros. The default should be the same compiler
  44. as the one used to compile clisp.
  45.  
  46.  
  47. (read-char *keyboard-input*) is still not perfect. Under Linux, it
  48. returns the following key sequences for some keystrokes:
  49.  
  50. Under xterm:
  51. Shift F1 --> F11
  52. Shift F2 --> F12
  53. Shift F3 --> Escape [ 2 5 ~
  54. Shift F4 --> Escape [ 2 6 ~
  55. Shift F5 --> Escape [ 2 8 ~
  56. Shift F6 --> Escape [ 2 9 ~
  57. Shift F7 --> Escape [ 3 1 ~
  58. Shift F8 --> Escape [ 3 2 ~
  59. Shift F9 --> F9
  60. Shift F10 --> F10
  61. Shift F11 --> F11
  62. Shift F12 --> F12
  63. Home -> Escape [ 7
  64. End -> Escape [ 8
  65.  
  66. Under console:
  67. Home -> Escape [ 1
  68. End -> Escape [ 4
  69. F6, F7, F8 -> Escape [ 1
  70. F9 -> Escape [ 2 0
  71. F10 -> Escape [ 2 1
  72. F11, Sh-F11 -> Escape [ 2 3
  73. F12, Sh-F12 -> Escape [ 2 4
  74. Shift F1 --> Escape [ 2 3
  75. Shift F2 --> Escape [ 2 4
  76. Shift F3 --> Escape [ 2 5
  77. Shift F4 --> Escape [ 2 6
  78. Shift F5 --> Escape [ 2 8
  79. Shift F6 --> Escape [ 2 9
  80. Shift F7 --> Escape [ 3 1
  81. Shift F8 --> Escape [ 3 2
  82. Shift F9 --> Escape [ 3 3
  83. Shift F10 --> Escape [ 3 4
  84. Ctrl-Alt-Q --> nothing at all
  85. NumLock doesn't work
  86.  
  87.  
  88. Browse in dpANS to see which situations require the following conditions:
  89.     # all kinds of conditions
  90.     condition,
  91.       # conditions that require interactive intervention
  92.       serious_condition,
  93.         # serious conditions that occur deterministically
  94.         error,
  95.           # when some datum does not belong to the expected type
  96.           type_error,
  97.           # errors while doing stream I/O
  98.           stream_error,
  99.           # errors with pathnames, OS level errors with streams
  100.           file_error,
  101.         # "Virtual memory exhausted"
  102.         storage_condition,
  103.       # conditions for which user notification is appropriate
  104.       warning,
  105. CLISP always issues a condition type that makes sense, but in some case
  106. dpANS may force us it to switch to a more specific condition type.
  107.  
  108.  
  109. Looks at GCL CLCS (debugger.lsp top-patches.lsp condition-definitions.lsp)
  110. whether it contains something clisp could profit from.
  111.  
  112.  
  113. Debugger (user1.lsp, debug.d): Implement backtrace-? commands with a limit,
  114. such that  BACKTRACE-1 20  will show the 20 newest frames. Good for people
  115. without a "cmdtool" or an xterm with logging.
  116.  
  117.  
  118. More CLtL2 compliance:
  119. ; List of X3J13 votes that may be implemented in CLISP
  120. ;
  121. ; Number: from CLtL2, Index of X3J13 Votes.
  122. ; Status: indicates whether CLISP currently supports code that makes use of
  123. ; this vote.
  124. ;
  125. ; Number Title                               Status          Files affected
  126. ;
  127. ;   <3>  ADJUST-ARRAY not adjustable         no              array.d
  128. ;   <8>  array type/element type semantics   yes for arrays  type.lsp
  129. ;                                            no for complex numbers
  130. ;  <11>  character proposal                  no
  131. ;  <24>  compiler diagnostics                no              compiler.lsp
  132. ;  <49>  DEFINE-COMPILER-MACRO               no              defs2.lsp
  133. ;  <53>  DEFSTRUCT constructor/key mixture   no              defstruc.lsp
  134. ;  <55>  DEFSTRUCT :PRINT-FUNCTION inheritance
  135. ;                                            no              defstruc.lsp
  136. ;  <57>  DEFSTRUCT slots constraints: name   no              defstruc.lsp
  137. ;  <71>  EQUAL & structure                   yes for EQUAL   predtype.d
  138. ;                                            no for EQUALP
  139. ;  <72>  EVAL other                          no              eval.d, compiler.lsp
  140. ;  <73>  EVAL-WHEN non top-level             no              control.d, init.lsp, compiler.lsp
  141. ;  <76>  FIXNUM non-portable                 no              array.d
  142. ;  <85>  FORMAT & pretty print               yes             format.lsp
  143. ;                                            no: ~E, ~F, ~G, ~$ also bind *PRINT-BASE* to 10 and *PRINT-RADIX* to NIL
  144. ;  <98>  hash-table & package generators     no              hashtabl.d, package.d, defs2.lsp
  145. ; <100>  hash-table tests                    no              hashtabl.d
  146. ; <102>  IMPORT & SETF SYMBOL-PACKAGE        no              package.d
  147. ; <103>  IN-PACKAGE functionality            no              package.d, compiler.lsp
  148. ; <105>  keyword argument name package       no
  149. ; <110>  LOAD & objects                      no
  150. ; <118>  MACRO-FUNCTION environment          no              control.d, compiler.lsp
  151. ; <122>  more character proposal             no              charstrg.d, stream.d
  152. ; <125>  package clutter                     no              init.lsp
  153. ; <127>  package function consistency        no              package.d
  154. ; <129>  pathname: component value           no              pathname.d
  155. ; <131>  pathname: print & read              no              io.d
  156. ; <133>  pathname: subdirectory list         no              pathname.d
  157. ; <134>  pathname: symbol                    no              pathname.d, stream.d
  158. ; <136>  pathname: unspecific component      no              pathname.d
  159. ; <138>  PEEK-CHAR, READ-CHAR & echo         no              io.d, stream.d
  160. ; <139>  pretty-print interface              no              xp.lsp
  161. ; <141>  *PRINT-CASE* / *PRINT-ESCAPE* interaction
  162. ;                                            no              io.d
  163. ; <148>  range of :COUNT keyword             no              sequence.d
  164. ; <152>  REDUCE argument extraction          no              sequence.d
  165. ; <153>  REMF & destruction: unspecified     no for NRECONC  list.d
  166. ;                                            yes for anything else
  167. ; <157>  ROOM :DEFAULT argument              no              debug.d
  168. ; <158>  sequence type & length              no              sequence.d, predtype.d
  169. ; <159>  SETF & multiple store variables     yes for SETF    places.lsp
  170. ;                                            no for SHIFTF, ROTATEF, ASSERT
  171. ; <162>  sharp-comma confusion               no              io.d
  172. ; <163>  sharpsign-plus/minus package        no              io.d, spvw.d, init.lsp, compiler.lsp
  173. ; <174>  syntactic environment access        no
  174. ; <176>  :TEST-NOT, -IF-NOT                  no              sequence.d, list.d
  175. ; <183>  WITH-COMPILATION-UNIT               no              compiler.lsp
  176.  
  177. The general rule:
  178. If it hurts CLtL1 programs, don't do it. Or put a CLtL1 symbol into
  179. the LISP package and a CLtL2 symbol into the COMMON-LISP package. (There's
  180. precedent for it: FLET, LABELS, IN-PACKAGE.)
  181. If it doesn't hurt CLtL1 programs:
  182.   If it makes sense and people want it, do it.
  183.   If it is a bad idea, explain to people.
  184.   If it is a good idea and people want it, maybe do it.
  185.   If noone bothers, why?
  186.  
  187.  
  188. The completion in user2.lsp does bad things with respect to upper case and
  189. lower case of symbols. Assume the symbols |TMP|, |TMP structure class|
  190. are interned. Then type a tab in the following situations:
  191. > (symbol-plist '\tmp
  192. > 'tm
  193. > '|
  194. > '"tm
  195.  
  196. user1.lsp: provide a hook to extend commands1.
  197. Rick Taube does the following in his Common Music package:
  198.     (setf (symbol-function '.oldcommands1.)
  199.        (symbol-function 'sys::commands1))
  200.     (setf (symbol-function 'sys::commands1)
  201.        #'(lambda ()
  202.            (append (funcall (symbol-function '.oldcommands1.))
  203.                    (list (cons "TL" #'tl)))))))
  204. "The ugliest hack I have ever written", he writes. And he is probably right.
  205.  
  206.  
  207. NOT TO DO
  208. =========
  209.  
  210. These have been in my mind, but are probably bad ideas.
  211.  
  212.  
  213. Declaration  extern maygc ...
  214.  
  215. You can't put this declaration into a C macro definition. Therefore the
  216. right place for it is still the comment.
  217.  
  218.  
  219. Amiga: handling of Ctrl-C in stream.d
  220.  
  221. I think we have fixed this finally.
  222.  
  223.  
  224. Block the signals SIGHUP SIGPIPE SIGTERM SIGXCPU SIGXFSZ during GC, and
  225. when they occur outside of GC, do a quit(1); .
  226.  
  227. Programs that deal too much with signals tend to be unfriendly. I hate
  228. programs which stay alive when I try to kill them.
  229.  
  230.  
  231. The APPLY package wants a variable *print-right-margin*.
  232.  
  233. What for? XP is broken, and I don't want to support it. Not even a single
  234. variable of it.
  235.  
  236.  
  237. arivaxvms.d: WCL's BigNum/vaxKerN.s says that under VMS only r0-r1, not
  238. r0-r5, can be freely used. Therefore save r2-r5 by modifying the .word
  239. statement at the entry point.
  240.  
  241. The VMS port has been stopped. Noone is interested in it.
  242.  
  243.  
  244. Extend the stdwin.d interface to handle all of stdwin. (I have a file
  245. called `stdwin.h.remaining' which lists the work to be done.)
  246.  
  247. What's the point? stdwin is already technology of the past.
  248.  
  249.  
  250. Punimax has been reported to dump core on Linux by 2 people.
  251.  
  252. I haven't been able to reproduce it.
  253.  
  254.  
  255. New memory management model for Sun3: a mixture between SPVW_MIXED_BLOCKS
  256. and SPVW_PURE_BLOCKS, a mixture between SINGLEMAP_MEMORY and MULTIMAP_MEMORY.
  257.  
  258. What's the point? Who is using Sun3's any more?
  259.  
  260.  
  261. The ONCE-ONLY macro from Norvig's book code does not work in clisp.
  262. The backquote macro is the problem.
  263.  
  264. I think Norvig's code is broken because it will only work in Steele's
  265. backquote implementation (CLtL2 appendix).
  266.  
  267.