Merge remote-tracking branch 'origin/8.1' into gobject-introspection
ADT.Scheduler: Fixed some bugs from inheriting ADT.Heap.Element.
Use ADT.Heap()->low_peek() to avoid losing track of the Consumer objects.
The testsuite tests for ADT.Scheduler should now pass again.
ADT.Scheduler: Use ADT.Heap()->peek() instead of Heap internals.
ADT.Scheduler: API fix mk II.
ADT.Scheduler()->get() now works as documented and intended again.
Reverts the testsuite changes from c2535027a79c958d5355686026e12ff78007b598.
ADT.TreeScheduler: Updated to new Heap API.
ADT.Scheduler: Reduce strictness in add().
Keeping track of whether a Consumer has been added or not can be
complicated in user code, so let's allow a double add() and have
it be a noop.
ADT.Scheduler: Use ADT.Heap()->remove().
There's no need to perform the remove()-operation by hand anymore.
ADT.Scheduler: Keep Consumer()->offset up to date.
This simplifies code that needs to check the priority of
potentially inactive consumers.
ADT.Scheduler: Keep the priority quanta in a variable.
This is to support caching of more complicated quanta calculations.
ADT.Scheduler: Increased the priority normalization theshold to 256.
This is to support weights normalized to the range [0,1].
ADT.Scheduler: LFUNs should typically be protected.
ADT.Scheduler: First version.
This is a data type intended to be used to distribute quanta of
a resource fairly among a set of prioritized consumers.