On Fri, Sep 11, 2009 at 3:52 PM, Robert Bradshaw <[email protected]> wrote: > On Sep 11, 2009, at 12:24 PM, Darren Dale wrote: > >> On Fri, Sep 11, 2009 at 1:36 PM, Dag Sverre Seljebotn >> <[email protected]> wrote: >>>> On Fri, Sep 11, 2009 at 12:26 PM, Dag Sverre Seljebotn >>>> <[email protected]> wrote: >>>>> Hi Darren, >>>>> >>>>>> Hello, >>>>>> >>>>>> I am just learning cython, please bear with me. This is maybe a >>>>>> common >>>>>> question, but I didn't recognize it in the documentation or the >>>>>> FAQs. >>>>>> How do you make cython definitions available to external C >>>>>> code? For >>>>>> example, converting some of numpy's code in numpy/core/src/ >>>>>> multiarray >>>>>> to cython without affecting the C API? >>>>> >>>>> Doing just this is something I've been eager to try myself, >>>>> please don't >>>>> hesitate to ask any questions you might have in the process. >>>>> >>>>> I hope it's OK that I write down some thoughts I have about >>>>> this, even >>>>> if >>>>> they're not really related to your question. >>>>> >>>>> One thing that complicates this process is that NumPy has a >>>>> requirement >>>>> that both modes of building the multiarray module works: >>>>> - Building all C files seperately, then linking >>>>> -- But this won't work with Cython out of the box because the >>>>> module >>>>> initialization code won't get called, so that globals etc. are not >>>>> initialized properly. >>>>> - Including all C files in a single master C file, then compile >>>>> only >>>>> that >>>>> one file >>>>> -- This won't work with Cython as it inserts module >>>>> initialization code >>>>> which will conflict with the module initialization code already >>>>> present >>>>> in multiarray. >>>> >>>> Where can I learn more about these requirements? >>> >>> It's just how the build works, there's two seperate ways of building >>> things; one "old" and one new which David introduced recently. I >>> asked >>> whether the old one would be dropped, but it appears not: >>> >>> http://thread.gmane.org/gmane.comp.python.numeric.general/32385 >>> >>> I'm not sure if this is all that well documented anywhere, I think >>> the >>> information has to be extracted on the mailing lists. Please ask >>> again >>> whenever you're stuck. >>> >>> If you can get Cython code into the multiarray module using any of >>> the >>> build modes it would be a great first step -- I don't expect it to >>> be easy >>> (because Cython is made for writing entire modules, not for mixing >>> with >>> other C source also making up the module), but I think it is doable. >> >> So let me see if I understood you: Cython is not currently designed to >> let you build a module up from several submodule sources, be they C or >> Cython, because it will not expose the symbols in those submodules. >> Isn't it possible to make these available by treating them as external >> C sources, using the "cdef extern from "spam.h":" discussed at >> http://docs.cython.org/docs/external_C_code.html#referencing-c- >> header-files >> ? >> >> Although I am very interested in diving into cython, if it is not >> currently a good fit for helping with the numpy py3 transition then I >> should probably focus on getting up to speed on what needs to be done >> with the existing numpy C code. > > Yes, you can use the include keyword to build up a module out of > several other files. The disadvantage of this is that you couldn't > compile pieces independently--the whole thing would end up being one > huge .c file. I don't think any of the obstacles for using Cython for > the core of NumPy are insurmountable, but they may require some > modification of Cython (e.g. to produce output .c files that are not > independent modules, made to be linked using c linker). It's not > clear the best way to go about this (though someone who knows more > about the NumPy build system would know better than I).
Could cython recognize a .pxc file as intended to generate a c file that is not a module? Darren _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
