use --WORLD as root of all actions (GC just deletes --WORLD)
[mala.git] / NEWS
blob3684883cfb9eaf08fcd9d2314d24d443bd567cd2
1 Legend: - means planned/unreleased
2         + means in progres
3         * means finished/released
5 Following is a list of all planned and implemented features.
6 The topmost notes planned features for the release after the current one.
7 The second is the current state. Followed by any older releases.
10 - MaLa 0.3 (planed features)
11   - Improved VM
12     - ringbuffer for the program
13     - secondary types within the descriptor
14       types: dirty, int, float, mp ...
15     - source refactoring and cleanup
16     - pools for stringlib
17       - for descriptors
18       - for data (MRU dead queue, whatever) (maybe)
19       - stringlist nodes
20     - modules/loaders produce macros instead engine->program (--MALARC --COMMANDLINE ...)
21     - hierachical expansion parser (start with '--' then, else if '-..')
22     - accumulate/robust errorchecking (less if()'s compound check)
23     - segv handler instead ENOMEM checking in experimental branch
24     - prereserve objects in freelists/wordtable for errorhandlers
25     - mala_alloc wraper (general fault injection lib)
26     - general identifier naming rules enforcement
27     - better API for parameter-passing in parsers
28     - enhanced mala trace/debugger
29     - mala-states to common strings mala_state_parser substitutes current state?
30     - mala_predicates.c
31     - SEGV handler (setjump after sideeffects, rollback in case of segv, garbage collect, retry)
32     - refactor "--WORLD" lookup
33   - Language semantics
34     - dynamic preprocessor substitutions ({ becomes --BEGIN, } becomes --END) like subst macros
35     - voluntary typesystem with inheritance
36     - --STOP instruction yields MALA_ESTOP
37     - --ESCAPE --UNESCAPE for strings
38     - split --ERROR-FOO to --ERROR FOO (--DEF --ERROR --ERROR_%-1 as default handler)
39     - comma to list key = val1, val2, val3   ->   --DEF key --BEGIN val1 val2 val3 --END
40   - Modules
41     - readline
42     - libtcc
43     - libltdl
44     - dialog
45   - Documentation
46     - Texinfo Programmer doc
47     - Texinfo User doc generated by MaLa
48   - Security System
49   - Typesystem
50     - completion
51   - gettext
52   - make BUGS part of the testsuite
53   - fix BUGS
54   - test libmala by linking with it
55   - superstatic (-ffunction-sections) / dynamic build
56   - malacc
57   - getopt compatibility interface
60 - MaLa 0.2 (in progress)
61   Derived from the first hackerlab reference implementation
62   * Improved VM
63     * expansions while pushback_program .. less bucket/string copy issues
64     * refactor stringlist api (no direct CIRCLEQ calls)
65     * define order of expansions
66     * actioninit takes 'parent' char* , brief/help become own actions
67     * new mala_strings shared, buckets, lookup, copy on write
68     * array for common names (instead string lookup)
69     * constant initialized strings (either part, data or descriptor are const)
70     * accumulate/robust errorchecking (less if()'s compound check)
71     * *_dump needs stream handle (instead stderr)
72     * parsers which return SUCCESS or FAILURE are substituted with --NULL
73     * replace --NULL with --PASS
74     * add MALA_REMOVE state which suppresses side-effects (MALA_SIDEEFFECT macro?)
75       (-IF foo --PRINT bar instead --IF foo --BEGIN --PRINT bar --END)
76     + add a garbagge collector tracer ("GC: new $type '%s'" "GC: delete $type '%s'")
77     - garbagge collect actions (gc_depth in in action == gc count of string at instance?)
78     - change engine.program and engine.arguments to --PROGRAM and --ARGUMENTS
79   * Language semantics
80     * prepend unknown words with --DEFAULT-PARSER on mala_engine_run (defaults to --LITERAL)
81     * expansions dont do magic
82       * foo=bar becomes --SETENV foo bar
83       * ! --FOO becomes --NOT --FOO
84     * implement general --BEGIN --END blocks (compile to --BLOCK-nnnn with delayed evaluation)
85     * '_' is used internally as (namespace) delimiter
86         (underscore expansion prevents users from using it)
87     - prefix macros like --LITERAL and --NOT etc. evaluate %1
88     * --BEGIN already selects if it is a macro, expansion or substitution (unnamed macro)
89     - garbagge collect blocks instead self deletion
90     - rename --HERE to --BEFORE-HERE
91   - Modules
92     + std
93       + --SIGNATURE_--MACRO argumentspecs
94       + --RESULT_--MACRO returnspec
95       - --PRINTL prints blocks too
96       - parsers for things generated by expansions
97       - --ONCE macro expands and --DELetes macro
98     - strings
99     - integer arithmetic
100   - Documentation
101     - Buildin Help system
102     - general help for modules and mala (--HELP_MALA --HELP_STD etc)
103   * Tools
104     * macros for common parsers MALA_SUBSTITUTE_PARSER("FOO","BAR") etc.
105   * make dist
106   * mala program install
107     * output to stdout or error to stderr
108   * pkg-config support
110 * MaLa 0.1 (was never implemented for glibc)
111   Hackerlab reference implementation, incomatible with future stuff