blob: 31fce261a2f4b7c2e698cac59f12a002e6ec3737 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
- thread support: threadvar on Windows seems broken;
add --deadlock_prevention:on|off switch
- we need a way to disable tests
- deprecate ^ and make it available as operator
- test branch coverage
- checked exceptions
- built-in serialization
- do not ambiguity error for methods if ambiguity only affects the same
dispatcher anyway
- slicing
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
|