On 07/02/2010 04:14 PM Amaury Forgeot d'Arc wrote:
> Hi,
> 
> 2010/7/3 Bengt Richter <[email protected]>:
>> A thought/question:
>>
>> Could/does JIT make use of information in an assert statement? E.g., could 
>> we write
>>     assert set(type(x) for x in img) == set([float]) and len(img)==640*480
>> in front of a loop operating on img and have JIT use the info as assumed true
>> even when "if __debug__:" suites are optimized away?
>>
>> Could such assertions allow e.g. a list to be implemented as a homogeneous 
>> vector
>> of unboxed representations?
>>
>> What kind of guidelines for writing assertions would have to exist to make 
>> them
>> useful to JIT most easily?
> 
> If efficient python code needs this, I'd better write the loop in C
> and explicitly choose the types.
> The C code could be inlined in the python script, and compiled on demand.
> At least you'll know what you get. 
> 
Well, even C accepts hints like 'register' (and may ignore you, so you are not 
truly sure what you get ;-)

The point of using assert would be to let the user remain within the python 
language, while still passing
useful hints to the compiler.

If I wanted to mix languages (not uninteresting!), I'd go with
racket (the star formerly known as PLT-scheme)
     http://www.racket-lang.org/

They have extended programmability right down to the reader/tokenizer,
so it might well be possible for them to accept literal C as a translated 
sub/macro-language,
given the appropriate syntax definitions written in racket. For more, see
     http://docs.racket-lang.org/guide/languages.html
and more specifically
     http://docs.racket-lang.org/guide/hash-reader.html

Regards,
Bengt Richter




_______________________________________________
[email protected]
http://codespeak.net/mailman/listinfo/pypy-dev

Reply via email to