The problem is that multiarray and ufunc are different modules, and only
allowed to communicate via the public api.

IMHO this creates all kinds of ugly distortions of the public api, and
sooner or later we should merge these modules together so they can
collaborate more directly. But that's not happening in 1.8 ;-)
On 28 Oct 2013 15:21, "Julian Taylor" <notifications@github.com> wrote:

> In numpy/core/include/numpy/ndarraytypes.h:
>
> > @@ -1270,33 +1291,71 @@ struct PyArrayIterObject_tag {
> >          npy_intp              index;                   /* current index */
> >          int                   nd;                      /* number of dims */
> >          npy_intp              dimensions[NPY_MAXDIMS]; /* dimensions */
> > -        PyArrayIterObject     *iters[NPY_MAXDIMS];     /* index object
> > -                                                          iterators */
> > -        PyArrayIterObject     *ait;                    /* flat Iterator for
> > -                                                          underlying array */
> > +        NpyIter               *outer;                  /* index objects
>
> @charris <https://github.com/charris> should we still make the structure
> private for 1.8 to be on the safe side?
>
> —
> Reply to this email directly or view it on GitHub<https://github.com/numpy/numpy/pull/3798/files#r7251223>
> .
>