According to the documentation, max heap size = block_size * uint15 max, so for 8-byte blocks (by default), it's:
8 * 32767 = 2621424 B
This limitation is not mentioned in the "configuration" section of the README. I would consider this information important enough to mention there, but even more important would be adding a runtime check to verify if the numbers align.
I would consider adding an assert inside umm_init_heap() to check if requested size of the heap is within limits.
@rhempel what do you think about it? I can submit a PR if you agree it makes sense.