[Cython] CyFunction refactoring plan

mark florisson markflorisson88 at gmail.com
Fri Sep 30 09:40:02 CEST 2011


On 30 September 2011 07:47, Vitja Makarov <vitja.makarov at gmail.com> wrote:
> 2011/9/30 Vitja Makarov <vitja.makarov at gmail.com>:
>> 2011/9/30 Robert Bradshaw <robertwb at math.washington.edu>:
>>> On Thu, Sep 29, 2011 at 10:43 PM, Stefan Behnel <stefan_ml at behnel.de> wrote:
>>>> Vitja Makarov, 30.09.2011 06:41:
>>>>>
>>>>> 2011/9/28 Vitja Makarov:
>>>>>>
>>>>>> I tried to build simple plan for ongoing cython function refactoring
>>>>>>
>>>>>> * Replace assignment synthesis with SingleAssignmentNode, where LHS is
>>>>>> NameNode and RHS is PyCFunctionNode
>>>>>> * Split function body into python wrapper and C function
>>>>>> http://wiki.cython.org/enhancements/generators#Pythonfunctionrefactoring
>>>>>>
>>>>>> Then we can implement some features and optimizations:
>>>>>>
>>>>>> * Reduce difference between cdef and def functions
>>>>>> * Store runtime evaluated default values inside CyFunction, ticket #674
>>>>>> * Implement no-args super(), ticket #696
>>>>>> * Function call inlining
>>>>>
>>>>> If nobody don't mind I would start with first one.
>>>
>>> I would love to see this happen.
>>>
>>>> Please go ahead. :)
>>>>
>>>> Note that you will encounter some problems when enabling name assignments
>>>> for all named functions. I tried that at least once and it "didn't work",
>>>> but I didn't take the time yet to investigate them further.
>>>>
>>>> I assume you are going to work on this in your own repo?
>>>
>>> Please also coordinate with Mark's work on function dispatching for
>>> fused types.
>>>
>>
>> I assume that that fused type functions are cdef ones so I think that
>> should be easy to merge.
>> On the other hand it's better to have Mark's branch merged into master.
>>
>> Mark, what is the state of your fused types branch?
>> Is it possible to break it into smaller parts to ease reviewing and merging?
>>
>
> It seems I meant memview branch not fusedtypes.

There are 2 pending branches, _memview_rebase, which has support for
memoryviews, and fusedtypes. The former is ready for merge, it's
waiting to be reviewed. The fused types branch needs to subclass
CyFunction (it basically modified the old binding function). There was
also some duplicate functionality there, so I thought it'd be easier
and more convenient to use the utility code loading there.

Since it's not a strict dependency and it will be blocking progress, I
will try to find some time to get it merge-ready for master.

But no, it does cdef, cpdef and def methods, and it has some changes
to all function nodes (FuncdefNode, CFuncdefNode and DefNode). These
changes shouldn't be major though, but the logic in FusedFuncdefNode
does differentiate between all the different functions in order to
support them. Feel free to ask me about specifics any time.

> --
> vitja.
> _______________________________________________
> cython-devel mailing list
> cython-devel at python.org
> http://mail.python.org/mailman/listinfo/cython-devel
>


More information about the cython-devel mailing list