forked from nim-lang/Nim
-
Notifications
You must be signed in to change notification settings - Fork 0
/
todo.txt
72 lines (54 loc) · 2.05 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
version 1.0 battle plan
=======================
- let 'doAssert' analyse the expressions and produce more helpful output
- fix "high priority" bugs
- try to fix as many compiler crashes as reasonable
Not critical for 1.0
====================
- introduce ``nkStmtListExpr`` for template/macro invokations to produce
better stack traces
- make 'break' not leave named blocks
- make FlowVar compatible to Futures
- make 'not nil' the default (produce warnings instead of errors for
a smooth migration path)
- case objects needs to be safe and need to support pattern matching
- find a solution for the x.f[T](y) gotcha
- implement ``.delegate`` for .experimental
- annotation support for getType()
- make '--implicitStatic:on' the default; then we can also clean up the
'static[T]' mess in the compiler!
- ``not`` or ``~`` for the effects system
- figure out why C++ bootstrapping is so much slower
- make 'nil' work for 'add':
- resizeString
- incrSeq
- addChar
- pragmas need 'bindSym' support
- pragmas need re-work: 'push' is dangerous, 'hasPragma' does not work
reliably with user-defined pragmas
- we need a magic thisModule symbol
- optimize 'genericReset'; 'newException' leads to code bloat
- prevent 'alloc(TypeWithGCedMemory)'?
- map ``string`` and ``seq`` to ``std::string`` and ``std::vector``
- macro support for '='; bind '=' to a memory region
- macros as type pragmas
Bugs
====
- VM: Pegs do not work at compile-time
- blocks can "export" an identifier but the CCG generates {} for them ...
- ConcreteTypes in a 'case' means we don't check for duplicated case branches
GC
==
- resizing of strings/sequences could take into account the memory that
is allocated
Concurrency
===========
- implement 'foo[1..4] = spawn(f[4..7])'
Low priority:
- support for exception propagation? (hard to implement)
- the copying of the 'ref Promise' into the thead local storage only
happens to work due to the write barrier's implementation
CGEN
====
- codegen should use "NIM_CAST" macro and respect aliasing rules for GCC
- ``restrict`` pragma + backend support