-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO
121 lines (99 loc) · 3.88 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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
[ ] atom
[ ] Tuple support
[ ] Bit format support
[ ] Function pattern matching
[ ] receive pattern matching
[ ] Implement let* (sequential)
[ ] Fix so that value_t's can be compared against eachother
[ ] Add support for floats
[ ] Add in support for multi-generational GC
[ ] Implement for
[ ] List comprehensions
[ ] implement deconstruct-bind
[ ] Support packages
[ ] Add FFI support
[ ] How to do shared dev?
[ ] Tuples
[ ] Matching
[ ] Dynamic scope
[/] Leaving closure that added to scope should remove it
[ ] What about when someone does defparameter or setq inside of closure?
[X] Fix gc bug
[ ] Fix setq
[ ] Packages
[ ] Loadf symbols that are undefined, and load binding when they are
[ ] Funcall should support multiple arguments so params are passed
[ ] Write basic eval
[ ] Write eval with macro expand
[ ] Move top level kern_env and usr_env to their own heap and anything put there should get stuck onto that heap
[ ] Allow processes to be freed
[ ] Process spawning and death
[ ] Create VT_PID
[ ] Write Spawn
[ ] Allow process to die
[ ] Make stack data and env array data values so they get cleaned up when a vm dies
[ ] Send/Receive for processes
[ ] Write unit tests for stable functionality
[ ] Implement dynamic and lexical scoped symbols as totally different namespaces
[ ] Support `,
[ ] Support ,@
[ ] Improve verify messages
[ ] Support for examining stack
[ ] Support for examining closure
[ ] Make a master VM which handles things like temporary strings, and static binds
[ ] Need to make read not block
read ->
VM -> Call read ifunc
C -> do we have a character
C -> Should we return, if yes return the value read in
C -> If not, return some kind of continue value
VM -> If read in value, return
VM -> If continue, jump to call (since jmp is an instruction a test should
take place to see if another process should run
[/] fix &rest so 'a sets args to ('a)
[X] Fix bug in reader where strings were being capitalized
[X] Fix bug in lisp running repl where (let (())...) was not properly finding binding
[X] Add in a binary heap where all binary objects (strings, etc) that don't need to be
moved but are mark/swept instead
[X] Add in support for multiple pools between garbage collections
[X] Get unit test suite in here
[X] Need to have main just launch this code for the vm
[x] Implement eval
[x] Implement read
[x] Implement (loop (print (eval (read))))
[X] Implement Loop
[X] Move special form macro's out of compile and into lib
[X] Fix (progn 'a 'b)
[X] macro's do not have their arguments expanded. Fix this
[X] Allow C lisp functions to be flagged as macros
[X] (let ((counter 1)) (defun inc () (setq counter (+ counter 1))) (defun reset () (setq counter 0)))
[X] Make lambda handle multiple args in body and only return result of last
[X] Implement progn -> convert to lambda
[X] Modify let to just result in a lambda
[X] Try (defvar x 1) (cond ((< x 0) (setq x (+ x 10))))
[X] Make sure that setq updates x
[X] Implement defvar binds value in current env
[X] Fix lambda ((lambda (x) (print x)) 10)
[X] Do argument count checking for built in special forms
[X] Fix reading from command line to not submit to reader until a complete form is ready
[X] write unwind-protect - does a setjmp that will execute a different body of code
[X] Support loading from a file
[X] Exceptions
[X] Reader macro -> '
[X] fix crash in (cond ((eq 1 1) (status)))
[X] Implement macros
[X] fix crash in (gc) then (cons a b)
[X] Make binding a lisp object (cons)
[X] cond
[X] quote, eq, cons, car, cdr, cond
[X] Defparameter
[X] Add support for defun add1 (x) (+ 1 x)
[X] Modify reader to handle numbers
[X] Modify reader to handle strings
[X] Fix search for a binding in an environment
[X] Get typing a symbol in by itself working
[X] Make an environment type lisp object
[X] Implement special operators - quote, setq, lambda
[X] Write compiler
[X] Implement Closure lisp object
[X] Implement Lambda lisp object