[Python-Dev] was Re: Type inference now simplicity (fwd)

Moshe Zadka Moshe Zadka <moshez@math.huji.ac.il>
Thu, 27 Jul 2000 17:26:04 +0300 (IDT)

On Thu, 27 Jul 2000, Vladimir Marangozov wrote:

> Before going into extending Python with features, it's more important
> to make the current implementation rock solid, a.k.a "commercial quality".
> Presently, this is not really the case and there are already long-standing
> known issues that nobody gets excited about. Solving these issues is of
> paramount importance for the acceptance of Python in .com software and
> generally speaking, its proliferation.

I agree.

> For instance:
> 1. It is unacceptable that Python blows when a generated code object
>    happens to be greater than 2 bytes. If this doesn't get fixed in
>    the VM, the compiler should at least check for this overflow and
>    refuse to emit the bytecode stream.

Can you elaborate on that? At least the numeric typo error makes this
a guessing job <wink>

> 2. It is unacceptable that Python leaks memory or happens to core dump,
>    without having optional emergency procedures. In this regard, I highly
>    value robust (commercial) software which, for example, pops up a window
>    on low-memory conditions inviting me to free more mem by quitting other
>    apps and gives me the choice to abort the current execution or resume it.

Personally, I don't. If there is no memory, Python should quit gracefully
(throwing MemoryError exception is fine by me -- core dumping is not)

>    Python core dumps on several known situations, notably those that
>    involve recursive calls.

This doesn't have to do with low-memory conditions, this is because Python
uses the C stack. Finally putting in stackless will make this the same
as low-memory conditions, and we already covered that <wink -- but perhaps
that will be stackless's killer feature)

> 3. I consider very-high priority the recently discussed integrated help
>    system.

I don't. It's in the "useful, but not necessary". What *is* necessary 
is a good IDE, with integrated help. IDLE is being worked on, as is
ActiveState's Komodo and my Bwian vapourware. 

> 4. I consider high priority the opportunity to get more performance in
>    terms of system resources: memory & execution speed. And this is why
>    I'm working on it as time permits. I find unacceptable the fact that
>    there are already some potential improvements on the table which have
>    not been considered seriously so far: removal of SET_LINENO, GC + malloc
>    integration, etc.

I totally agree -- and even more so. I hope to have the time to work on
serious Python optimization, notable things like method caching,
optimizing built-in function calls, etc.

> 5. I find unwise the whole process of enriching the core, whithout a
>    global vision on a modular and extensible core architecture. Adding
>    10 additional opcodes for augmented assignment is considered nuts.
>    The addition of opcodes for extended calls is already a fact, although
>    I never use them and I don't need them. Other enhancements have been
>    proposed and they come on top of the system, making it quite heavy.
>    And I don't use Unicode - so why it isn't optional? <wink> Because
>    there's no a truly modular architecture in place.

Ummm.....most of unicode *is* optional: the codec package and various
unicode modules are optional. u"" strings have new syntax, which is 
really needed.

> I hope that python-dev will eventually realize that all these issues are
> more important that augmented assignment

I completely agree.

> zip()

zip() and friends (irange, product) have been suggested to live in 
a seperate Python module, hence completely optional. If you're talking
about time usage, well, it's not your time <wink>

Moshe Zadka <moshez@math.huji.ac.il>
There is no IGLU cabal.