One final note: I'm curious what the reasoning behind this change is. With NACKs, there was no need to track least_unacked in the PCB. When the receiver got STOP_WAITING it could just eliminate any NACK blocks that didn't matter.
It's not the end of the world, but if there are no really compelling reasons to use SACK I'd prefer the more resource-efficient version.
Martin