I would like community feedback on this issue:
The gist is that
Shr for primitive integers always rounds down, but
Shr for BigInt is rounding toward zero, which means it gives different results when shifting negative values. This behavior has existed ever since
BigInt was first added to the standard library in 2012!
BigInt::from_biguint(self.sign, self.data >> *rhs)
I doubt that was intended to behave differently than negative
i32, for instance – it’s just the most obvious way to implement
Shr in this case. Rounding down will require some conditional fixups.
But I think matching primitive behavior makes the most sense across the board, so I’d like to just change the behavior and call it a bug fix, without a semver bump. Would anybody object to this?