summary refs log tree commit diff stats
path: root/todo.txt
diff options
context:
space:
mode:
Diffstat (limited to 'todo.txt')
-rwxr-xr-xtodo.txt155
1 files changed, 155 insertions, 0 deletions
diff --git a/todo.txt b/todo.txt
new file mode 100755
index 000000000..553efb884
--- /dev/null
+++ b/todo.txt
@@ -0,0 +1,155 @@
+For version 0.8.10
+==================
+
+- fix exception handling
+- fix implicit generic routines
+- fix the streams implementation so that they use methods
+
+
+TO IMPLEMENT
+============
+
+* fix overloading resolution
+* wrong co-/contravariance
+* startsWith `=^`
+* endsWith `=$`
+* ignore case `=?` --> `=$?`
+
+Bugs
+----
+- proc (x: int) is passable to proc (x: var int)  !?
+- detected by pegs module 64bit: p(result, result) should use a temporary!
+- seq[TLoc] in C code generator always failed --> probably some reference
+  counting is wrong; try to reproduce this in the GC test
+- the parser allows empty object case branches
+- SDL event handling
+- accurate file/line information
+
+
+To implement
+------------
+
+* icon installation for the Windows installer
+* sort routine
+* hash tables and sets
+* the two other parsers
+* distinct types for array/seq indexes
+* constant sequences
+* IMPLEMENT GENERIC TYPES!
+  - implement expr parameters
+  - document generic types better
+
+* implement closures for the C code generator
+
+
+
+Low priority
+------------
+- resizing of strings/sequences could take into account the memory that
+  is allocated
+- implicit conversions from ``ptr/ref T`` to ``var T`` (from
+  ``ptr/ref T`` to ``T``)?
+- documentation: type converters
+- typeAllowed() for parameters...
+- find a way to reintroduce the cleanup() pass for C code generation: this
+  is hard because of partial evaluation --> symbol files will fix this as
+  a side effect
+- implement better error handling: errornous top level statements are ignored
+  and not part of the symbal table --> for REPL
+  --> this needs deletion operation for symbol table!
+- floating point checks for EcmaScript
+- enhance `` notation for identifier concatenation: `concat` a `these`
+- prefer proc in current module over other procs with same overloading result?
+- real types for template results
+- generalized case statement (requires better transf)
+- normalize for the DOM
+- script layer!
+- tlastmod returns wrong results on BSD (Linux, MacOS X: works)
+- nested tuple unpacking
+
+
+Library
+-------
+
+- float formatting
+- locale support
+- conversion between character sets
+- bignums
+- ftp, smtp (and other internet protocols)
+
+- finish json module: use coroutines for this!
+
+- pdcurses bindings
+- automate module: expect-like module for Nimrod
+
+- for system:
+  proc `@` [T](a: openArray[T]): seq[T] = 
+    newSeq(result, a.len)
+    for i in 0..a.len-1: result[i] = a[i]
+    
+  --> ensure @[] calls the array version!
+  
+
+For the next versions
+=====================
+
+- support for generation of dynamic libraries
+
+
+Further ideas/nice to have
+==========================
+
+- queues additional to streams: have two positions (read/write) instead of one
+
+
+Version 2
+---------
+
+- language change: inheritance should only work with reference types, so that
+  the ``type`` field is not needed for objects! --> zero overhead aggregation
+  BETTER: ``is`` and safe object conversions only work with ref objects. Same
+  for multi methods.
+  
+- explicit nil types?
+  * nil seq[int]
+  * nil string
+  * nil ref int
+  * nil ptr THallo
+  * nil proc 
+
+.. code-block:: nimrod
+  var
+    x: string = nil # initialized with invalid value!
+  if not isNil(x):
+    # now x 
+  
+- better for backwards compatibility: default nilable, but ``not nil``
+  notation::
+  
+  type
+    PWindow = ref TWindow not nil
+
+
+Low priority
+------------
+
+- ``when T is int`` for generic code
+- ``when validCode( proc ()  )`` for generic code
+  
+  
+  when compiles:
+    
+  elif compiles: 
+    
+
+- macros: ``typecheck`` pragma; this allows transformations based on types!
+- find a way for easy constructors and destructors; (destructors are much more
+  important than constructors)
+- code generated for type information is wasteful
+
+
+RST
+---
+- footnotes; prefix :i: whitespace before :i:, _reference, `reference`__
+  __ anonymous: www.nimrod.org
+