Changes for version 0.10 - 2026-10-26

  • All tests REALLY pass now (no postponement, no TODO).
  • Groups. #start_group checks Fab/group_nesting/FLAVOR/allowed_parents also at top level, where the enclosing flavor is '' (as inside an unnamed group). Incompatible: a flavor whose allowed_parents doesn't list '' can no longer be opened at top level.
  • Groups. Configuration changes made by the options of #start_group (e.g. [callbacks=...]) are always undone at #end_group, whatever the flavor restores: by an undo action at priority 1000.0, after the configuration is restored at 0.0. An unknown bundle in [callbacks=...] dies before the group is opened.
  • Callbacks. The new setting Fab/callbacks_scope says from where on a switch of the callbacks (e.g. #start_group[callbacks=...]) is used: nested (the default, the behaviour so far: only input read later, e.g. included files) or next_line (from the line after the directive).
  • Call stack. Incompatible: call_stack__push() requires a filter name, so Fab/call_stack_filter_name stays paired with Fab/call_stack_prefixes.
  • Joining. Incompatible: a hash is joined as the flat list key1, value1, key2, value2, ..., cycling through all the joiners, as documented; permitted_joiners_modulo counts all of these joiners.
  • TODO. An engine for streaming to STDOUT: output held back by a promise may continue once an authority (a self-declared name, overridable by others) declares the promise finished.
  • Tests. No TODO tests are left in t/14-config-and-groups.t.

Modules

A powerful, general-purpose document expansion framework (currently Control Flow, Loops, and Caching are unimplemented {???})