Tim Peters wrote:
[see the main list on idle leaks]
> if-pystone-works-ship-it-ly y'rs - tim
Well, on request of uncle Timmy, I do it.
Although it's very early.
A preview of stackless Python can be found under
ftp://ftp.pns.cc/pub/stackless_990606.zip
Current status:
The main interpreter is completely stackless.
Just for fun, I've set max recursion depth to 30000,
so just try it.
PyStone does of course run. My measures were about
3-5 percent slower than with standard Python. I think
this is quite fair.
As a side effect, the exec_statement now behaves
better than before, since
exec <anything>
without globals and locals should update the current
environment, which worked only for exec "string".
Most of the Run_<thing> functions are stackless as well.
Almost all cases could be treated tail recursively.
I have just begun to work on the builtins, and there is
a very bloody, new-born stackless map, which seems to
behave quite well. (It is just an hour old, so don't blame me
if I didn't get al refcounts right).
This is a first special case, since I *had* to build a
tiny interpreter from the old map code.
Still quite hacky, but not so bad.
It creates its own frame and bails out whenever it needs
to call the interpreter. If not, it stays in the loop.
Since this one is so fresh, the old map is still
there, and the new one has the name "map_nr".
As a little bonus, map_nr now also shows up in a
traceback. I've set the line no to the iteration count.
Beware, this is just a proof of concept and will
most probably change.
Further plans:
I will make the other builtins stackless as well
(reduce, filter), also the simple tail-recursive
ones which I didn't do now due to lack of time.
I think I will *not* think of stackless imports.
After loking into this for a while, I think this
is rather hairy, and also not necessary.
On extensions:
There will be a coroutine extension in a few days.
This is now nearly a no-brainer, since I did the
stackless Python with exactly that in mind.
This is the real fruit where I'm after, so please
let me pick it :)
Documentation:
Besides the few new comments, there is nothing yet.
Diff files:
Sorry, there are no diffs but just the modified
files. I had no time to do them now. All files stem
from the official Python 1.5.2 release.
You might wonder about the version:
In order to support extension modules which rely on
some special new features of frames, I decided
to name this Python "1.5.42", since I believe
it will be useful at least "four two" people. :-)
I consider this an Alpha 1 version.
fearing the feedback :-) ciao - chris
--
Christian Tismer :^) <mailto:tismer@appliedbiometrics.com>
Applied Biometrics GmbH : Have a break! Take a ride on Python's
Kaiserin-Augusta-Allee 101 : *Starship* http://starship.python.net
10553 Berlin : PGP key -> http://wwwkeys.pgp.net
PGP Fingerprint E182 71C7 1A9D 66E9 9D15 D3CC D4D7 93E2 1FAE F6DF
we're tired of banana software - shipped green, ripens at home
[see the main list on idle leaks]
> if-pystone-works-ship-it-ly y'rs - tim
Well, on request of uncle Timmy, I do it.
Although it's very early.
A preview of stackless Python can be found under
ftp://ftp.pns.cc/pub/stackless_990606.zip
Current status:
The main interpreter is completely stackless.
Just for fun, I've set max recursion depth to 30000,
so just try it.
PyStone does of course run. My measures were about
3-5 percent slower than with standard Python. I think
this is quite fair.
As a side effect, the exec_statement now behaves
better than before, since
exec <anything>
without globals and locals should update the current
environment, which worked only for exec "string".
Most of the Run_<thing> functions are stackless as well.
Almost all cases could be treated tail recursively.
I have just begun to work on the builtins, and there is
a very bloody, new-born stackless map, which seems to
behave quite well. (It is just an hour old, so don't blame me
if I didn't get al refcounts right).
This is a first special case, since I *had* to build a
tiny interpreter from the old map code.
Still quite hacky, but not so bad.
It creates its own frame and bails out whenever it needs
to call the interpreter. If not, it stays in the loop.
Since this one is so fresh, the old map is still
there, and the new one has the name "map_nr".
As a little bonus, map_nr now also shows up in a
traceback. I've set the line no to the iteration count.
Beware, this is just a proof of concept and will
most probably change.
Further plans:
I will make the other builtins stackless as well
(reduce, filter), also the simple tail-recursive
ones which I didn't do now due to lack of time.
I think I will *not* think of stackless imports.
After loking into this for a while, I think this
is rather hairy, and also not necessary.
On extensions:
There will be a coroutine extension in a few days.
This is now nearly a no-brainer, since I did the
stackless Python with exactly that in mind.
This is the real fruit where I'm after, so please
let me pick it :)
Documentation:
Besides the few new comments, there is nothing yet.
Diff files:
Sorry, there are no diffs but just the modified
files. I had no time to do them now. All files stem
from the official Python 1.5.2 release.
You might wonder about the version:
In order to support extension modules which rely on
some special new features of frames, I decided
to name this Python "1.5.42", since I believe
it will be useful at least "four two" people. :-)
I consider this an Alpha 1 version.
fearing the feedback :-) ciao - chris
--
Christian Tismer :^) <mailto:tismer@appliedbiometrics.com>
Applied Biometrics GmbH : Have a break! Take a ride on Python's
Kaiserin-Augusta-Allee 101 : *Starship* http://starship.python.net
10553 Berlin : PGP key -> http://wwwkeys.pgp.net
PGP Fingerprint E182 71C7 1A9D 66E9 9D15 D3CC D4D7 93E2 1FAE F6DF
we're tired of banana software - shipped green, ripens at home