Flextype was an early implementation of fast method-calling in types
like channel, tasklet, and even stacklessmodule ... ;-)

This was written around 2002, even before new-style classes and type unification existed, and it has then never been used by anybody or understood, I presume,
because I never got any question about this in ages.

Today, this is redundant and we removed it right now.

This is a good step for reducing the size of the stackless code and using
more current techniques.

Thanks for resolving that -- Chris


On 12/02/14 21:42, Kristján Valur Jónsson wrote:

Hello all.

I am currently working on removing a piece of internal code called "Flextype" and reorganizing the stackless library. This will involve splitting it into a builting module, _stackless, and a .py module, stackless.py.

One of the things I want to do is to remove functionality that I think is probably not relied upon, in the C api:

certain C api functions that are methods on channes and tasklets, will currently work in a virtual way. This is best explained by an example:

if PyChannel_Send(c, d) is called with an instance of PyChannelType, then an internal C function is invoked as expected.

However, if c is an instance of an inherited type, one that overrides "send", then PyChannel_Send(c, d) will actually behave as if "c.send()" had been called from python code. It will invoke the overriddedn "send" function.

Originally, the idea was that frameworks would perhaps replace the standard classes with subclasses, and still want to pass these through to C code that would work exactly as python code.

However, this is an unlikely scenario, IMHO. Also, this sort of behaviour is very unusual in a pythonesque API: PyList_Append(l, a) is _not_ the same as calling "l.append(a)", because a subclass' "append" method won't be invoked.

Are there any objections to me removing this fringe functionality?

In other news, I'll be removing the modules' __tasklet__ and __channel__ attributes. These are documented to represent the actuall classes created when channels and tasklets are created using the C api and the python functions. However, this is incorrect. These attributes are settable and gettable, but otherwise not used anywhere! Which shows how useful they are.

Cheers,

Kristján



_______________________________________________
Stackless mailing list
[email protected]
http://www.stackless.com/mailman/listinfo/stackless


--
Christian Tismer             :^)   <mailto:[email protected]>
Software Consulting          :     Have a break! Take a ride on Python's
Karl-Liebknecht-Str. 121     :    *Starship* http://starship.python.net/
14482 Potsdam                :     PGP key -> http://pgp.uni-mainz.de
phone +49 173 24 18 776  fax +49 (30) 700143-0023
PGP 0x57F3BF04       9064 F4E1 D754 C2FF 1619  305B C09C 5A3B 57F3 BF04
      whom do you want to sponsor today?   http://www.stackless.com/

_______________________________________________
Stackless mailing list
[email protected]
http://www.stackless.com/mailman/listinfo/stackless

Reply via email to