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

Reply via email to