[Cython] test failure for cython-devel in Py2.4

Stefan Behnel stefan_ml at behnel.de
Thu Oct 13 13:44:28 CEST 2011


mark florisson, 13.10.2011 12:18:
> On 13 October 2011 10:56, mark florisson wrote:
>> On 13 October 2011 10:53, Vitja Makarov wrote:
>>> 2011/10/13 Stefan Behnel:
>>>> Vitja Makarov, 13.10.2011 08:03:
>>>>>
>>>>> I found that tempita bug goes away if you change language_level to 2.
>>>>
>>>> There's no language level configured in Py2.4, which fails.
>>>>
>>>> https://sage.math.washington.edu:8091/hudson/job/cython-devel-tests/48/BACKEND=c,PYVERSION=py24/console
>>>
>>> No, I mean language level 3 is set at top of the Code.py, when it's
>>> set to 2 Py2.4 build is okay.
>>>
>> Ah, it doesn't take unicode keyword arguments. That should be fixed.
>
> Frankly, language level 3 is rather uncomfortable to deal with in
> python 2(.4).

Well, without the parentheses, I presume ...


> Any reason it's set to 3?

Mainly for performance reasons, especially in Python 2. Py3 code tends to 
run faster in Cython due to more explicit semantics. In particular, we get 
unicode content in and write unicode content out, so using unicode literals 
in the source code right away saves a decoding step for each write or 
interpolation of a literal string in Python 2. It won't make a difference 
when running Cython in Python 3, but it saves a lot of unnecessary 
processing cycles in Py2, even though the difference may not be substantial 
over a complete run. It's just so convenient to switch the language level 
and let that shave off a bunch of processing overhead that I didn't see a 
reason not to do it.

I doubt that it'll make a functional difference, though, so if it works 
better without that option, we may have to go back to Py2 compilation.

Stefan


More information about the cython-devel mailing list