-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathTODO.txt
81 lines (77 loc) · 2.18 KB
/
TODO.txt
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
TODO:
DONE:
- Check type of function body matches return type
- Check type of arguments in binops
- Implement comments
- Fix parser: whitespace-only forms
- Implement the
- Fix parser: whitespace-prefixed forms
- Clean up the backend so it's less shitty
- Indent the C output
- Escape function and variable names
- Move the typed AST to its own sig/struct
- Implement progn
- Implement let
- Implement raw pointer types
- Implement nullptr
- Implement load
- Implement pointer equality
- Implement store
- Implement malloc
- Implement a print function for primitive types
- Fix function calls
- Implement free
- Implement c/embed
- Implement record types
- Implement c/call
- Implement assignment
- Implement while loop
- Simplify integer types
- Implement address-of
- Keep track of variable mutability
- Forbid mutating function arguments or immutable vars
- Print newline handling (print vs println)
- Printing strings
- Not equal binop
- Make function bodies an implicit progn
- Add toplevel C include statement
- Separate compiler from REPL code
- Add batch compilation
- Compile to a CLI executable using MLton
- Build examples using Makefile
- Not function on booleans
- Implement regions
- Region pointers
- Implement letregion
- Function type specifier type (region parameter)
- Concretize function parameters
- Define region type
- Add code to initialize regions
- Add code to free regions
- Emit region initialization call
- Emit region free call
- Rename address-of to c/address-of
- Change the default int type to i32
- Implement concrete defrecord
- Implement record creation
- Implement record access
- Region-tagged pointer types
- Region operation: allocate value in region
- Print types
- Nullable pointer types
- allocate should return a nullable pointer
- Implement nullable/case
- load region pointers
- store region pointers
WISHLIST:
- Implement macros
- Implement function declarations
- Prevent defining a function twice
- (print s_0 s_1 ... s_n) => (progn (print s_0) (print s_1) (print s_n))
- Let with support for immutable variables
- define-symbol-macro
- Cond macro
- Flexible typing for integer literals (lit_ty, litTypeOf)
- Flexible types for the null constant
- Print forms
- Better errors