1 Legend: - means planned/unreleased
3 * means finished/released
6 accumulate errorchecking (less if()'s compound check)
7 expansions while pushback_program .. less bucket/string copy issues
8 hierachical expansion parser (start with '--' then, else if '-*'..)
9 move (some) expansions to the loader code
14 Derived from the first hackerlab reference implementation
16 + refactor stringlist api (no direct CIRCLEQ calls)
17 - define order of expansions
18 - actioninit takes 'parent' char* , brief/help become own actions
19 * new mala_strings shared, buckets, lookup, copy on write
20 - ringbuffer for the program
21 + array for common names (instead string lookup)
22 - primary/secondary types within the descriptor
32 - for data (MRU queue, whatever) (maybe)
33 + constant initialized strings (descriptor is dynamic, char* is const)
34 - tabling (cache for results chksum:result[N] in actiondesc or action)
36 - prepend unknown words with --DEFAULT-PARSER (defaults to --LITERAL)
37 - '--LITERAL' puts the parameter to the arglist
38 - '--DELAY' dont evaluate the next argument
39 - expansions dont do magic
40 - foo=bar becomes --SETENV foo bar
41 - ! --FOO becomes --NOT --FOO
42 - remove the negated flag, use MALA_NEGATED vm state?
43 - store the 'end of scope' within the engine and --PARAM x reads args after the end
44 err reading new args as coroutine?
45 - implement general --BEGIN --END blocks (compile to --BLOCK-nnnn with delayed evaluation)
46 - named blocks --BLOCK-name ... --END-name
48 + macros for common parsers MALA_SUBSTITUTE_PARSER("FOO","BAR") etc.