-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathTODO
84 lines (66 loc) · 3.1 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
TODO notepad
============
- include "walk-...-sequence-..." macros in walker definition
- create macro for compilation passes (e.g. 1.transform, 2.cps, 3.closure conversion...)
- create separate struct for continuations?
- maybe implement optimizer regarding cps form
- implement C code generator (get rid of stack, since we have cps form etc.)
- revise C runtime with respect to C now being target instead of LLVM
- implement explicit form of continuations
- implement missing control structures via continuations
- implement garbage collector
- implement debugging stuff into generated C code
- implement auto-names for anonymous functions
- implement toolchain for linking etc. within lisp via c-api?
- build docker image for owlisp
- make it a lisp2
TODO notepad (deprecated 2014-09-28)
====================================
- combine steps of environmentalization & cps transformation
- write unit tests for environmentalization & cps transformation
TODO notepad (deprecated 2014-08-27)
====================================
- rework activation record implementation (in runtime)
- implement explicit & modularized calling conventions
- implement continuations (see below for details)
- make evaluation of parameters to a function call more dynamic (so we can implement lazy evaluation)
- implement garbage collector
- use "&rest args" instead of "args" in several places
- implement return value for main function
- implement auto-names for anonymous functions
- remove layer of TARGET-... functions in llvm.lisp? should be the same as functions in runtime.lisp?
- implement debugging functionality for llvm abstraction layer (dump values & types etc.)
- get rid of global_frame functions
- implement toolchain for linking etc. within lisp via c-api?
- implement true/false for lisp values in llvm logic (icmp etc.)
- build docker image for owlisp
- make it a lisp2
- use globals dynamically scoped for real (i.e. use let instead of setf)
IMPLEMENTING ACTIVATION RECORDS
===============================
- allocate on heap => more flexible
IMPLEMENTING CONTINUATIONS
==========================
- implement continuations stackless
IMPLEMENTING GARBAGE COLLECTOR
==============================
OLD
===
- fix toplevel to work correctly in toplevel when evaluating multiple expressions after another
e.g. evaluating (if 1 2 3) does not work twice in the same toplevel
OLD (2014-07-06)
================
- generate owlisp for llvm at build time
- define special prototype for main function
OLD (2014-07-05)
================
- fix constants
- implement llvm value/type container that can handle both lisp & llvm values and treat corresponding values transparently as equal
- reset state (declarations & definitions) for subsequent invocations of toplevel
OLD (2014-07-04)
================
- remove secd code generation (not necessary for llvm-ir generation)
- insert pass to generate cfgraph - most probably _before_ analyze-pass?
- work out how to generate "merge" basic block after if-clause
- secd generation for if is not correct (missing RET opcode in the end of then- & else-clauses?)
=> expressions after "if" (in a sequence) don't get evaluated