Proposal: local variable declarations and type advice

Paul Rubin phr-n2002a at nightsong.com
Wed Feb 27 16:14:19 CET 2002


"Raymond Hettinger" <othello,javanet at rcn.com> writes:
> 4) Code is generated along the lines of:
> if type('banana')==int:
>    <run optimized code that assumes 'banana' to be an int>
> elseif USESTRICT:
>    raise TypeError
> else:
>    <run normal, slow code which binds 'banana' to int regardless of type>
> 
> In other words, generate optimized code in case the type advice is correct;
> otherwise, run normally unless strict type checking is in effect.

But part of the optimization is to skip the type checking.  For example,
something declared int can be stored in a machine register with no type
bits, rather than as a tagged word or as a pointer to something in the
heap.

> This allows optimization based on the advice and error checking only when
> wanted.

Yes, the proposal is the programmer decides when to request optimization
and when to request error checking.  Normally you'd leave error checking on
during development.

> In general, I like your proposals (after Greg Ewing's correction).
> It reminds of importing packages in that it is a simple tool for
> building large, fast, reliable programs while staying out of the way
> (and out of mind) for more casual programming.

Thanks, that summarizes the intention pretty well.



More information about the Python-list mailing list