Vitja Makarov | 2 Oct 19:52 2011

Re: [Cython] CyFunction refactoring plan

2011/9/30 mark florisson <markflorisson88@...>:
> On 30 September 2011 07:47, Vitja Makarov
<vitja.makarov@...> wrote:
>> 2011/9/30 Vitja Makarov <vitja.makarov@...>:
>>> 2011/9/30 Robert Bradshaw <robertwb@...>:
>>>> On Thu, Sep 29, 2011 at 10:43 PM, Stefan Behnel
<stefan_ml@...> 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
>>>>>>> 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.

I've moved def node assignment synthesis into
DefNodeAssignmentSynthesis transformation.

Instead of moving defnode into PyCFunctionNode I've inserted
assignment statement right after defnode.
This is much more easy and seems ok to me.