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