This site is a static rendering of the Trac instance that was used by R7RS-WG1 for its work on R7RS-small (PDF), which was ratified in 2013. For more information, see Home.

Ticket 349: Define exact integers to be at least 24 bits

2012-04-09 22:12:17
WG1 - Core
2012-02-24 06:53:39

Currently, R7RS (tracking R5RS) does not constrain the sizes of exact integers: in principle, the maximum exact integer supported by an implementation could be as small as 7 (though that would seriously limit the maximum sizes of strings, vectors, and bytevectors as well). R6RS requires systems to support "practically unlimited" size exact integers. It also requires that a subset of these exist, called fixnums, which must support at least the range -223 to 223-1. (Supposedly this range was chosen because it is the range of fixnums in MIT Scheme, and all other practical Schemes have larger ranges for their fixnums.) I propose that we adopt this range as the minimum range of R7RS exact integers.

The immediate issue here is that a module name may contain (non-negative) exact integers as well as identifiers in R7RS. For such names to be portable, there must be a portable range of exact integers.

I understand the goal of this proposal, but it doesn't fit well with the idea that we support embedded Schemes, which often run on devices with CPUs of less than 32 bits. Marc Feeley's group, I believe, has such an implementation. Should they not be considered Scheme just because they run on such CPUs and don't support bignums?

See FixnumInfo for information on 39 Schemes.


This proposal was rejected by the WG. #359, which is not yet decided, attempts to accomplish the same result in a different way.