miniscule, introduce `with' magic in nifty.h

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
major, turn the all-way merge into a N-way merge with N obtained by the current node in the sort strategy

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
major, only load pages that aren't already in the current run

This changeset adds primitive set operations.  For run X and next run Y with
page x in X run out of ticks, we only load pages Y \ X  just so the indices
of existing pages won't be fiddled with.

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
hygiene, add some more diagnostics to utesort routines

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
hygiene, add yet some more diagnostic output for drop_run()

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
chore, prevent short-circuiting from being optimised away by executing ...

the side-effect routine separately.

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
fix, load new run before dropping out-of-tick pages

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, refactor the load_run()/drop_run() flow in step_run()

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
fix, don't dump_runs() after successful sort run, step_run() would use drop_run() to do that for us

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Merge branch 'core/sort' into next

* core/sort:
  fix, don't dump_runs() after successful sort run, step_run() would use drop_run() to do that for us
  minor, refactor the load_run()/drop_run() flow in step_run()
  fix, load new run before dropping out-of-tick pages
  chore, prevent short-circuiting from being optimised away by executing ...
  hygiene, add yet some more diagnostic output for drop_run()
  hygiene, add some more diagnostics to utesort routines
  major, only load pages that aren't already in the current run
  major, turn the all-way merge into a N-way merge with N obtained by the current node in the sort strategy
  miniscule, introduce `with' magic in nifty.h
hygiene, refactor sorting routines to operate on struct sks_s objects

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
minor, use bitset (pgbs of struct sks_s) to determine whether or not to load_run() a page

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
chore, polish some diagnostics in utesort.c

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
fix, PEBKAC, drop runs even if there's no more strat nodes

Signed-off-by: Sebastian Freundt <freundt@ga-group.nl>
Merge branch 'core/sort' into next

* core/sort:
  fix, PEBKAC, drop runs even if there's no more strat nodes
  chore, polish some diagnostics in utesort.c
  minor, use bitset (pgbs of struct sks_s) to determine whether or not to load_run() a page
  hygiene, refactor sorting routines to operate on struct sks_s objects
Merge branch 'next'

* next:
  fix, PEBKAC, drop runs even if there's no more strat nodes
  chore, polish some diagnostics in utesort.c
  minor, use bitset (pgbs of struct sks_s) to determine whether or not to load_run() a page
  hygiene, refactor sorting routines to operate on struct sks_s objects
  fix, don't dump_runs() after successful sort run, step_run() would use drop_run() to do that for us
  minor, refactor the load_run()/drop_run() flow in step_run()
  fix, load new run before dropping out-of-tick pages
  chore, prevent short-circuiting from being optimised away by executing ...
  hygiene, add yet some more diagnostic output for drop_run()
  hygiene, add some more diagnostics to utesort routines
  major, only load pages that aren't already in the current run
  major, turn the all-way merge into a N-way merge with N obtained by the current node in the sort strategy
  miniscule, introduce `with' magic in nifty.h