http://www.perlmonks.org?node_id=973616

bulk88 has asked for the wisdom of the Perl Monks concerning the following question:

This is related to supporting SSE 128 bit data in Perl. 32 bit Perl doesn't come with quads/Q/q pack letter. I have a C library that uses 64 bit ints. I use perl on windows. My C compiler also has no problems with 64 bit ints. Perl NVs don't loose integer precision until 2^53. 53 is not 64. What should my XS wrapper around this C library return the 64 bit ints as in 32 bit perl? There seems to be alot negativity over Math::BigInt's bloatedness. Also how to do you load packed little endian numbers into Math::BigInt, it seems bigint only knows what big endian ASCII hex is for importing numbers. The solution should be CPAN grade. Quads are very rarely used by this C library but they need to be exposed somehow for the rare case someone wants to call that function. The simplest thing is, on 32 bits, a 64 bit int is a 8 byte packed LE PV string, conversion routines warn() and pads if under 8 bytes long. On 64 bits its a IV/UV. Is this last solution the best solution?