1 Legend: - means planned/unreleased
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)
12 - ringbuffer for the program
13 - secondary types within the descriptor
14 types: dirty, int, float, mp ...
15 - source refactoring and cleanup
18 - for data (MRU dead queue, whatever) (maybe)
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?
31 - SEGV handler (setjump after sideeffects, rollback in case of segv, garbage collect, retry)
33 - dynamic preprocessor substitutions ({ becomes --BEGIN, } becomes --END) like subst macros
34 - voluntary typesystem with inheritance
35 - --STOP instruction yields MALA_ESTOP
36 - --ESCAPE --UNESCAPE for strings
37 - split --ERROR-FOO to --ERROR FOO (--DEF --ERROR --ERROR_%-1 as default handler)
44 - Texinfo Programmer doc
45 - Texinfo User doc generated by MaLa
50 - make BUGS part of the testsuite
52 - test libmala by linking with it
53 - superstatic (-ffunction-sections) / dynamic build
55 - getopt compatibility interface
58 - MaLa 0.2 (in progress)
59 Derived from the first hackerlab reference implementation
61 * expansions while pushback_program .. less bucket/string copy issues
62 * refactor stringlist api (no direct CIRCLEQ calls)
63 * define order of expansions
64 * actioninit takes 'parent' char* , brief/help become own actions
65 * new mala_strings shared, buckets, lookup, copy on write
66 * array for common names (instead string lookup)
67 * constant initialized strings (either part, data or descriptor are const)
68 * accumulate/robust errorchecking (less if()'s compound check)
69 * *_dump needs stream handle (instead stderr)
70 * parsers which return SUCCESS or FAILURE are substituted with --NULL
71 * replace --NULL with --PASS
72 * add MALA_REMOVE state which suppresses side-effects (MALA_SIDEEFFECT macro?)
73 (-IF foo --PRINT bar instead --IF foo --BEGIN --PRINT bar --END)
74 - add a garbagge collector tracer ("GC: new $type '%s'" "GC: delete $type '%s'")
75 - garbagge collect actions (gc_depth in in action == gc count of string at instance?)
76 - change engine.program and engine.arguments to --PROGRAM and --ARGUMENTS
78 * prepend unknown words with --DEFAULT-PARSER on mala_engine_run (defaults to --LITERAL)
79 * expansions dont do magic
80 * foo=bar becomes --SETENV foo bar
81 * ! --FOO becomes --NOT --FOO
82 * implement general --BEGIN --END blocks (compile to --BLOCK-nnnn with delayed evaluation)
83 * '_' is used internally as (namespace) delimiter
84 (underscore expansion prevents users from using it)
85 - prefix macros like --LITERAL and --NOT etc. evaluate %1
86 - --BEGIN already selects if it is a macro, expansion or substitution (unnamed macro)
87 - garbagge collect blocks instead self deletion
88 - rename --HERE to --BEFORE-HERE
91 + --SIGNATURE_--MACRO argumentspecs
92 + --RESULT_--MACRO returnspec
93 - --PRINTL prints blocks too
94 - parsers for things generated by expansions
99 - general help for modules and mala (--HELP_MALA --HELP_STD etc)
101 * macros for common parsers MALA_SUBSTITUTE_PARSER("FOO","BAR") etc.
103 * mala program install
104 * output to stdout or error to stderr
107 * MaLa 0.1 (was never implemented for glibc)
108 Hackerlab reference implementation, incomatible with future stuff