It is I32 since this is the level where the perl level is implemented in terms of C code and I32 is part of the C level, not the API for accessing the perl level *from* C.
I looked at the CORE/*.h and it seems that there is no requirement that I32 or I16 have any specific type/size so it should be possible to have a fully 64bit perl. I would definitely like to know if that hypothesis is true. (This is coming from the issue of converting our soon to be available 64bit piddles into perl lists and what sort of checks we'll need to make to handle this correctly and compatibly). Thanks, Chris On Fri, Feb 24, 2012 at 10:08 AM, David Mertens <[email protected]> wrote: > <scratches head> > > Yeah, I wonder why it's an I32 instead of an IV. Want me to ask the p5p > list? > > David > > > On Fri, Feb 24, 2012 at 9:02 AM, Chris Marshall <[email protected]> > wrote: >> >> I guess it could still be true/full 64bit if the I32 >> data type was actually a 64bit integer... >> >> --Chris >> >> On Fri, Feb 24, 2012 at 9:53 AM, Chris Marshall <[email protected]> >> wrote: >> > The specific question is about the internal perl >> > array index type as exposed by the perlapi. E.g., >> > >> > SV* av_delete(AV *av, I32 key, I32 flags) >> > bool av_exists(AV *av, I32 key) >> > void av_extend(AV *av, I32 key) >> > SV** av_fetch(AV *av, I32 key, I32 lval) >> > void av_fill(AV *av, I32 fill) >> > I32 av_len(const AV *av) >> > .... >> > >> > where you can see the I32 type everywhere. I >> > found no instance where it is not I32 in my >> > perldoc searches nor in my various google >> > attempts. Maybe the feature is available in >> > a late model perl. >> > >> > Thanks for the reply, >> > Chris >> > >> > >> > >> > On Thu, Feb 23, 2012 at 8:55 PM, Sisyphus <[email protected]> >> > wrote: >> >> >> >> ----- Original Message ----- From: "Chris Marshall" >> >> >> >> >> >>> Is there such a thing as a "true 64bit perl" where >> >>> the number of elements in an array would be >> >>> indexed with, say, a 64bit int data type? >> >> >> >> >> >> I've been told there exists compilers on some 64-bit systems where >> >> sizeof(int) == 8. >> >> One would expect that a perl built with such a compiler would index its >> >> arrays with a 64-bit integer data type. >> >> >> >> I don't have access to any "-Duse64bitall" builds of perl. I assumed >> >> they >> >> would index their arrays with a 64-bit integer data type, but am unable >> >> to >> >> check. >> >> >> >> Note also that the *absence* of the use64bitxxx flags does not imply >> >> 32-bits. (You need to examine other flags, such as ivsize.) From the >> >> INSTALL >> >> file that ships with the perl source: >> >> >> >> ################################# >> >> Natively 64-bit systems need neither -Duse64bitint nor -Duse64bitall. >> >> On these systems, it might be the default compilation mode, and there >> >> is currently no guarantee that passing no use64bitall option to the >> >> Configure process will build a 32bit perl. Implementing -Duse32bit* >> >> options is planned for a future release of perl. >> >> ################################# >> >> >> >> Cheers, >> >> Rob >> >> >> >> _______________________________________________ >> Perldl mailing list >> [email protected] >> http://mailman.jach.hawaii.edu/mailman/listinfo/perldl > > > > > -- > "Debugging is twice as hard as writing the code in the first place. > Therefore, if you write the code as cleverly as possible, you are, > by definition, not smart enough to debug it." -- Brian Kernighan > _______________________________________________ Perldl mailing list [email protected] http://mailman.jach.hawaii.edu/mailman/listinfo/perldl
