[pypy-commit] pypy py3.6: merge default into branch
mattip
pypy.commits at gmail.com
Tue Mar 26 15:22:42 EDT 2019
Author: Matti Picus <matti.picus at gmail.com>
Branch: py3.6
Changeset: r96352:50f4f89a4572
Date: 2019-03-26 21:16 +0200
http://bitbucket.org/pypy/pypy/changeset/50f4f89a4572/
Log: merge default into branch
diff --git a/.hgtags b/.hgtags
--- a/.hgtags
+++ b/.hgtags
@@ -67,3 +67,11 @@
928a4f70d3de7d17449456946154c5da6e600162 release-pypy3.5-v7.0.0
dab365a465140aa79a5f3ba4db784c4af4d5c195 release-pypy3.6-v7.0.0
fb40f7a5524c77b80e6c468e087d621610137261 release-pypy3.6-v7.0.0
+990cef41fe11e5d46b019a46aa956ff46ea1a234 release-pypy2.7-v7.1.0
+bb0d05b190b9c579f0c889a368636e14f6205bab release-pypy3.6-v7.1.0
+bb0d05b190b9c579f0c889a368636e14f6205bab release-pypy3.6-v7.1.0
+6fd188f8f903b7555920adf7d5e7fe21db1bd593 release-pypy3.6-v7.1.0
+6fd188f8f903b7555920adf7d5e7fe21db1bd593 release-pypy3.6-v7.1.0
+7a2e437acfceafe2665b23b1394dc6c66add3b89 release-pypy3.6-v7.1.0
+7a2e437acfceafe2665b23b1394dc6c66add3b89 release-pypy3.6-v7.1.0
+de061d87e39c7df4e436974096d7982c676a859d release-pypy3.6-v7.1.0
diff --git a/pypy/doc/cpython_differences.rst b/pypy/doc/cpython_differences.rst
--- a/pypy/doc/cpython_differences.rst
+++ b/pypy/doc/cpython_differences.rst
@@ -495,6 +495,9 @@
* SyntaxError_ s try harder to give details about the cause of the failure, so
the error messages are not the same as in CPython
+* Dictionaries and sets are ordered on PyPy. On CPython < 3.6 they are not;
+ on CPython >= 3.6 dictionaries (but not sets) are ordered.
+
.. _extension-modules:
diff --git a/pypy/doc/how-to-release.rst b/pypy/doc/how-to-release.rst
--- a/pypy/doc/how-to-release.rst
+++ b/pypy/doc/how-to-release.rst
@@ -40,11 +40,11 @@
$ hg up -r default
$ # edit the version to e.g. 7.0.0-final
$ hg ci
- $ hg branch release-pypy2.7-7.x && hg ci
+ $ hg branch release-pypy2.7-v7.x && hg ci
$ hg up -r default
$ # edit the version to 7.1.0-alpha0
$ hg ci
- $ hg up -r release-pypy2.7-7.x
+ $ hg up -r release-pypy2.7-v7.x
$ hg merge default
$ # edit the version to AGAIN 7.0.0-final
$ hg ci
@@ -53,11 +53,11 @@
$ hg up -r py3.5
$ hg merge default # this brings the version fo 7.1.0-alpha0
- $ hg branch release-pypy3.5-7.x
+ $ hg branch release-pypy3.5-v7.x
$ # edit the version to 7.0.0-final
$ hg ci
$ hg up -r py3.5
- $ hg merge release-pypy3.5-7.x
+ $ hg merge release-pypy3.5-v7.x
$ # edit the version to 7.1.0-alpha0
$ hg ci
@@ -109,9 +109,11 @@
* add a tag on the pypy/jitviewer repo that corresponds to pypy release, so
that the source tarball can be produced in the next steps
- * download the builds, repackage binaries. Tag the release version
- and download and repackage source from bitbucket. You may find it
- convenient to use the ``repackage.sh`` script in pypy/tool/release to do this.
+ * download the builds, repackage binaries. Tag the release-candidate version
+ (it is important to mark this as a candidate since usually at least two
+ tries are needed to complete the process) and download and repackage source
+ from bitbucket. You may find it convenient to use the ``repackage.sh``
+ script in pypy/tool/release to do this.
Otherwise repackage and upload source "-src.tar.bz2" to bitbucket
and to cobra, as some packagers prefer a clearly labeled source package
@@ -135,3 +137,5 @@
* add a tag on the codespeed web site that corresponds to pypy release
* revise versioning at https://readthedocs.org/projects/pypy
+ * tag the final release(s) with appropriate tags
+
diff --git a/pypy/doc/project-ideas.rst b/pypy/doc/project-ideas.rst
--- a/pypy/doc/project-ideas.rst
+++ b/pypy/doc/project-ideas.rst
@@ -5,7 +5,7 @@
----------------
We are happy to discuss ideas around the PyPy ecosystem.
-If you are interested in palying with RPython or PyPy, or have a new idea not
+If you are interested in playing with RPython or PyPy, or have a new idea not
mentioned here please join us on irc, channel #pypy (freenode). If you are unsure,
but still think that you can make a valuable contribution to PyPy, dont
hesitate to contact us on #pypy or on our mailing list. Here are some ideas
diff --git a/pypy/doc/release-v7.1.0.rst b/pypy/doc/release-v7.1.0.rst
--- a/pypy/doc/release-v7.1.0.rst
+++ b/pypy/doc/release-v7.1.0.rst
@@ -24,6 +24,10 @@
Until we can work with downstream providers to distribute builds with PyPy, we
have made packages for some common packages `available as wheels`_.
+The `CFFI`_ backend has been updated to version 1.12.2. We recommend using CFFI
+rather than c-extensions to interact with C, and `cppyy`_ for interacting with
+C++ code.
+
As always, this release is 100% compatible with the previous one and fixed
several issues and bugs raised by the growing community of PyPy users.
We strongly recommend updating.
@@ -31,7 +35,7 @@
The PyPy3.6 release is still not production quality so your mileage may vary.
There are open issues with incomplete compatibility and c-extension support.
-You can download the v7.0 releases here:
+You can download the v7.1 releases here:
http://pypy.org/download.html
@@ -47,7 +51,7 @@
.. _`PyPy`: index.html
.. _`RPython`: https://rpython.readthedocs.org
.. _`help`: project-ideas.html
-.. _`cffi`: http://cffi.readthedocs.io
+.. _`CFFI`: http://cffi.readthedocs.io
.. _`cppyy`: https://cppyy.readthedocs.io
.. _`available as wheels`: https://github.com/antocuni/pypy-wheels
@@ -61,7 +65,7 @@
We also welcome developers of other `dynamic languages`_ to see what RPython
can do for them.
-The PyPy release supports:
+This PyPy release supports:
* **x86** machines on most common operating systems
(Linux 32/64 bits, Mac OS X 64 bits, Windows 32 bits, OpenBSD, FreeBSD)
@@ -71,7 +75,8 @@
* **s390x** running Linux
Unfortunately at the moment of writing our ARM buildbots are out of service,
-so for now we are **not** releasing any binary for the ARM architecture.
+so for now we are **not** releasing any binary for the ARM architecture,
+although PyPy does support ARM 32 bit processors.
.. _`PyPy and CPython 2.7.x`: http://speed.pypy.org
.. _`dynamic languages`: http://rpython.readthedocs.io/en/latest/examples.html
@@ -80,5 +85,37 @@
Changelog
=========
-If not specified, the changes are shared across versions
+Changes shared across versions
+* Use utf8 internally to represent unicode, with the goal of never using
+ rpython-level unicode
+* Update ``cffi`` to 1.12.2
+* Improve performance of ``long`` operations where one of the operands fits
+ into an ``int``
+* Since _ctypes is implemented in pure python over libffi, add interfaces and
+ methods to support the buffer interface from python. Specifically, add a
+ ``__pypy__.newmemoryview`` function to create a memoryview and extend the use
+ of the PyPy-specific ``__buffer__`` class method. This enables better
+ buffer sharing between ctypes and NumPy.
+* Add copying to zlib
+* Improve register allocation in the JIT by using better heuristics
+* Include ``<sys/sysmacros.h>`` on Gnu/Hurd
+* Mostly for completeness sake: support for ``rlib.jit.promote_unicode``, which
+ behaves like ``promote_string``, but for rpython unicode objects
+* Correctly initialize the ``d_type`` and ``d_name`` members of builtin
+ descriptors to fix a segfault related to classmethods in Cython
+* Expand documentation of ``__pypy_`` module
+
+C-API (cpyext) improvements shared across versions
+
+* Move PyTuple_Type.tp_new to C
+* Call internal methods from ``PyDict_XXXItem()`` instead of going through
+ dunder methods (CPython cpyext compatibility)
+
+Python 3.6 only
+
+* Support for os.PathLike in the posix module
+* Update ``idellib`` for 3.6.1
+* Make ``BUILD_CONST_KEY_MAP`` JIT-friendly
+* Adapt code that optimizes ``sys.exc_info()`` to wordcode
+* Fix annotation bug found by ``attrs``
diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst
--- a/pypy/doc/whatsnew-head.rst
+++ b/pypy/doc/whatsnew-head.rst
@@ -3,4 +3,9 @@
==========================
.. this is a revision shortly after release-pypy-7.1.0
-.. startrev: 78914a03cf95
+.. startrev: d3aefbf6dae7
+
+.. branch: Twirrim/minor-typo-fix-1553456951526
+
+Fix typo
+
diff --git a/pypy/module/__pypy__/interp_builders.py b/pypy/module/__pypy__/interp_builders.py
--- a/pypy/module/__pypy__/interp_builders.py
+++ b/pypy/module/__pypy__/interp_builders.py
@@ -64,9 +64,12 @@
return W_UnicodeBuilder(space, 3 * size)
def descr_append(self, space, w_s):
- w_unicode = W_UnicodeObject.convert_arg_to_w_unicode(space, w_s)
- s = space.utf8_w(w_unicode)
- self.builder.append(s)
+ if isinstance(w_s, W_UnicodeObject):
+ self.builder.append_utf8(w_s._utf8, w_s._len())
+ else:
+ w_unicode = W_UnicodeObject.convert_arg_to_w_unicode(space, w_s)
+ s = space.utf8_w(w_unicode)
+ self.builder.append(s)
@unwrap_spec(start=int, end=int)
def descr_append_slice(self, space, w_s, start, end):
diff --git a/pypy/module/__pypy__/test/test_builders.py b/pypy/module/__pypy__/test/test_builders.py
--- a/pypy/module/__pypy__/test/test_builders.py
+++ b/pypy/module/__pypy__/test/test_builders.py
@@ -1,14 +1,16 @@
+# -*- encoding: utf-8 -*-
+
class AppTestBuilders(object):
spaceconfig = dict(usemodules=['__pypy__'])
def test_simple(self):
from __pypy__.builders import StringBuilder
b = StringBuilder()
- b.append(u"abc")
+ b.append(u"abcä")
b.append(u"123")
b.append(u"1")
s = b.build()
- assert s == u"abc1231"
+ assert s == u"abcä1231"
assert b.build() == s
b.append(u"123")
assert b.build() == s + u"123"
diff --git a/pypy/module/zlib/interp_zlib.py b/pypy/module/zlib/interp_zlib.py
--- a/pypy/module/zlib/interp_zlib.py
+++ b/pypy/module/zlib/interp_zlib.py
@@ -343,6 +343,9 @@
if length <= 0:
raise oefmt(space.w_ValueError,
"length must be greater than zero")
+ if not self.stream:
+ raise zlib_error(space,
+ "compressor object already flushed")
data = self.unconsumed_tail
try:
self.lock()
diff --git a/pypy/module/zlib/test/test_zlib.py b/pypy/module/zlib/test/test_zlib.py
--- a/pypy/module/zlib/test/test_zlib.py
+++ b/pypy/module/zlib/test/test_zlib.py
@@ -414,3 +414,11 @@
compressor = self.zlib.compressobj()
compressor.flush()
raises(ValueError, compressor.copy)
+
+ def test_double_flush(self):
+ import zlib
+ x = b'x\x9cK\xcb\xcf\x07\x00\x02\x82\x01E' # 'foo'
+ dco = zlib.decompressobj()
+ dco.decompress(x)
+ dco.flush()
+ raises(self.zlib.error, dco.flush)
diff --git a/pypy/tool/release/repackage.sh b/pypy/tool/release/repackage.sh
--- a/pypy/tool/release/repackage.sh
+++ b/pypy/tool/release/repackage.sh
@@ -1,11 +1,15 @@
# Edit these appropriately before running this script
-pmaj=2 # python main version
+pmaj=2 # python main version: 2 or 3
pmin=7 # python minor version
+exe=pypy3 # pypy3 or pypy
maj=7
-min=0
+min=1
rev=0
-branchname=release-pypy$pmaj.$pmin-$maj.x # ==OR== release-$maj.x # ==OR== release-$maj.$min.x
-tagname=release-pypy$pmaj.$pmin-v$maj.$min.$rev # ==OR== release-$maj.$min
+
+
+branchname=release-pypy$pmaj.$pmin-v$maj.x # ==OR== release-v$maj.x # ==OR== release-v$maj.$min.x
+tagname=release-candidate-pypy$pmaj.$pmin-v$maj.$min.$rev # ==OR== release-$maj.$min
+# tagname=release-pypy$pmaj.$pmin-v$maj.$min.$rev # ==OR== release-$maj.$min
echo checking hg log -r $branchname
hg log -r $branchname || exit 1
@@ -23,6 +27,7 @@
# Download latest builds from the buildmaster, rename the top
# level directory, and repackage ready to be uploaded to bitbucket
+actual_ver=xxxxxxxxxxxxxxx
for plat in linux linux64 osx64 s390x # linux-armhf-raspbian linux-armel
do
echo downloading package for $plat
@@ -49,11 +54,24 @@
plat_final=linux32
fi
mv pypy-c-jit-*-$plat $rel-$plat_final
+ # TODO: automate the platform choice or move it to the head of the file
+ if [ $plat_final == linux64 ]
+ then
+ actual_ver=`$rel-$plat_final/bin/$exe -c "import sys; print('.'.join([str(x) for x in sys.pypy_version_info[:2]]))"`
+ fi
echo packaging $plat_final
tar --owner=root --group=root --numeric-owner -cjf $rel-$plat_final.tar.bz2 $rel-$plat_final
rm -rf $rel-$plat_final
done
-
+if [ "$actual_ver" != "$maj.$min" ]
+then
+ echo xxxxxxxxxxxxxxxxxxxxxx
+ echo version mismatch, expected $maj.$min, got $actual_ver
+ echo xxxxxxxxxxxxxxxxxxxxxx
+ exit -1
+ rm -rf $rel-$plat_final
+ continue
+fi
plat=win32
if wget http://buildbot.pypy.org/nightly/$branchname/pypy-c-jit-latest-$plat.zip
then
More information about the pypy-commit
mailing list