[Python-Dev] PyPy 1.7 - widening the sweet spot
Terry Reedy
tjreedy at udel.edu
Tue Nov 22 23:20:40 CET 2011
On 11/22/2011 10:35 AM, Stefan Behnel wrote:
> Maciej Fijalkowski, 22.11.2011 15:46:
>>>> 2011/11/21 Terry Reedy:
>>>>> I strongly recommend that where it makes a difference, the pypy
>>>>> python3
>>>>> project target 3.3. In particular, don't reproduce the buggy
>>>>> narrow-build
>>>>> behavior of 3.2 and before (perhaps pypy avoids this already). Do
>>>>> include
>>>>> the new unicode capi in cpyext. I anticipate that 3.3 will see more
>>>>> production use than 3.2
[snip}
>> PyPy's py3k branch targets Python 3.2 until 3.3 is released and very
>> likely 3.3 afterwards. Optimizations are irrelevant really in the case
>> of PyPy.
> I admit that I wasn't very clear in my wording. As Terry pointed out,
> the Unicode changes in Py3.3 are not only for speed and/or memory
> performance improvements, they also improve the compliance of the
> Unicode implementation, which implies a behavioral change.
One of the major features of Python 3 is the expansion of the directly
supported character set from ascii to unicode. Python's original narrow
and wide build unicode implementation has problems that were somewhat
tolerable in an optional, alternate text class but which are much less
so for *the* text class. The general problem is that the two builds give
different answers for operations and functions on strings containing
non-BMP characters. This differences potentially affects anything that
uses strings, such as the re module, without guarding against the
differences.
One can view the narrow build results as wrong and buggy. Extended chars
were practically non-existent when the implementation was written, but
are becoming more common now and in the future. In any case, Python
string code no longer works the same across all x.y builds. On *nix
platforms that can have both narrow and wide builds, there can also be
binary conflicts for extension modules. On Windows, there is no conflict
because one is stuck with a buggy narrow build. This is all besides the
space issue.
In my view, Python 3.3 will be the first fully satisfactory Python 3
version. It should be the version of choice for any app doing full
unicode text or document processing on platforms that include, in
particular, Windows.
> Since PyPy
> appears to have implemented the current wide/narrow behavior of Py2 and
> Py3.[012] already, I see no reason not to target 3.2 for the time being
> as it does not require substantial changes in this part. Compliance with
> Py3.3 will then require implementing the new behavior.
Thinking about how PyPy will do that should start well before 3.3 is
released. My impression from reading the PyPy and Python 3 page, linked
in the original post, is that releasing PyPy fully ready for Python 3,
with all listed phases completed, will take close to a year anyway.
Hence my comment.
--
Terry Jan Reedy
More information about the Python-Dev
mailing list