aboutsummaryrefslogtreecommitdiff
path: root/TODO
blob: 6198020cdf27c841d31b55c313a614e897e73ee1 (plain)
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
CORE LANGUAGE FEATURES

- Proc default arguments
- Traces
- [static] command

CORE COMMANDS

- All the missing standard core commands not related to I/O, namespaces, ...
- [tail] command for programmer-driven tail recursion optimization
- The current [expr] needs a lot of work, expecially operators && and ||
  are not lazy. Math functions are not present but probably will never
  be added as expr functions, but as Tcl commands, like [sin], [cos] and
  so on.
- [onleave] command, executing something as soon as the current procedure
  returns. With no arguments it returns the script set, with one appends
  the onleave script. There should be a way to reset.
- [proc] without arguments may return a list of all the procedures
  (no C commands). While with a single argument (the name of a proc)
  may return [list $args $statics $body].

OTHER COMMANDS NOT IN TCL BUT THAT SHOULD BE IN JIM

- Set commands: [lunion], [lintersect], and [ldifference]

EXTENSIONS

- Regexp extension
- OOP system

SPEED OPTIMIZATIONS

- Find a way to avoid interpolation/reparsing in "foo($bar)" tokens.
  See the "sieve" and "ary" bench performances, result of this problem.
  (to compare with sieve_dict is also useful.)
- Many other possible things, including better literal sharing.
- Generate .c from Jim programs, as calls to the Jim API to avoid
  the performance penality of Jim_EvalObj() overhead. In the future
  try to generate the calls like a JIT emitting assembler from
  Jim directly.

IMPLEMENTATION ISSUES

- Objects lazy free.
- Rewrite all the commands accepting a set of options to use Jim_GetEnum().

ERROR MESSAGES

- Display the procedure relative file number where the error happened.
  Like:

  In procedure 'check' line 11, called at file "test.tcl", line 1024

  instead of just:

  In procedure 'check' called at file "test.tcl", line 1024

REFERENCES SYSTEM

- Unify ref/getref/setref/collect/finalize under an unique [ref] command.
- Add a 'call' attribute to references in order to call a given procedure
  if the name of a reference is used as command name.

API FUNCTIONS TO EXPORT

- Jim_FormatString()

RANDOM THINGS TO DO ASAP

- .jimrc loading, using the ENV variable