added Execution.print: accumulate print operations for some command execution, which are applied later and print time;
misc tuning;
more uniform Execution.fork vs. Execution.print;
asynchronous Execution.fork_prints, entrusted to Execution.fork management (NB: Command.print_finished is only relevant for persistent print functions);
unused;
prefer Context_Position where a context is available;
prefer explicit Context_Position.is_visible -- avoid redundant message composition;
tuned signature;
tuned proofs
clarified valid_id: always standardize towards static command.id;
less markup by default -- this is stored persistently in Isabelle/Scala;
removed dead code;
support to redirect report on asynchronous / non-strict print function (NB: not scalable due to bulky merge of markup trees);
tuned signature -- expose less intermediate information;
more careful treatment of multiple command states (eval + prints): merge content that is actually required;
more standard Markup_Tree merge, including trivial cases;
tuned signature;
more frugal merge of markup trees: filter wrt. subsequent query;
more frugal merge of markup trees: non-overlapping tree counts as empty;
clarified Isabelle/ML bootstrap, such that Execution does not require ML_Compiler;
redirect ML_Compiler reports more directly: only the (big) parse tree report is deferred via Execution.print (NB: this does not work for asynchronous "diag" commands);
more explicit ML_Compiler.flags;
tuned;
back to cumulative treatment of command status, which is important for total accounting (amending 8201790fdeb9);
more frugal merge of markup trees: restrict to expected range before checking trivial cases, e.g. relevant for sporadic warnings (eval_exec) within big ML reports (print_exec);
tuned;
tuned -- avoid code duplication;