summary refs log tree commit diff stats
path: root/todo.txt
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2015-10-28 08:13:49 +0100
committerAraq <rumpf_a@web.de>2015-10-28 08:13:49 +0100
commit22a702868bfd242ff76bf86ea00a278f979a112e (patch)
tree393e81a23f3f60697d2ce1ce9155a45e7603b5d9 /todo.txt
parentc02e7954af199a0885d0712cfb0db1cd78755fd4 (diff)
downloadNim-22a702868bfd242ff76bf86ea00a278f979a112e.tar.gz
updated todo.txt
Diffstat (limited to 'todo.txt')
-rw-r--r--todo.txt121
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