On Thu, 2021-10-07 at 15:41 -0700, Brock Mendel wrote:
> Will this have any impact on the difficulty of finding "where is
> np.foo or
> ndarray.bar implemented"?
> 

I don't think so.  It is always a bit annoying to step through the
python and then C-layer before you reach the computation part (or know
from where it is fetched).
Just, now you end up in a C++ templated file rather than c.src
templated one.

Right now, it is probably even slightly better because it is easier to
grep for the function names, although I guess that could change.
The added complexity is that we have two ways to template C now... I
hope that will pay off soon (as in C++ is proofs useful in some way),
since it feels like replacing all `c.src` code is a pretty large
(although probably doable) endeavor.

Cheers,

Sebastian


> On Thu, Oct 7, 2021 at 3:02 PM Sebastian Berg
> <sebast...@sipsolutions.net>
> wrote:
> 
> > On Wed, 2021-08-25 at 17:50 -0500, Sebastian Berg wrote:
> > > On Wed, 2021-08-25 at 17:48 +0200, Serge Guelton wrote:
> > > > Hi folks,
> > > > 
> > > > https://github.com/numpy/numpy/pull/19713 showcases what
> > > > *could* be
> > > > a
> > > > first step
> > > > toward getting rid of generated C code within numpy, in favor
> > > > of
> > > > some
> > > > C++ code,
> > > > coupled with a single macro trick.
> > 
> > 
> > A brief update on this:  The current plan would be to include this
> > in
> > the next release.  Largely as a trial balloon, so we see if there
> > are
> > any issues, e.g. with deployment, and can revert the changes if
> > there
> > are.
> > 
> > That would mean that some time within the next release cycle using
> > C++
> > for more things could be on the table and less difficult to
> > discuss.
> > 
> > Not knowing the C++ much myself, I assume that the current approach
> > is
> > fine and the only remaining thing is a brief review of the new code
> > to
> > ensure correct translation from C.  (Which does not preclude
> > refining
> > the C++ code later.)
> > 
> > Cheers,
> > 
> > Sebastian
> > 
> > 
> > > > 
> > > > Basically, templated code is an easy and robust way to replace
> > > > generated code
> > > > (the C++ compiler becomes the code generator when instantiating
> > > > code), and a
> > > > single X-macro takes care of the glue with the C world.
> > > 
> > > I am not a C++ export, and really have to get to used to this
> > > code.
> > > So
> > > I would prefer if some C++ experts can look at it and give
> > > feedback.
> > > 
> > > This will be a bit harder to read for me than our `.c.src` code
> > > for a
> > > while.  But on the up-side, I am frustrated by my IDE not being
> > > able
> > > to
> > > deal with the `c.src` templating.
> > > 
> > > One reaction reading the X-macro trick is that I would be more
> > > comfortable with a positive list rather than block-listing.  It
> > > just
> > > felt a bit like too much magic and I am not sure how good it is
> > > to
> > > assume we usually want to export everything (for one, datetimes
> > > are
> > > pretty special).
> > > 
> > > Even if it is verbose, I would not mind if we just list
> > > everything,
> > > so
> > > long we have short-hands for all-integers, all-float, all-
> > > inexact,
> > > etc.
> > > 
> > > 
> > > > 
> > > > Some changes in distutils were needed to cope with C++-specific
> > > > flags, and
> > > > extensions that consist in mixed C and C++ code.
> > > 
> > > <snip>
> > > 
> > > > Potential follow-ups :
> > > > 
> > > > - do we want to use -nostdlib, to be sure we don't bring any
> > > > C++
> > > > runtime dep?
> > > 
> > > What does this mean for compatibility?  It sounds reasonable to
> > > me
> > > for
> > > now if it increases systems we can run on, but I really don't
> > > know.
> > > 
> > > > - what about -fno-exception, -fno-rtti?
> > > 
> > > How do C++ exceptions work at run-time?  What if I store a C++
> > > function
> > > pointer that raises an exception and use it from a C program? 
> > > Does
> > > it
> > > add run-time overhead, do we need that `no-exception` to define
> > > that
> > > our functions are actually C "calling convention" in this
> > > regard?!
> > > 
> > > Run-time calling convention changes worry me, because I am not
> > > sure
> > > C++
> > > exception have a place in the current or even future ABI.  All
> > > our
> > > current API use a `-1` return value for exceptions.
> > > 
> > > This is just like Python's type slots, so there must be "off the
> > > shelve" approaches for this?
> > > 
> > > Embracing C++ exceptions seems a bit steep to me right now,
> > > unless I
> > > am
> > > missing something awesome?
> > > 
> > > I will note that a lot of the functions that we want to template
> > > like
> > > this, are – and should be – accessible as public API (i.e. you
> > > can
> > > ask
> > > NumPy to give you the function pointer).
> > > 
> > > Cheers,
> > > 
> > > Sebastian
> > > 
> > > 
> > > > - coding style?
> > > > - (I'm-not-a-farseer-I-don-t-know-all-topics)
> > > > 
> > > > _______________________________________________
> > > > NumPy-Discussion mailing list
> > > > NumPy-Discussion@python.org
> > > > https://mail.python.org/mailman/listinfo/numpy-discussion
> > > > 
> > > 
> > > _______________________________________________
> > > NumPy-Discussion mailing list
> > > NumPy-Discussion@python.org
> > > https://mail.python.org/mailman/listinfo/numpy-discussion
> > 
> > _______________________________________________
> > NumPy-Discussion mailing list -- numpy-discussion@python.org
> > To unsubscribe send an email to numpy-discussion-le...@python.org
> > https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> > Member address: jbrockmen...@gmail.com
> > 
> _______________________________________________
> NumPy-Discussion mailing list -- numpy-discussion@python.org
> To unsubscribe send an email to numpy-discussion-le...@python.org
> https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
> Member address: sebast...@sipsolutions.net

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
NumPy-Discussion mailing list -- numpy-discussion@python.org
To unsubscribe send an email to numpy-discussion-le...@python.org
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: arch...@mail-archive.com

Reply via email to