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 >
Wrap
Text File
|
1992-07-06
|
4KB
|
86 lines
-*- Mode: Indented-text; -*-
Scheme48: list of things to do. JAR 14 June 1992.
Run-time system bugs:
Compiler needs to treat calls with more than 63 arguments specially.
#e1.7 should be exact, yes?
Must #i123 print as 123. ?
The syntax-rules macro itself isn't hygienic (even though the
macros it produces are).
Macro templates of the form (x ... y) aren't allowed.
MAX and MIN don't do inexact contagion.
Revised^5 Scheme compliance:
Implement let-syntax and letrec-syntax.
values and call-with-values (change names in misc/receive.scm).
Export eval and dynamic-wind.
Programming environment:
Better error checking for macro & special form syntax
a :bound? command that says whether a name is bound, and if so,
to what kind of thing (value, special form, package).
LET continuation "pessimization" to retain the environment longer.
Command processor command to control continuation source code
retention. (Just does (keep-debug-data! 'source #t/#f))
Have the disassembler display local variable names.
Retain file names in debug database.
Command processor support for emacs & multiple packages:
:from-file <dir> <file>
<form> ...
:end
Full job support in command processor (:anew, :show, :kill).\,
integrated with threads.
Performance:
Two-pass compiler to support integration of things like NOT, CAAR, >.
Short of that, special cases for these in the compiler.
Leaf procedure compilation (RK's rts/no-leaf-env.scm): if no
continuations or lambdas, skip the make-env and access locals
using stack-ref.
Optimize loops somehow (maybe using call-template opcode and/or
opportunistic compilation)
CAML light has good documentation and patches for the switch (*pc++)
optimization.
Features:
Make #\tab and #\form print that way.
Get VM debugging environment (load-debug in vm/load.scm) working.
Get interp.scm-without-gc.scm working again.
Taxonomy of condition types? (Desirable for teledebugging support.)
Need something like :load-package and maybe :reload-package.
These could look at FILES clauses in DEFPACKAGE forms.
Make package-ref work with syntax and packages. (This is easiest
done by defining a CLASSIFY procedure, which could then also be
used by COMPILE and PROCESS-FORMS.)
Thread support in command processor
Non-blocking I/O for threads. I think access to Unix select() might
be sufficient (with pause() and sleep() as degenerate cases).
VM:
make-rectangular and make-polar take two operands
Incorporate stuff that's now in extension.c:
CHAR-READY?, ticks per second, real time, alarm clock.
Flush lookup opcode (make-symbol too?)
Allow #f as first argument to with-continuation
Allow primitive-catch from root continuation
Return to root continuation should just pass value out to main()
Pass Unix's "error output" to runtime system as a port?
Use record-ref, record-set!, record-length to access many stored
objects, e.g. templates, continuations, extended numbers. This
would eliminate the need for many byte codes.
Documentation:
Explain why the command processor doesn't have, and shouldn't
have, a command file ("take," "source") feature.
The bootstrap process - initial package, system package, etc.
Techniques for debugging the runtime system (boot/for-debugging.scm)
Threads, fluids, records, tables.
Cleanup:
Rename "class" to something else, like maybe "genus" or
"method-group"
Benchmark mode shouldn't be global; do something cleaner, maybe
package- or even binding- specific. (MIT Scheme has
(declare (usual-integrations)) , what else?)