On 13 October 2011 12:52, mark florisson <[email protected]> wrote: > On 13 October 2011 12:44, Stefan Behnel <[email protected]> wrote: >> 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 ... > > Ah, it appears only 2.7 eats unicode keyword arguments. I wonder why > the 2.5 and 2.6 builds didn't fail then. > >> >>> 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. > > I see. Yeah it's sort of hard to fix, as I really need bytes in python > 2 and really need unicode (str) in python 3, so I can neither write > 'foo' nor b'foo' nor u'foo' with language level 3. > > BTW this is always a real problem in doctests too, as your bytestrings > will suddenly be printed as b'foo' in python 3, which will fail your > doctest. So to make it work you need to do explicit encoding/decoding > to make it work everywhere. > >> Stefan >> _______________________________________________ >> cython-devel mailing list >> [email protected] >> http://mail.python.org/mailman/listinfo/cython-devel >> >
Anyway, I fixed the 2.4 build and cherry-picked the cython scope loading fix over from fused types, I'll push that to master. _______________________________________________ cython-devel mailing list [email protected] http://mail.python.org/mailman/listinfo/cython-devel
