[r6rs-discuss] [Formal] Bytevectors: `big' and `little' endianness under-specified

From: Ludovic Courtès <ludovic.courtes>
Date: Fri Feb 9 16:07:37 2007

---
This message is a formal comment which was submitted to formal-comment_at_r6rs.org, following the requirements described at: http://www.r6rs.org/process.html
---
Submitter:      Ludovic Court?s
Email:          ludovic.courtes at laas.fr
Type of Issue:  Defect
Priority:       Minor
Component:      Bytevectors
Report:         Revised^5.92 Report on the Algorithmic Language Scheme,
                Standard Libraries
Summary:        `big' and `little' endianness are under-specified
Section 2.1 of the report (page 5) requires implementations to support
the `big' and `little' endianness types but does not specify them.
This is an issue since beside byte ordering, "word" ordering may also
differ among encodings (either at the hardware level or among
software-implemented encodings).  For instance, the GNU C Library
<ieee754.h> header shows that 3 different encodings of IEEE-754 doubles
are in use at the hardware level, depending on both byte order _and_
word order [0].  Likewise, GMP's integer export functions allow for the
full spectrum of integer encoding, thanks to the ORDER, ENDIAN and SIZE
arguments [1].
Therefore, I believe the meaning of `big' and `little' should be made
explicit, both for integer and IEEE double encoding.  They should
probably reflect the encodings most commonly referred to under these
names.  Thus, for integers, 8-bit atomic elements [2] should be assumed.
For IEEE doubles, `little' and `big' should correspond to cases where
both byte and word ordering are the same.
Thanks,
Ludovic.
[0] http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/ieee754/ieee754.h?rev=1.12&content-type=text/x-cvsweb-markup&cvsroot=glibc
[1] http://www.swox.com/gmp/manual/Integer-Import-and-Export.html
[2] Using the terminology found in:
    http://en.wikipedia.org/wiki/Endian#Examples .
Received on Fri Feb 09 2007 - 09:30:19 UTC

This archive was generated by hypermail 2.3.0 : Wed Oct 23 2024 - 09:15:01 UTC