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