1 | |
1 | |
2 | TODO: call/cc broken with or with SCHEME_STACK, also in tinyscheme |
2 | TODO: call/cc broken with or with SCHEME_STACK, also in tinyscheme |
|
|
3 | TODO: fix .atom names |
|
|
4 | TODO: |name|? (TOK_STRATOM) |
|
|
5 | TODO: simpler cell memory management, only one block |
3 | |
6 | |
4 | - major size optimisations |
7 | - major size optimisations |
5 | - struct layout for both typical CISC and RISC cpus. |
8 | - struct layout for both typical CISC and RISC cpus. |
6 | - optional error messages. |
9 | - optional error messages. |
7 | - optional error checking. |
10 | - optional error checking. |
… | |
… | |
10 | - faster and vastly simpler vector memory management (execution speed |
13 | - faster and vastly simpler vector memory management (execution speed |
11 | is roughly twice faster than tinyscheme when optimised for size, and 2.5 |
14 | is roughly twice faster than tinyscheme when optimised for size, and 2.5 |
12 | times faster when optimised for speed). |
15 | times faster when optimised for speed). |
13 | - no need for consecutive cells |
16 | - no need for consecutive cells |
14 | - more compact and faster vectors. |
17 | - more compact and faster vectors. |
15 | - resizable vectors (not exposed yet) |
18 | - resizable vectors (TODO: not exposed yet). |
16 | - faster environment implementation, not hashed by name but by symbol address. |
19 | - faster environment implementation, not hashed by name but by symbol address. |
17 | - simpler cell memory management, only one block |
20 | - simpler and faster memory management (no need for sorted free lists). |
18 | - much faster call stack implementation, fully supporting continuations, |
21 | - much faster call stack implementation, fully supporting continuations, |
19 | while greatly reducing cell thrashing, thus fewer gc's and overall |
22 | while greatly reducing cell thrashing, thus fewer gc's and overall |
20 | much faster execution. |
23 | much faster execution. |
21 | - allow full 32 bit size range for strings and vectors. |
24 | - allow full 32 bit size range for strings and vectors, where possible. |
22 | - made ports optional. |
25 | - made ports optional. |
23 | - made error checking and error strings optional. |
26 | - made error checking and error strings optional. |
24 | - ripped out features: dynamic loading, nonstandard C targets. |
27 | - ripped out features: dynamic loading, nonstandard C targets. |
25 | - fix numerous ISO C violations (mostly _ namespace). |
28 | - fix numerous ISO C violations (mostly _ namespace). |
26 | - fix numerous uninitialised value violations. |
29 | - fix numerous uninitialised value violations. |
27 | - fix some bufer overflows (mostly relying on _sprintf terminating with 0). |
30 | - fix some bufer overflows (mostly relying on _snprintf terminating with 0). |
28 | - fix numerous sign/truncation problems. |
31 | - fix numerous sign/truncation problems. |
29 | - remove limit of 65535 args maximum. |
32 | - remove limit of 65535 args maximum. |
30 | - move ~5kb opcode table into read-only segemnt, saves 5kb rss. |
33 | - move ~6kb opcode table into read-only segemnt, saves 6kb rss. |
31 | - reduce ~5kb opcode table to 1.2kb. |
34 | - reduce ~6kb opcode table to 1.2kb. |
32 | - subnormals are no longer flushed to zero in some comparisons. |
35 | - subnormals are no longer flushed to zero in some comparisons. |
|
|
36 | - scheme fix: gensym does not intern the symbol. |
|
|
37 | - scheme fix: properly support atom names starting with '.' |
33 | |
38 | |
34 | TODO: atom names starting with dot cannot currently be parsed due to a tinyscheme bug. |
|
|
35 | |
|
|