diff options
Diffstat (limited to 'todo.txt')
-rwxr-xr-x | todo.txt | 155 |
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 + |