Author: Matti Picus <[email protected]>
Branch: release-pypy2.7-5.x
Changeset: r90747:0aaffb19afb7
Date: 2017-03-18 21:17 +0200
http://bitbucket.org/pypy/pypy/changeset/0aaffb19afb7/
Log: merge default into release
diff --git a/README.rst b/README.rst
--- a/README.rst
+++ b/README.rst
@@ -27,14 +27,19 @@
Building
========
-build with:
+First switch to or download the correct branch. The basic choices are
+``default`` for Python 2.7 and, for Python 3.X, the corresponding py3.X
+branch (e.g. ``py3.5``).
+
+Build with:
.. code-block:: console
$ rpython/bin/rpython -Ojit pypy/goal/targetpypystandalone.py
-This ends up with ``pypy-c`` binary in the main pypy directory. We suggest
-to use virtualenv with the resulting pypy-c as the interpreter; you can
-find more details about various installation schemes here:
+This ends up with a ``pypy-c`` or ``pypy3-c`` binary in the main pypy
+directory. We suggest to use virtualenv with the resulting
+pypy-c/pypy3-c as the interpreter; you can find more details about
+various installation schemes here:
http://doc.pypy.org/en/latest/install.html
diff --git a/pypy/doc/release-v5.7.0.rst b/pypy/doc/release-v5.7.0.rst
--- a/pypy/doc/release-v5.7.0.rst
+++ b/pypy/doc/release-v5.7.0.rst
@@ -2,23 +2,24 @@
PyPy2.7 and PyPy3.5 v5.7 - two in one release
=============================================
-We have released PyPy2.7 and a beta-quality PyPy3.5 v5.7.
+We have released PyPy2.7 v5.7, and a beta-quality PyPy3.5 v5.7 (for
+Linux 64bit only at first).
This new PyPy2.7 release includes the upstream stdlib version 2.7.13, and
-PyPy 3.5 (our first in the 3.5 series) includes the upstream stdlib version
+PyPy3.5 (our first in the 3.5 series) includes the upstream stdlib version
3.5.3.
We continue to make incremental improvements to our C-API
-compatibility layer (cpyext). PyPy2 can now import and run many c-extension
-packages, among the most notable are numpy, cython, and pandas. Performance may
+compatibility layer (cpyext). PyPy2 can now import and run many C-extension
+packages, among the most notable are Numpy, Cython, and Pandas. Performance may
be slower than CPython, especially for frequently-called short C functions.
Please let us know if your use case is slow, we have ideas how to make things
faster but need real-world examples (not micro-benchmarks) of problematic code.
Work proceeds at a good pace on the PyPy3.5
version due to a grant_ from the Mozilla Foundation, hence our first 3.5.3 beta
-release. Thanks Mozilla !!! While we do not pass all tests, asyncio works and
+release. Thanks Mozilla !!! While we do not pass all tests yet, asyncio works
and
as `these benchmarks show`_ it already gives a nice speed bump.
-We also backported the ``f""`` formatting from 3.6 (as an expection; otherwise
+We also backported the ``f""`` formatting from 3.6 (as an exception; otherwise
"PyPy3.5" supports the Python 3.5 language).
CFFI_ has been updated to 1.10, improving an already great package for
@@ -65,7 +66,7 @@
We also welcome developers of other `dynamic languages`_ to see what RPython
can do for them.
-This release supports:
+The PyPy 2.7 release supports:
* **x86** machines on most common operating systems
(Linux 32/64 bits, Mac OS X 64 bits, Windows 32 bits, OpenBSD, FreeBSD)
@@ -80,64 +81,58 @@
.. _`dynamic languages`: http://rpython.readthedocs.io/en/latest/examples.html
Highlights of the PyPy2.7, cpyext, and RPython changes (since 5.6 released
Nov, 2016)
-=============================================================================================
+=====================================================================================
See also issues that were resolved_
* New features and cleanups
* update the format of the PYPYLOG file and improvements to vmprof
- * improve the consistency of RPython annotation unions
* emit more sysconfig values for downstream cextension packages
- * add PyAnySet_Check, PyModule_GetName, PyWeakref_Check*,
- _PyImport_{Acquire,Release}Lock, PyGen_Check*, PyOS_AfterFork,
- * add translation option --keepgoing to continue after the first
AnnotationError
+ * add ``PyAnySet_Check``, ``PyModule_GetName``, ``PyWeakref_Check*``,
+ ``_PyImport_{Acquire,Release}Lock``, ``PyGen_Check*``, ``PyOS_AfterFork``,
* detect and raise on recreation of a PyPy object from a PyObject during
tp_dealloc
* refactor and clean up poor handling of unicode exposed in work on py3.5
- * builtin cppyy_ supports C++ 11, 14, etc. via cling (reflex has been
removed)
- * add translation time --disable_entrypoints option for embedding PyPy
together
- with another RPython VM
- * adapt ``weakref`` according to Python issue #19542, will be in CPython
2.7.14
+ * builtin module cppyy_ supports C++ 11, 14, etc. via cling (reflex has been
removed)
+ * adapt ``weakref`` according to CPython issue #19542_, will be in CPython
2.7.14
* support translations with cpyext and the Boehm GC (for special cases like
- revdb
+ RevDB_
* implement ``StringBuffer.get_raw_address`` for the buffer protocol, it is
now possible to obtain the address of any readonly object without pinning
it
* refactor the initialization code in translating cpyext
- * fix ``"".replace("", "x", num)`` to give the same result as CPython
* use a cffi-style C parser to create rffi objects in cpyext, now the
- translating python must have cffi available
- * add a rpython implementation of siphash24, allow choosing hash algorithm
- randomizing the seed
- * make ``attach_gdb`` work on Windows (with Visual Studio Debugger)
+ translating Python must have either ``cffi`` or ``pycparser`` available
* implement ``move_to_end(last=True/False)`` on RPython ordered dicts, make
available as ``__pypy__.move_to_end`` and, on py3.5,
``OrderedDict.move_to_end()``
* remove completely RPython ``space.wrap`` in a major cleanup, differentiate
between ``space.newtext`` and ``space.newbytes`` on py3.5
- * improve shadowstack to where it is now the default in place of asmgcc
+ * any uncaught RPython exception in the interpreter is turned into a
+ SystemError (rather than a segfault)
+ * add translation time --disable_entrypoints option for embedding PyPy
together
+ with another RPython VM
+
* Bug Fixes
- * any uncaught RPython exception in the interpreter is turned into a
- SystemError (rather than a segfault)
+ * fix ``"".replace("", "x", num)`` to give the same result as CPython
* create log files without the executable bit
- * disable clock_gettime() on OS/X, since we support 10.11 and it was only
+ * disable ``clock_gettime()`` on OS/X, since we support 10.11 and it was only
added in 10.12
- * support HAVE_FSTATVFS which was unintentionally always false
- * fix user-created C-API heaptype, issue #2434
- * fix PyDict_Update is not actually the same as dict.update
- * assign tp_doc on PyTypeObject and tie it to the app-level __doc__ attribute
- issue #2446
+ * support ``HAVE_FSTATVFS`` which was unintentionally always false
+ * fix user-created C-API heaptype, issue #2434_
+ * fix ``PyDict_Update`` is not actually the same as ``dict.update``
+ * assign ``tp_doc`` on ``PyTypeObject`` and tie it to the app-level
``__doc__`` attribute
+ issue #2446_
* clean up memory leaks around ``PyObject_GetBuffer``,
``PyMemoryView_GET_BUFFER``,
``PyMemoryView_FromBuffer``, and ``PyBuffer_Release``
- * improve support for creating c-extension objects from app-level classes,
- filling more slots especially ``tp_new`` and ``tp_dealloc``
- * add rstack.stack_almost_full() and use it to avoid stack overflow due to
- the JIT where possible
- * fix for ctypes.c_bool returning bool restype issue #2475
+ * improve support for creating C-extension objects from app-level classes,
+ filling more slots, especially ``tp_new`` and ``tp_dealloc``
+ * fix for ``ctypes.c_bool`` returning ``bool`` restype, issue #2475_
* fix in corner cases with the GIL and C-API functions
+
* Performance improvements:
* clean-ups in the jit optimizeopt
@@ -158,17 +153,28 @@
information across failing guards
* add optimized "zero-copy" path for ``io.FileIO.readinto``
+* RPython improvements
+
+ * improve the consistency of RPython annotation unions
+ * add translation option --keepgoing to continue after the first
AnnotationError
+ * improve shadowstack to where it is now the default in place of asmgcc
+ * add a rpython implementation of siphash24, allow choosing hash algorithm
+ randomizing the seed
+ * add rstack.stack_almost_full() and use it to avoid stack overflow due to
+ the JIT where possible
+
Highlights of the PyPy3.5 release (since 5.5 alpha released Oct, 2016)
-=========================================================
+==========================================================================
-Development moved from the py3k branch to the py3.5 branch in the pypy
bitbucket repo
+Development moved from the py3k branch to the py3.5 branch in the PyPy
bitbucket repo.
* New features
- * this first PyPy3.5 release implements much, but not all, of Python 3.5.3
+ * this first PyPy3.5 release implements most of Python 3.5.3, exceptions are
listed below
* PEP 456 allowing secure and interchangable hash algorithms
* use cryptography_'s cffi backend for SSL
+
* Bug Fixes
* implement fixes for some CPython issues that arose since the last release
@@ -176,12 +182,23 @@
* Performance improvements:
- * do not create a list whenever descr_new of a bytesobject is called
+ * do not create a list whenever ``descr_new`` of a ``bytesobject`` is called
*
*
*
+* The following features of Python 3.5 are not implemented yet in PyPy:
+
+ * PEP 442: Safe object finalization
+ * PEP 489: Multi-phase extension module initialization
+ * XXX what else?
+
.. _resolved: whatsnew-pypy2-5.7.0.html
+.. _19542: https://bugs.python.org/issue19542
+.. _2434:
https://bitbucket.org/pypy/pypy/issues/2434/support-pybind11-in-conjunction-with-pypys
+.. _2446:
https://bitbucket.org/pypy/pypy/issues/2446/cpyext-tp_doc-field-not-reflected-on
+.. _2475: https://bitbucket.org/pypy/pypy/issues/2475
+.. _RevDB: https://bitbucket.org/pypy/revdb
.. _cryptography: https://cryptography.io
.. _cppyy: cppyy.html
diff --git a/pypy/module/cpyext/classobject.py
b/pypy/module/cpyext/classobject.py
--- a/pypy/module/cpyext/classobject.py
+++ b/pypy/module/cpyext/classobject.py
@@ -39,6 +39,8 @@
@cpython_api([PyObject, PyObject, PyObject], PyObject)
def PyClass_New(space, w_bases, w_dict, w_name):
+ if w_bases is None:
+ w_bases = space.newtuple([])
w_classobj = space.gettypefor(W_ClassObject)
return space.call_function(w_classobj,
w_name, w_bases, w_dict)
diff --git a/pypy/module/cpyext/test/test_classobject.py
b/pypy/module/cpyext/test/test_classobject.py
--- a/pypy/module/cpyext/test/test_classobject.py
+++ b/pypy/module/cpyext/test/test_classobject.py
@@ -77,3 +77,15 @@
class C:
pass
assert module.get_classtype() is type(C)
+
+ def test_pyclass_new_no_bases(self):
+ module = self.import_extension('foo', [
+ ("new_foo", "METH_O",
+ """
+ return PyClass_New(NULL, PyDict_New(), args);
+ """)])
+ FooClass = module.new_foo("FooClass")
+ class Cls1:
+ pass
+ assert type(FooClass) is type(Cls1)
+ assert FooClass.__bases__ == Cls1.__bases__
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit