updated test.sh for nobug compatibility, has still problems with joined stderr and...
[mala.git] / NEWS
blob0f1dc2af0b7f11c9ef4f37ab78c7f1a5e6c65df0
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     - secondary types within the descriptor
13       types: dirty, int, float, mp ...
14     - source refactoring and cleanup
15     - modules/loaders produce macros instead engine->program (--MALARC --COMMANDLINE ...)
16     - accumulate/robust errorchecking (less if()'s compound check)
17     - segv handler instead ENOMEM checking in experimental branch
18     - pre-reserve objects in freelists/wordtable for errorhandlers
19     - general identifier naming rules enforcement
20     - enhanced mala trace/debugger
21     - mala-states to common strings mala_state_parser substitutes current state?
22     - SEGV handler (setjump after sideeffects, rollback in case of segv, garbage collect, retry)
23     - refactor "--WORLD" lookup
24     - change engine.program and engine.arguments to --PROGRAM and --ARGUMENTS
25       --ENGINE / --BUCKET too
26   - Language semantics
27     - voluntary typesystem with inheritance
28     - --STOP instruction yields MALA_ESTOP
29     - --ESCAPE --UNESCAPE for strings
30     - split --ERROR-FOO to --ERROR FOO (--DEF --ERROR --ERROR_%-1 as default handler)?
31     - comma to list key = val1, val2, val3   ->   --DEF key --BEGIN val1 val2 val3 --END
32     - --SCOPE words can be attached to --SCOPE instead of --WORLD, --SCOPE itself is child of its environment (block or whatever) and deleted with it, new envs create a new --SCOPE
33   - Modules
34     - readline
35     - libtcc
36     - libltdl
37     - dialog
38   - Documentation
39     - Texinfo Programmer doc
40     - Texinfo User doc generated by MaLa
41   - Security System / Sandboxing
42   - Typesystem
43     - completion
44   - gettext
45   - make BUGS part of the testsuite
46   - fix BUGS
47   - test libmala by linking with it
48   - superstatic (-ffunction-sections) / dynamic build
49   - malacc
50   - getopt compatibility interface
53 + MaLa 0.2 (in progress)
54   Derived from the first hackerlab reference implementation
55   * Improved VM
56     * refactor stringlist api (no direct CIRCLEQ calls)
57     * actioninit takes 'parent' char* , brief/help become own actions
58     * new mala_strings shared, buckets, lookup, copy on write
59     * array for common names (instead string lookup)
60     * constant initialized strings (either part, data or descriptor are const)
61     * accumulate/robust errorchecking (less if()'s compound check)
62     - nobug dumpers
63     * replace --NULL with --PASS
64     * add MALA_REMOVE state which suppresses side-effects (MALA_SIDEEFFECT macro?)
65       (-IF foo --PRINT bar instead --IF foo --BEGIN --PRINT bar --END)
66     * new GC
67   * Language semantics
68     * expansions dont do magic
69       * foo=bar becomes --SETENV foo bar
70       * ! --FOO becomes --NOT --FOO
71     + preprocessor in mala (--PREPROCESS ...)
72       * define order of expansions
73       - literal_expansion `foo becomes --LITERAL, where ` is the default of --LITERAL-EXPANSION-CHAR
74       - backquote_expansion ``foo becomes `foo without literal expansion (escaping of literal expansion)
75       - numsplit_expansion -a10 becomes -a 10
76       - exclam_expansion ! becomes --NO ... TODO normal macro
77       - no_expansion --NO-foo or --no-foo becomes --NO --foo
78       - assign_expansion --foo=bar becomes --foo bar
79       - char_expansion -abc+def123 becomes -a -b -c +d +e +f 123
80       - plus_expansion +a becomes --NO -a
81       - underscore_expansion --foo_bar becomes --foo-bar
82       - bracket_expansion [foo bar] becomes --SECTION foo bar
83       - assign_contraction foo = bar becomes foo=bar for setenv_expansion
84       - envvar_expansion foo$bar or foo${bar} becomes --ENVSUBST foo${bar}
85       - setenv_expansion foo=bar becomes --SETENV foo bar
86       - brace_expansion { becomes --BEGIN and } becomes --END where { is the default value of --OPENING-BRACE and } is the default value of --CLOSING-BRACE
87       - list_expansion foo,bar,baz becomes --BEGIN foo bar baz --END where , is the default value of --LIST-SEPARATOR
88       - comand_expansion foo becomes --foo when --foo is a defined action
89     * implement general --BEGIN --END blocks (compile to --BLOCK-nnnn with delayed evaluation)
90     * '_' is used internally as (namespace) delimiter
91         (underscore expansion prevents users from using it)
92     * prefix macros like --NOT etc. evaluate %1
93     * --BEGIN already selects if it is a macro, expansion or substitution (unnamed macro)
94   - Modules
95     + std
96       + --SIGNATURE_--MACRO argumentspecs
97       + --RESULT_--MACRO returnspec
98       - --PRINTL prints blocks too
99       - parsers for things generated by expansions
100       - --ONCE macro expands and --DELetes macro
101     - strings
102     - integer arithmetic
103   - Documentation
104     - Buildin Help system
105       - explain macro-types: Predicate Procedure Function Literal
106     - general help for modules and mala (--HELP_MALA --HELP_STD etc)
107   + Tools
108     + macros for common parsers MALA_PARSER_SIMPLE("FOO", foo_parser) etc.
109   * make dist
110   * mala program install
111     * output to stdout or error to stderr
112   * pkg-config support
113   - big code cleanup (fixing TODO/BUG)
115 * MaLa 0.1 (was never implemented for glibc)
116   Hackerlab reference implementation, incomatible with future stuff