-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
todo.txt
38 lines (29 loc) · 1.42 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
TODO:
- Use #run to mark function to be executed in compile time on the call side: '#run foo()'.
- Use #run to mark function executed only in compile time on the declaration side: 'foo :: fn () #run {}'.
- Consider #import and #load to be limited only to the file scope.
- Polymorp types cannot be easily identified; i.e. 'table_insert' should be something like
this 'table_insert :: fn (tbl: *Table)' where 'Table' can be any polymorph type. However this is a
bit problematic due to the way how polymorph types are generated by compile-time funcitons...
- Static if in other than local scopes.
- No scopes introduced by static ifs? But what about {}? Maybe C style is better?
- Allow creation of scoped constants in structure bodies:
foo :: struct {
THIS_IS_CONSTANT :: 10;
number: s32;
}
- !array => array.len == 0
- Introduce calling conventions.
- Change syntax of default argument value assignment to ':'.
- loop - else ?
loop i := 0; i < arr.len; i += 1 {
...
} else {}
- Anonymous structs/unions?
TODO BIG STUFF:
- Implement custom multithreaded linker for windows, lld is slow same as link.exe.
- Factor-out mir generation into separate pass executed per unit. This might be the fisrt step to
support proper conditional #load and #import.
- Allow code generation from build script pipelines probably using compiler hooks.
- Implement code browsing from build script to allow custom usage checks.
DONE: