We assume native word size to be 64-bit in a few places:
primitives: Basic.Integers.any(Word|Int), where we increment our parsing address by a constant 8 without checking word size
some combinators with efficient "bulk" operations (byteString, isolateToNextNull)
maybe some other places
I've just learned you can #include "MachDeps.h" and then access WORD_SIZE_IN_BITS. We could check this at the various locations where we assume native word size, and provide 32-bit versions as well as existing 64-bit ones.
This would introduce some amount of ugliness for a usecase that I don't think is popular (heck I don't even know how to build a 32-bit GHC). If it still seems reasonable, I'd gladly start on it.
We assume native word size to be 64-bit in a few places:
Basic.Integers.any(Word|Int)
, where we increment our parsing address by a constant 8 without checking word sizebyteString
,isolateToNextNull
)I've just learned you can
#include "MachDeps.h"
and then accessWORD_SIZE_IN_BITS
. We could check this at the various locations where we assume native word size, and provide 32-bit versions as well as existing 64-bit ones.This would introduce some amount of ugliness for a usecase that I don't think is popular (heck I don't even know how to build a 32-bit GHC). If it still seems reasonable, I'd gladly start on it.