Guido van Rossum wrote:
yes I'm happy - chris
You should be! So how come nobody else is <wink/frown>?
Chris and I have been through this in private, but it seems that as long as I don't fess up in public I'm afraid it will come back and I'll get pressure coming at me to endorse Chris' code.
Please let me add a few comments.
I have no problem with the general concept (see my response to Sam's post of exciting examples).
This is the most worthful statement I can get. And see below.
But I have a problem with a megapatch like this that affects many places including very sensitive areas like the main loop in ceval.c.
Actually it is a rather small patch, but the implicit semantic change is rather hefty.
The problem is simply that I know this is very intricate code, and I can't accept a patch of this scale to this code before I understand every little detail of the patch. I'm just too worried otherwise that there's a reference count bug in it that will very subtly break stuff and that will take forever to track down; I feel that when I finally have the time to actually understand the whole patch I'll be able to prevent that (famous last words).
I never expected to see this patch go into Python right now. The current public version is an alpha 0.2. Meanwhile I have 0.3, with again new patches, and a completely reworked policy of frame refcounting. Even worse, there is a night mare of more work which I simply had no time for. All the instance and onbect code must be carefully changed, since they still need to call back in a recursive way. This is hard to change until I have a better mechanism to generate all the callbacks. For instance, I cannot switch tasks in an __init__ at this time. Although I can do so in regular methods. But this is all half-baked.
In other words, the danger is by far not over, but still in the growing phase. I believe I should work on and maintain this until I'm convinced that there are not more refcount bugs than before, and until I have evicted every recursion which is a serious impact. This is still months of work.
When I release the final version, I will pay $100 to the first person who finds a refcount bug which I introduced. But not before. I don't want to waste Guido's time, and for sure not now with this bloody fresh code.
What I needed to know is wether I am on the right track or if I'm wasting my time. But since I have users already, it is no waste at all. What I really could use were some hints about API design.
Guido, thank you for Python - chris