mirror of
https://github.com/nim-lang/Nim.git
synced 2026-07-21 08:21:32 +00:00
updated todo.txt
This commit is contained in:
127
todo.txt
127
todo.txt
@@ -1,5 +1,5 @@
|
|||||||
version 0.11.4
|
essential for 1.0
|
||||||
==============
|
=================
|
||||||
|
|
||||||
- document special cased varargs[untyped] and varargs[typed]
|
- document special cased varargs[untyped] and varargs[typed]
|
||||||
- The remaining bugs of the lambda lifting pass that is responsible to enable
|
- The remaining bugs of the lambda lifting pass that is responsible to enable
|
||||||
@@ -11,110 +11,47 @@ version 0.11.4
|
|||||||
|
|
||||||
- add "all threads are blocked" detection to 'spawn'
|
- add "all threads are blocked" detection to 'spawn'
|
||||||
- Deprecate ``immediate`` for templates and macros
|
- Deprecate ``immediate`` for templates and macros
|
||||||
|
- document NimMain and check whether it works for threading
|
||||||
|
|
||||||
version 1.0
|
|
||||||
===========
|
|
||||||
|
|
||||||
- map ``string`` and ``seq`` to ``std::string`` and ``std::vector``
|
|
||||||
- macro support for '='; bind '=' to a memory region
|
|
||||||
- remove echo $foo gotcha
|
- remove echo $foo gotcha
|
||||||
|
- ``not`` or ``~`` for the effects system
|
||||||
|
|
||||||
|
|
||||||
|
Not critical for 1.0
|
||||||
|
====================
|
||||||
|
|
||||||
- figure out why C++ bootstrapping is so much slower
|
- figure out why C++ bootstrapping is so much slower
|
||||||
- nimsuggest: auto-completion needs to work in 'class' macros
|
- The bitwise 'not' operator cold be renamed to 'bnot' to
|
||||||
- The bitwise 'not' operator will be renamed to 'bnot' to
|
|
||||||
prevent 'not 4 == 5' from compiling. -> requires 'mixin' annotation for procs!
|
prevent 'not 4 == 5' from compiling. -> requires 'mixin' annotation for procs!
|
||||||
- split docgen into separate tool
|
|
||||||
- BUG: echo with template `$`*(info: TLineInfo): expr = toFileLineCol(info)
|
|
||||||
- make 'nil' work for 'add':
|
- make 'nil' work for 'add':
|
||||||
- resizeString
|
- resizeString
|
||||||
- incrSeq
|
- incrSeq
|
||||||
- addChar
|
- addChar
|
||||||
|
|
||||||
|
|
||||||
Concurrency
|
|
||||||
-----------
|
|
||||||
|
|
||||||
- test 'deepCopy' for closures
|
|
||||||
- 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
|
|
||||||
|
|
||||||
|
|
||||||
Misc
|
|
||||||
----
|
|
||||||
|
|
||||||
- prevent 'alloc(TypeWithGCedMemory)'
|
|
||||||
|
|
||||||
|
|
||||||
Bugs
|
|
||||||
====
|
|
||||||
|
|
||||||
- Can lead to wrong C code:
|
|
||||||
|
|
||||||
template cd*(dir: string, body: stmt) =
|
|
||||||
## Sets the current dir to ``dir``, executes ``body`` and restores the
|
|
||||||
## previous working dir.
|
|
||||||
let lastDir = getCurrentDir()
|
|
||||||
setCurrentDir(dir)
|
|
||||||
try:
|
|
||||||
body
|
|
||||||
finally:
|
|
||||||
setCurrentDir(lastDir)
|
|
||||||
|
|
||||||
proc test =
|
|
||||||
cd dir:
|
|
||||||
var output = execProcess("git tag")
|
|
||||||
case meth
|
|
||||||
of DownloadMethod.git:
|
|
||||||
output = execProcess("git tag")
|
|
||||||
of DownloadMethod.hg:
|
|
||||||
output = execProcess("hg tags")
|
|
||||||
if output.len > 0:
|
|
||||||
case meth
|
|
||||||
of DownloadMethod.git:
|
|
||||||
result = @[]
|
|
||||||
for i in output.splitLines():
|
|
||||||
if i == "": continue
|
|
||||||
result.add(i)
|
|
||||||
of DownloadMethod.hg:
|
|
||||||
result = @[]
|
|
||||||
for i in output.splitLines():
|
|
||||||
if i == "": continue
|
|
||||||
var tag = ""
|
|
||||||
discard parseUntil(i, tag, ' ')
|
|
||||||
if tag != "tip":
|
|
||||||
result.add(tag)
|
|
||||||
else:
|
|
||||||
result = @[]
|
|
||||||
|
|
||||||
- VM: Pegs do not work at compile-time
|
|
||||||
- VM: ptr/ref T cannot work in general
|
|
||||||
- blocks can "export" an identifier but the CCG generates {} for them ...
|
|
||||||
- ConcreteTypes in a 'case' means we don't check for duplicated case branches
|
|
||||||
|
|
||||||
|
|
||||||
version 0.9.x
|
|
||||||
=============
|
|
||||||
|
|
||||||
- pragmas need 'bindSym' support
|
- pragmas need 'bindSym' support
|
||||||
- allow simple read accesses to global variables --> difficult to ensure that
|
- allow simple read accesses to global variables --> difficult to ensure that
|
||||||
no data races happen
|
no data races happen
|
||||||
- pragmas need re-work: 'push' is dangerous, 'hasPragma' does not work
|
- pragmas need re-work: 'push' is dangerous, 'hasPragma' does not work
|
||||||
reliably with user-defined pragmas
|
reliably with user-defined pragmas
|
||||||
- memory manager: add a measure of fragmentation
|
- memory manager: add a measure of fragmentation
|
||||||
- implement 'bits' pragmas
|
|
||||||
- we need a magic thisModule symbol
|
- we need a magic thisModule symbol
|
||||||
- optimize 'genericReset'; 'newException' leads to code bloat
|
- optimize 'genericReset'; 'newException' leads to code bloat
|
||||||
|
|
||||||
|
- prevent 'alloc(TypeWithGCedMemory)'?
|
||||||
version 0.9.X
|
- split docgen into separate tool; not happy how it worked with ``nimsuggest``
|
||||||
=============
|
though
|
||||||
|
- map ``string`` and ``seq`` to ``std::string`` and ``std::vector``
|
||||||
|
- macro support for '='; bind '=' to a memory region
|
||||||
- macros as type pragmas
|
- macros as type pragmas
|
||||||
- document NimMain and check whether it works for threading
|
|
||||||
|
|
||||||
|
Bugs
|
||||||
|
====
|
||||||
|
|
||||||
|
- VM: Pegs do not work at compile-time
|
||||||
|
- VM: ptr/ref T cannot work in general
|
||||||
|
- blocks can "export" an identifier but the CCG generates {} for them ...
|
||||||
|
- ConcreteTypes in a 'case' means we don't check for duplicated case branches
|
||||||
|
- BUG: echo with template `$`*(info: TLineInfo): expr = toFileLineCol(info)
|
||||||
|
|
||||||
|
|
||||||
GC
|
GC
|
||||||
==
|
==
|
||||||
@@ -126,6 +63,18 @@ GC
|
|||||||
is allocated
|
is allocated
|
||||||
|
|
||||||
|
|
||||||
|
Concurrency
|
||||||
|
===========
|
||||||
|
|
||||||
|
- test 'deepCopy' for closures
|
||||||
|
- 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
|
CGEN
|
||||||
====
|
====
|
||||||
- codegen should use "NIM_CAST" macro and respect aliasing rules for GCC
|
- codegen should use "NIM_CAST" macro and respect aliasing rules for GCC
|
||||||
|
|||||||
Reference in New Issue
Block a user