blob: 553efb8849aa179c060d62896329fa2062ddd152 (
plain) (
tree)
|
|
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
|