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

Reply via email to