Generator

The run stack over 128 pushes, four-entry rule

Rendered here at the parameters it defaults to, with every essay that calls it — which is the same list as the blast radius of changing it.
The run stack over 128 pushes, four-entry ruleOne column per run pushed, each block a pending run with its height proportional to its length. The stack peaked at 7 entries over 128 runs and 4,096 elements, and 127 merges were performed. The policy exists to keep this shallow and the merges balanced: a stack that simply grew would merge one huge run against one tiny one at the end, which is the cost the whole mechanism is avoiding.stack depth, peak 7runs pushed, in order04,096128 runs127 mergespeak 7four-entry ruleelements pending, by run

The run stack over 128 pushes, four-entry rule

One column per run pushed, each block a pending run with its height proportional to its length. The stack peaked at 7 entries over 128 runs and 4,096 elements, and 127 merges were performed. The policy exists to keep this shallow and the merges balanced: a stack that simply grew would merge one huge run against one tiny one at the end, which is the cost the whole mechanism is avoiding.

Drawn at 700 × 400, wide on the page. Everything above is what merge-stack returns with no arguments; the caption is the generator's own, computed from the numbers in the drawing rather than written beside it.

2 essays call merge-stack. The drawing above is what it returns with no arguments at all; every call below passes it something, because a placement that passes nothing draws whichever member of the family the generator happens to default to rather than the one its essay argues about — which is what optcheck and figfill exist to catch.

Where it is called

Changing this generator changes every one of these figures.

The library, page 3 of 5 — where merge-stack sits