-*-TEXT-*- The Scheme-Team Work List To use this list: (1) Pick out something to do (2) To indicate that you are going to do something, put your name inside the brackets for that thing: [Hanson] Fix the foobar bug. (3) When you're done, update the entry to show that you are done and any pertinent details: [Done] Fix the foobar bug. Effective in microcode 2.9, system 4.9. If in the process of doing the work, you do something more or something different than was indicated in the original description, then update the description when you are finished to reflect the work actually completed. ---------------------------------------------------------------------- Category I: Airtightness. Anything that prevents the system from doing what it is documented to do, e.g. bugs. [] Lock DYNAMIC-WIND thunks. [Done] Flush Pascal's TYI buffer at same time as Scheme's. (?? fixed ??)--- Needs to be done for ^B. [] GC should check heap bounds. [Done] Fix LIST? to do as in manual; decide what current LIST? should be called instead. STRING-EQUAL? takes its slot in the primitives vector. Fixed in microcode 2.10/4.15. [DONE] Should implement WEAK-LIST? which is either PAIR? or NULL?. 4.25 or earlier [] Shouldn't be possible to get at NMODE/PSL evaluation interface. [] Keyboard Hook: switch caps-lock to be not NUL. [Done] Float <-> Integer coercions. [Done] Keyboard Hook: possible backspace problems with ". [DONE] Generic EXPT. Band 4.24 [on-hold] Advice checkout. AAB is rewriting advice. [Done] Bug in DIVIDE-BIGNUM not canonicalizing result. -- Chris Hanson / Neal Mayle are looking into why quotient must be trimmed. [Done] ONE-PLUS-BIGNUM, MINUS-ONE-PLUS-BIGNUM not implemented. -- In Scheme, adding a constant (bignum) one or subtracting it. GJS [Done] PROCEDURE-FRAME referred to by WHERE. Fixed in 4.8. [Done] Unsyntaxing of LET. Fixed in 4.9. [Done] When input buffer is full, control characters are unable to mark the end of the input. Consequently, when Scheme handles the interrupt, it hangs trying to find the termination character, which isn't in the input buffer. [Done] Typeahead in Scheme sometimes garbles the information going into the typeahead buffer. Probably only happens when Scheme is doing lots of computation, but exact circumstances unknown. [DONE] Syntax table management: should not have declarations stick around after a file is loaded. [Declarations are ignored by new syntaxer!] Band 4.25 [] Terminal emulator doesn't do C-backspace correctly. [Done] WHERE doesn't correctly handle ^U and ^X interrupts. They currently throw a value which consists of several items (see REP), and WHERE just prints out that value. It probably shouldn't. It maybe should also reprint the bindings when one of these interrupts is taken. Fixed in system 4.13. [Done] WHERE probably wants to special-case the first binding in the bindings list, which is the procedure, so users don't see stuff like *THE-BARBER-HIMSELF*. Fixed in system 4.13. [Done] Some of the Input to SCHEME is lost if the Shifted-Backspace key is used. [] Fix MEMQ and ASSQ to be interruptible. [] Fix NTH and NTHCDR to detect negative arguments. ---------------------------------------------------------------------- Category II: Completeness. Anything needed to run the class that isn't already installed. [] Implement DISK-RESTORE. [DONE] Implement stupid macros. Band 4.25 has Define-Macro and Remove-Macro in the Scheme-Syntaxer package. NOT TO BE TAKEN AS A DESIRABLE OR CORRECT IMPLEMENTATION!!!! [Done] PHOTO/TOFU. --- One external procedure in pascal (Schemio), wrapped in Scheme. [Hanson] Abstract continuation mechanism for DEBUG. [AAB] DEBUG. Regular (and display-oriented if there is a window package) [KHS] File I/O: COPY-FILE, RENAME-FILE, MEDIAINIT, LOAD-PROBLEM-SET. [Jinx] Changes to correspond to user manual: (a) add missing functions [Alphaless?], [BKPT], Debug, [Extend?], GCD, Mod, [NIL?], [Photo], Tan, [TOFU] (b) rename function: LIST* -> CONS* (c) Add functions to replace property lists (Get, List, Put, Remove) ---------------------------------------------------------------------- Category III: Polishing. Things needed to hide the imperfections in the implementation from the user. [DONE] There needs to be a hacker's standard top level environment which is more full than the student's. Band 4.25 -- USER-INITIAL-ENVIRONMENT has a trimmed syntax table and reader table. Missing: access, comment, declare, fluid-let, in-package, iterate, make-package, make-environment, named-lambda, quasiquote, scode-quote. Also disabled ` (backquote) and #( . [] Login/logout commands, user-id stuff. [] Turn off all dangerous keys!! [Done] Immediate TYI for non-READ. [] Decide on standardized names for types, and implement renaming in OBJECT-TYPE. [Done] Should print ' for (QUOTE ). CHANGES MADE TO UNPARSE-LIST. In Band 4.10. [DONE] Lowercase characters should be used in system-owned keywords to prevent users from typing them. |...| syntax should be implemented in system hacker's environment to facilitate this. Band 4.25: these are stored on the environment property list rather than as variables. [] Remove softkey labels from screen when entering Scheme or Terminal emulator. [done] Zapper can't go to a shared directory as it does now on the SRM! GJS changed this to go to the * directory - entry by aab. [] BREAKPOINT-PROCEDURE and ERROR-PROCEDURE should be handled specially by the unsyntaxer, turning into BKPT and ERROR. [] ERROR should be made into a lexpr which takes one or more arguments. If there is only one argument, then there is no irritant; if there are two arguments, the second argument is the irritant, and if there are more arguments, the list of all arguments after the first are the irritant. There probably is no need for the optional environment argument, since it has never been used. [] LOAD should record values that it prints on the screen in the printer history, to be compatible with the REP loop. [] Maybe PRINT should too? [] Have FASL default its second argument just like LOAD. ---------------------------------------------------------------------- Category IV: Speed. [done] Advice package needs to be rewritten. [] Compiler hacking! [GJS] Generic Arithmetic needs hand tuning. Done in 4.24 [] Syntaxer can be split into three parts: [done] S-expression to SCODE mapping; high speed, minimal functionality. [AAB] SCODE analyzer producing environment structure, control flow and data flow graphs. [] SCODE to SCODE optimizer, performing such services as inline coding, variable sharing, constant folding, compile-time parameters, and compilation of primitive combinations. [] Small (1 and 2 operand) combinations made from pairs and hunk3s can give significant speedup. [] Move dispatch tables to SCHEME-REGARRAY. [] Scale primitive-procedure-codes up by 4. [] Alter interrupts to clobber application dispatch table. [] Remove PCLSR in favor of explicit rack save bits. ---------------------------------------------------------------------- Category V: Extensions. [AC] Window Package. [] Format. [] Plotting. [on hold] Advice before entry (I can do this easily -- aab). It is not clear that this needs to be done. [on hold] Minor changes to advice. Things in scode-quote should give complete path name right down to #!null. List of names of advised procedures. *PROC*, *ARGS* AND *RESULT* SHOULDN'T BE GLOBAL. I'll get to this at some point after the system has stabilized -- Aab. [KHS] Editor. [Done] Implement EQV?, make EQUAL? handle vectors. --- Strings with same characters are eqv? even though they can be modified. [] Implement hairy hash tables. [] Implement ^P (abort printout). [] Implement ^L (clear screen and redisplay). [Done] GC should record heap size, %GC time too. Doesn't record gc time instead records start-time, delta-time. [Done] UNSYNTAX should recognize and decode ITERATE. In 4.9. [] UNSYNTAX should recognize and decode COLLECT. [DONE] GET-CURSOR. Return (X . Y) coordinates. ---------------------------------------------------------------------- Category VI: Documentation [TODD] Students' Scheme Manual/System Manual. [] TA's "/" [] Hackers' "/" ---------------------------------------------------------------------- Category VII: Sweeping Changes. [] Implementation of "safe" definitions allows auxiliary variables to be used to build environment structure. [] Reflective Procedures to give extensible expressions. [Hanson] Macro language. [] "New Error System" ---------------------------------------------------------------------- Category VIII: Miscellaneous. [] Implement NM-VECTOR, MANIFEST-VECTOR. [] Implement VECTOR-16B operations. [] System should recover from ^Z interrupt during READ. [] Isolate machine dependent stuff. [] Finish installing user/system primitives. [Done] Implement FASDUMP. Symbol values should be dumped as undefined, Variables should be dumped as uncompiled. [Done] Add capability to undefine syntax. Band 4.25 NOT TO BE TAKEN AS A CORRECT OR COMPLETE IMPLEMENTATION OF MACROS! [] "Lock" environments created by applying compiled procedures to prevent creation of DANGEROUS variables. [] Scheme Team T-shirts. [] Have cold-boot sequence delete the bodies of the major packages in the system, to conserve space.