home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / s / s48.zip / TODO < prev    next >
Text File  |  1992-07-06  |  4KB  |  86 lines

  1. -*- Mode: Indented-text; -*-
  2.  
  3. Scheme48: list of things to do.  JAR 14 June 1992.
  4.  
  5. Run-time system bugs:
  6.     Compiler needs to treat calls with more than 63 arguments specially.
  7.     #e1.7 should be exact, yes?
  8.     Must #i123 print as 123. ?
  9.     The syntax-rules macro itself isn't hygienic (even though the
  10.       macros it produces are).
  11.     Macro templates of the form (x ... y) aren't allowed.
  12.     MAX and MIN don't do inexact contagion.
  13.  
  14. Revised^5 Scheme compliance:
  15.     Implement let-syntax and letrec-syntax.
  16.     values and call-with-values (change names in misc/receive.scm).
  17.     Export eval and dynamic-wind.
  18.  
  19. Programming environment:
  20.     Better error checking for macro & special form syntax
  21.     a :bound? command that says whether a name is bound, and if so,
  22.       to what kind of thing (value, special form, package).
  23.     LET continuation "pessimization" to retain the environment longer.
  24.     Command processor command to control continuation source code
  25.       retention.  (Just does (keep-debug-data! 'source #t/#f))
  26.     Have the disassembler display local variable names.
  27.     Retain file names in debug database.
  28.     Command processor support for emacs & multiple packages:
  29.         :from-file <dir> <file>
  30.     <form> ...
  31.     :end
  32.     Full job support in command processor (:anew, :show, :kill).\,
  33.       integrated with threads.
  34.  
  35. Performance:
  36.     Two-pass compiler to support integration of things like NOT, CAAR, >.
  37.     Short of that, special cases for these in the compiler.
  38.     Leaf procedure compilation (RK's rts/no-leaf-env.scm): if no
  39.       continuations or lambdas, skip the make-env and access locals
  40.       using stack-ref.
  41.     Optimize loops somehow (maybe using call-template opcode and/or
  42.       opportunistic compilation)
  43.     CAML light has good documentation and patches for the switch (*pc++)
  44.       optimization.
  45.  
  46. Features:
  47.     Make #\tab and #\form print that way.
  48.     Get VM debugging environment (load-debug in vm/load.scm) working.
  49.     Get interp.scm-without-gc.scm working again.
  50.     Taxonomy of condition types?  (Desirable for teledebugging support.)
  51.     Need something like :load-package and maybe :reload-package.
  52.       These could look at FILES clauses in DEFPACKAGE forms.
  53.     Make package-ref work with syntax and packages.  (This is easiest
  54.       done by defining a CLASSIFY procedure, which could then also be
  55.       used by COMPILE and PROCESS-FORMS.)
  56.     Thread support in command processor
  57.     Non-blocking I/O for threads.  I think access to Unix select() might
  58.       be sufficient (with pause() and sleep() as degenerate cases).
  59.  
  60. VM:
  61.     make-rectangular and make-polar take two operands
  62.     Incorporate stuff that's now in extension.c:
  63.       CHAR-READY?, ticks per second, real time, alarm clock.
  64.     Flush lookup opcode (make-symbol too?)
  65.     Allow #f as first argument to with-continuation
  66.     Allow primitive-catch from root continuation
  67.     Return to root continuation should just pass value out to main()
  68.     Pass Unix's "error output" to runtime system as a port?
  69.     Use record-ref, record-set!, record-length to access many stored
  70.       objects, e.g. templates, continuations, extended numbers.  This
  71.       would eliminate the need for many byte codes.
  72.  
  73. Documentation:
  74.     Explain why the command processor doesn't have, and shouldn't
  75.       have, a command file ("take," "source") feature.
  76.     The bootstrap process - initial package, system package, etc.
  77.     Techniques for debugging the runtime system (boot/for-debugging.scm)
  78.     Threads, fluids, records, tables.
  79.  
  80. Cleanup:
  81.     Rename "class" to something else, like maybe "genus" or
  82.       "method-group"
  83.     Benchmark mode shouldn't be global; do something cleaner, maybe
  84.       package- or even binding- specific.  (MIT Scheme has
  85.       (declare (usual-integrations)) , what else?)
  86.