diff options
author | Araq <rumpf_a@web.de> | 2015-10-28 08:13:49 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-10-28 08:13:49 +0100 |
commit | 22a702868bfd242ff76bf86ea00a278f979a112e (patch) | |
tree | 393e81a23f3f60697d2ce1ce9155a45e7603b5d9 /todo.txt | |
parent | c02e7954af199a0885d0712cfb0db1cd78755fd4 (diff) | |
download | Nim-22a702868bfd242ff76bf86ea00a278f979a112e.tar.gz |
updated todo.txt
Diffstat (limited to 'todo.txt')
-rw-r--r-- | todo.txt | 121 |
1 files changed, 35 insertions, 86 deletions
diff --git a/todo.txt b/todo.txt index 306b7008e..62ffdbd8a 100644 --- a/todo.txt +++ b/todo.txt @@ -1,5 +1,5 @@ -version 0.11.4 -============== +essential for 1.0 +================= - document special cased varargs[untyped] and varargs[typed] - 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' - Deprecate ``immediate`` for templates and macros +- document NimMain and check whether it works for threading +- remove echo $foo gotcha +- ``not`` or ``~`` for the effects system -version 1.0 -=========== +Not critical for 1.0 +==================== -- map ``string`` and ``seq`` to ``std::string`` and ``std::vector`` -- macro support for '='; bind '=' to a memory region -- remove echo $foo gotcha - figure out why C++ bootstrapping is so much slower -- nimsuggest: auto-completion needs to work in 'class' macros -- The bitwise 'not' operator will be renamed to 'bnot' to +- The bitwise 'not' operator cold be renamed to 'bnot' to 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': - resizeString - incrSeq - 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 - allow simple read accesses to global variables --> difficult to ensure that no data races happen - pragmas need re-work: 'push' is dangerous, 'hasPragma' does not work reliably with user-defined pragmas - memory manager: add a measure of fragmentation -- implement 'bits' pragmas - we need a magic thisModule symbol - optimize 'genericReset'; 'newException' leads to code bloat +- prevent 'alloc(TypeWithGCedMemory)'? +- 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 -version 0.9.X -============= -- 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 == @@ -126,6 +63,18 @@ GC 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 ==== - codegen should use "NIM_CAST" macro and respect aliasing rules for GCC |