mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-07 13:33:22 +00:00
129 lines
3.2 KiB
Plaintext
Executable File
129 lines
3.2 KiB
Plaintext
Executable File
- we need a way to disable tests
|
|
- deprecate ^ and make it available as operator
|
|
- test branch coverage
|
|
- checked exceptions
|
|
|
|
|
|
High priority (version 0.9.0)
|
|
=============================
|
|
|
|
|
|
- fix implicit generic routines
|
|
- fix the streams implementation so that it uses methods
|
|
- fix overloading resolution
|
|
- wrong co-/contravariance
|
|
|
|
|
|
Bugs
|
|
----
|
|
- proc (x: int) is passable to proc (x: var int) !?
|
|
- detected by pegs module 64bit: p(result, result) should use a temporary!
|
|
- the parser allows empty object case branches
|
|
|
|
|
|
To implement
|
|
------------
|
|
|
|
* sort routine
|
|
* hash tables and sets
|
|
* distinct types for array/seq indexes
|
|
* constant sequences
|
|
|
|
* 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
|
|
- tlastmod returns wrong results on BSD (Linux, MacOS X: works)
|
|
- nested tuple unpacking
|
|
- fast assignment optimization for TPeg
|
|
|
|
|
|
Library
|
|
-------
|
|
|
|
- locale support
|
|
- conversion between character sets
|
|
- bignums
|
|
- ftp (and other internet protocols)
|
|
|
|
- pdcurses bindings
|
|
- queues additional to streams: have two positions (read/write) instead of one
|
|
|
|
- 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!
|
|
|
|
|
|
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
|
|
|
|
- better for backwards compatibility: default nilable, but ``not nil``
|
|
notation:
|
|
|
|
type
|
|
PWindow = ref TWindow not nil
|
|
- the two other parsers
|
|
|
|
|
|
Low priority
|
|
------------
|
|
|
|
- ``when T is int`` for generic code
|
|
- ``when validCode( proc () )`` for generic code
|
|
- 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
|
|
|
|
|
|
Other ideas
|
|
-----------
|
|
- startsWith `=^`
|
|
- endsWith `=$`
|
|
- ignore case `=?` --> `=$?` too?
|
|
|
|
|
|
RST
|
|
---
|
|
- footnotes; prefix :i: whitespace before :i:, _reference, `reference`__
|
|
__ anonymous: www.nimrod.org
|
|
- rewrite the parser to use the new better look ahead technique that c2nim
|
|
uses
|
|
|
|
|