summary refs log tree commit diff stats
path: root/todo.txt
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2013-05-11 10:30:49 +0200
committerAraq <rumpf_a@web.de>2013-05-11 10:30:49 +0200
commit258aabba653c6f8a08b4d40416c1243398e5ff6f (patch)
tree31c002b8bac12ec93928420e2fbfb2d8b664e28e /todo.txt
parent1980c8930d69ec3a53bcb4da993d387269f78eab (diff)
downloadNim-258aabba653c6f8a08b4d40416c1243398e5ff6f.tar.gz
todo.txt changes
Diffstat (limited to 'todo.txt')
-rw-r--r--todo.txt90
1 files changed, 51 insertions, 39 deletions
diff --git a/todo.txt b/todo.txt
index 2f1105df4..d1dbf8b74 100644
--- a/todo.txt
+++ b/todo.txt
@@ -1,12 +1,14 @@
 version 0.9.2
 =============
 
-- FFI:
-  * test libffi on windows
-  * test: times.format with the FFI
-- acyclic vs prunable; introduce GC hints
-- CGEN: ``restrict`` pragma + backend support; computed goto support
-- document NimMain and check whether it works for threading
+- make 'bind' default for templates and introduce 'mixin';
+  special rule for ``[]=``
+- ``=`` should be overloadable; requires specialization for ``=``; general
+  lift mechanism in the compiler is already implemented for 'fields'
+- mocking support with ``tyProxy`` that does: fallback for ``.`` operator
+  - overloading of ``.``? Special case ``.=``?
+- built-in 'getImpl'
+
 
 Bugs
 ====
@@ -28,18 +30,15 @@ version 0.9.4
 =============
 
 - macros as type pragmas
-- provide tool/API to track leaks/object counts
-- hybrid GC
-- use big blocks in the allocator
-- implement full 'not nil' checking
-- make 'bind' default for templates and introduce 'mixin';
-  special rule for ``[]=``
+- implement full 'not nil' checking; range[1..3] needs the same mechanism
 - implicit deref for parameter matching
-- ``=`` should be overloadable; requires specialization for ``=``; general
-  lift mechanism in the compiler is already implemented for 'fields'
 - lazy overloading resolution:
   * get rid of ``expr[typ]``, use perhaps ``static[typ]`` instead
   * special case ``tyStmt``
+- FFI:
+  * test libffi on windows
+  * test: times.format with the FFI
+- document NimMain and check whether it works for threading
 
 
 version 0.9.X
@@ -48,8 +47,6 @@ version 0.9.X
 - test&finish first class iterators:
   * nested iterators
 - implement the missing features wrt inheritance
-- object pooling support for *hard* realtime systems
-- improve the compiler as a service
 - better support for macros that rewrite procs
 - macros need access to types and symbols (partially implemented)
 - perhaps: change comment handling in the AST
@@ -62,8 +59,8 @@ version 0.9.X
   templates that would work too: T([.ref int])
 
 
-Concurrency
------------
+Concurrency/Effect system
+=========================
 
 - shared memory heap: ``shared ref`` etc. The only hard part in the GC is to
   "stop the world". However, it may be worthwhile to generate explicit 
@@ -83,21 +80,51 @@ Concurrency
 version 0.9.XX
 ==============
 
+- document nimdoc properly finally
+- make 'clamp' a magic for the range stuff
+- better type syntax for functions and tuples: tuple(int, int); (int,int)->int
+
+
+Memory safety
+=============
+
+- object branch transitions from low(selector) are unsafe! ---> Needs a 
+  deprecation path
 - object branch transitions can't work with the current 'reset'; add a 'reset'
   with an additional parameter --> simple:
   provide a 'reset(x, TObj(k: nkValue))' instead? why bother? '=' does the
   same.
-- document nimdoc properly finally
-- make 'clamp' a magic for the range stuff
-- better type syntax for functions and tuples: tuple(int, int); (int,int)->int
+- returning 'var T' is unsafe and needs some static analysis
+
+
+GC
+==
+
+- precise stack marking; embrace C++ code generation for that
+- marker procs for Boehm GC
+- hybrid GC
+- GC: implement simple generational GC
+  * first version: mark black in write barrier
+  * second version: introduce fake roots instead of marking black
+  * third version: find some clever heuristic which is preferable
+- acyclic vs prunable; introduce GC hints
+- use big blocks in the allocator
+- object pooling support for *hard* realtime systems
+- provide tool/API to track leaks/object counts
+- resizing of strings/sequences could take into account the memory that
+  is allocated
+
+
+CGEN
+====
+- codegen should use "NIM_CAST" macro and respect aliasing rules for GCC
+- ``restrict`` pragma + backend support; computed goto support
+- 'const' objects including case objects
 
 
 Not essential for 1.0.0
 =======================
 
-- 'const' objects including case objects
-- mocking support with ``tyProxy`` that does: fallback for ``.`` operator
-  - overloading of ``.``? Special case ``.=``?
 - allow implicit forward declarations of procs via a pragma (so that the
   wrappers can deactivate it): better solution: introduce the notion of a 
   'proc section' that is similar to a type section.
@@ -108,28 +135,13 @@ Not essential for 1.0.0
 - ``with proc `+`(x, y: T): T`` for generic code
 - new feature: ``distinct T with operations``
 - arglist as a type (iterator chaining); variable length type lists for generics
-- resizing of strings/sequences could take into account the memory that
-  is allocated
-- codegen should use "NIM_CAST" macro and respect aliasing rules for GCC
 - implement marker procs for message passing
 - activate more thread tests
 - implement closures that support nesting of *procs* > 1
-- GC: implement simple generational GC
-  * first version: mark black in write barrier
-  * second version: introduce fake roots instead of marking black
-  * third version: find some clever heuristic which is preferable
 - object constructors: static check for fields if discriminator is known at 
   compile time
 
 
-GC
-==
-
-- precise stack marking; embrace C++ code generation for that
-- marker procs for Boehm GC
-- implement 'mixed' GC mode
-
-
 Optimizations
 =============