Marcus Brinkmann marcus@gnu.org wrote:
On Tue, Mar 19, 2002 at 11:17:55AM +0100, Joerg Schilling wrote:
If errno does not fit into 31 bit, then it is broken because erno must be of type int ant here is no statement to allow errno to be negative.
Maybe it was 30 bits. I don't remember it too well anymore. It was a problem that ruby was using one bit of the int for itself, so the effective bit length of int was reduced by one, which wasn't enough for us.
Yes, it was 30 bits. Ruby uses the least significant bit for marking an object as a Fixnum and the resulting number is still signed. The error codes of the Hurd need 31 bits (and are thus unsigned), because Mach uses some upper bits to encode error system and subsystem numbers in error values. But that was only one of many issues with Ruby on the Hurd, and while we have a Debian package thanks to Moritz' work, the upstream version doesn't compile yet.
Cheers, GNU/Wolfgang