[Python-Dev] Type of range object members
"Martin v. Löwis"
martin at v.loewis.de
Tue Aug 15 09:25:35 CEST 2006
Alexander Belopolsky wrote:
> Since on most platforms ssize_t is the same as long, the choice
> between the two is just a matter of self-documenting code.
No, it would be an actual change: on Win64,
sizeof(Py_ssize_t)>sizeof(long).
> Speaking
> of which, I find it unfortunate that the name Py_ssize_t was selected
> for the typedef. I would prefer Py_index_t. The first time I saw
> Py_ssize_t, I did not notice the double 's' and thought it was an
> unsigned type.
Hmm. That you fail to read it correctly can hardly be an argument
against it.
> On the second look, I've realized that it is signed
> and started wondering why not ptrdiff_t. I understand that ssize_t
> is defined by POSIX as the return type of functions such as "read"
> that can return either size or -1 for error. I don't think POSIX
> mandates sizeof(size_t) == sizeof(ssize_t), but I may be wrong.
In the rationale (XRAT) they say
"This is intended to be a signed analog of size_t."
They don't mandate it to have the same size, but it is the expectation
that implementations typically will.
> I would agree that ptrdiff_t, although standard C, is not a very
> intuitive name, but ssize_t is even less clear.
In the discussion, ptrdiff_t was never brought up as an alternative
(intptr_t was; see the PEP for why it is unsuitable). ssize_t seemed
most natural to me since size_t is the C "number of bytes" type,
and we need a signed version of it.
Regards,
Martin
More information about the Python-Dev
mailing list