klisp

an open source interpreter for the Kernel Programming Language.
git clone http://git.hanabi.in/repos/klisp.git
Log | Files | Refs | README

TODO (3420B)


      1 - Check lambda for problems with continuation capturing
      2 - Check the let family for problems with continuation capturing
      3 - Check map for problems with continuation capturing
      4 
      5 
      6 * Release 0.4+
      7 ** refactor:
      8 *** clean stand alone interpreter
      9 *** double check combiner names to be verbs 
     10     - add get- where appropriate
     11 *** split kghelpers 
     12     - knumber.h knumber.c (kfinitep, kintegerp, etc)
     13 *** naming convention for ground operative functions
     14     - maybe add "kgop_"
     15     - use 'P' instead of 'p' for ground predicates
     16 *** naming convention for continuation functions
     17     - intead of "do_"
     18 *** use krooted_vars_push more to avoid clutter
     19     - when creating continuations
     20 *** Study differrent c interfaces 
     21     - maybe a stack like in lua would be better than dealing with gc guarding
     22 *** eliminate all remaining char * arguments where not needed
     23     - typep
     24 *** remove most of inline declarations
     25 *** standarize size type
     26     - do a typedef
     27     - currently
     28       - int32_t (used in lists)
     29       - uint32_t (used in strings, vectors and bytevectors)
     30 *** add static qualifiers (especially in all kg*.c files)
     31 *** add const qualifiers where sensible
     32 ** fix:
     33 - fix semantics of map, for-each, etc in the presence of continuation
     34   capture and mutation of the underlying lists.  
     35 - fix char-ready? and u8-ready? (r7rs)
     36     - Probably need a thread per port
     37 ** reader/writer
     38 - syntax support for complex numbers (Kernel report)
     39 - unicode support
     40 - add case sensitive option / compiler flag
     41 *** add new external representations
     42 - vectors
     43 - bytevectors
     44 - errors
     45 - others(?)
     46 ** features
     47 *** r7rs
     48 - add optional arguments to all versions of fill!
     49 - add optional arguments to all versions of copy
     50 - read-bytevector & read-bytevector!
     51 *** extra
     52 - read lines (reads all lines and returns a list of them)
     53 - read list (like what is used for load)
     54 ** library
     55 *** some simplified error guarding (r7rs)
     56 *** $case (r7rs)
     57 *** $case-lambda + $case-vau (r7rs)
     58 *** $named-let + $do (r7rs)
     59 *** $define-record-type (r7rs)
     60 *** eager comprehensions (at least for check.k) see SRFIs 42 and 78 (srfi)
     61 *** restarts (r7rs/common lisp)
     62 *** check.k as a module
     63 ** webpage
     64 - Have Maria Sol draw a simple logo
     65 ** other
     66 *** add restart support to the repl/interpreter (r7rs)
     67 *** complex numbers (Kernel report)
     68 *** interval arithmetic (Kernel report)
     69 ** reduce binary size 
     70 *** currently (2011/12/05) is 3megs
     71   - most of it from kg*.o
     72   - klisp_assert:
     73     - almost 1 meg comes from klisp_asserts
     74     - adds considerably to the compilation time
     75     - add a flag to enable assertions
     76       - and disable it by default
     77       - fix warnings when assertions are turned off 
     78 	- unitialized uses
     79 	- unused variables
     80   - debugging symbols:
     81     - 1 meg and a half comes from debugging symbols
     82     - adds to the compilation time
     83     - add a flag 
     84       - maybe the same as for asserts
     85       - maybe another one
     86       - disable it by default
     87   - Even after disabling these two, the size is 500k
     88   - Continue investigating and try to make it lower
     89 
     90 ** documentation
     91 *** info/html manual
     92   - xrefs
     93   - Clean up the structure of the documentation
     94   - a little on the indexes
     95   - add sections for general concepts (tail context, dynamic extent, etc)
     96   - find a way to inline function documentation in the c source code 
     97     (check to see how emacs does this for elisp)
     98 *** README
     99   - Add README files to all directories
    100 *** man page
    101   - change man page to mandoc format