I would like community feedback on this issue:

https://github.com/rust-num/num/issues/347

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?