[Numpy-discussion] C-API change for 1.2

David Cournapeau cournape@gmail....
Mon Aug 18 21:49:10 CDT 2008

On Mon, Aug 18, 2008 at 10:04 AM, Charles R Harris
<charlesr.harris@gmail.com> wrote:
>If you could figure out how to add a new flags field
> without affecting the old one or requiring existion applications to be
> recompiled, that would be good.

Adding a member to a struct does not break ABI as long as the struct
is not used in another struct (or you could use something like C++
pimpl: using struct inside struct is how inheritence is implemented by
most compilers I believe in C++, and pimpl is often used to add
members to inherited classes).

> We also need to distinquish between internal
> and external ABI's.

What is internal and external ABI ?

> One way to avoid the problems like this is to put some
> "spares" in the original structure to reserve space for future enhancements.

If pimpl can be used in C python, I think it is better to use this
than reserving space.


I still don't know enough about C internals of numpy, but I believe
both would break a lot of code at the API level.

> It can also be useful to use getters and setters, ala C++, in the interface.

Yes, that's basically what the pimpl principle is about. But it breaks
ABI and API (see gtk 3.0 discussion for the same kind of problems).




More information about the Numpy-discussion mailing list