1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218
|
============
PyPy2.7 v5.4
============
We have released PyPy2.7 v5.4, a little under two months after PyPy2.7 v5.3.
This new PyPy2.7 release includes incremental improvements to our C-API
compatability layer (cpyext), enabling us to pass over 99% of the upstream
numpy `test suite`_. We updated built-in cffi_ support to version 1.8,
which now supports the "limited API" mode for c-extensions on
CPython >=3.2.
We improved tooling for the PyPy JIT_, and expanded VMProf
support to OpenBSD and Dragon Fly BSD
As always, this release fixed many issues and bugs raised by the
growing community of PyPy users. We strongly recommend updating.
You can download the PyPy2.7 v5.4 release here:
http://pypy.org/download.html
We would like to thank our donors for the continued support of the PyPy
project.
We would also like to thank our contributors and
encourage new people to join the project. PyPy has many
layers and we need help with all of them: `PyPy`_ and `RPython`_ documentation
improvements, tweaking popular `modules`_ to run on pypy, or general `help`_
with making RPython's JIT even better.
.. _`test suite`: https://bitbucket.org/pypy/pypy/wiki/Adventures%20in%20cpyext%20compatibility
.. _cffi: https://cffi.readthedocs.org
.. _JIT: https://morepypy.blogspot.com.au/2016/08/pypy-tooling-upgrade-jitviewer-and.html
.. _`PyPy`: http://doc.pypy.org
.. _`RPython`: https://rpython.readthedocs.org
.. _`modules`: http://doc.pypy.org/en/latest/project-ideas.html#make-more-python-modules-pypy-friendly
.. _`help`: http://doc.pypy.org/en/latest/project-ideas.html
What is PyPy?
=============
PyPy is a very compliant Python interpreter, almost a drop-in replacement for
CPython 2.7. It's fast (`PyPy and CPython 2.7.x`_ performance comparison)
due to its integrated tracing JIT compiler.
We also welcome developers of other `dynamic languages`_ to see what RPython
can do for them.
This release supports:
* **x86** machines on most common operating systems
(Linux 32/64 bits, Mac OS X 64 bits, Windows 32 bits, OpenBSD, FreeBSD)
* newer **ARM** hardware (ARMv6 or ARMv7, with VFPv3) running Linux,
* big- and little-endian variants of **PPC64** running Linux,
* **s390x** running Linux
.. _`PyPy and CPython 2.7.x`: http://speed.pypy.org
.. _`dynamic languages`: http://pypyjs.org
Other Highlights (since 5.3 released in June 2016)
=========================================================
* New features:
* Add `sys.{get,set}dlopenflags`
* Improve CPython compatibility of 'is' for small and empty strings
* Support for rgc.FinalizerQueue in the Boehm garbage collector
* (RPython) support spawnv() if it is called in C `_spawnv` on windows
* Fill in more slots when creating a PyTypeObject from a W_TypeObject,
like `__hex__`, `__sub__`, `__pow__`
* Copy CPython's logic more closely for `isinstance()` and
`issubclass()` as well as `type.__instancecheck__()` and
`type.__subclasscheck__()`
* Expose the name of CDLL objects
* Rewrite the win32 dependencies of `subprocess` to use cffi
instead of ctypes
* Improve the `JIT logging`_ facitilities
* (RPython) make int * string work
* Allocate all RPython strings with one extra byte, normally
unused. This now allows `ffi.from_buffer(string)` in CFFI with
no copy
* Adds a new commandline option `-X track-resources` that will
produce a `ResourceWarning` when the GC closes a file or socket.
The traceback for the place where the file or socket was allocated
is given as well, which aids finding places where `close()` is
missing
* Add missing `PyObject_Realloc`, `PySequence_GetSlice`
* `type.__dict__` now returns a `dict_proxy` object, like on CPython.
Previously it returned what looked like a regular dict object (but
it was already read-only)
* (RPython) add `rposix.{get,set}_inheritable()`, needed by Python 3.5
* (RPython) add `rposix_scandir` portably, needed for Python 3.5
* Increased but incomplete support for memoryview attributes (format,
itemsize, ...) which also adds support for `PyMemoryView_FromObject`
* Bug Fixes
* Reject `mkdir()` in read-only sandbox filesystems
* Add include guards to pymem.h to enable c++ compilation
* Fix build breakage on OpenBSD and FreeBSD
* Support OpenBSD, Dragon Fly BSD in VMProf
* Fix for `bytearray('').replace('a', 'ab')` for empty strings
* Sync internal state before calling `PyFile_AsFile()`
* Allow writing to a char* from `PyString_AsString()` until it is
forced, also refactor `PyStringObject` to look like CPython's
and allow subclassing `PyString_Type` and `PyUnicode_Type`
* Rpython rffi's socket(2) wrapper did not preserve errno
* Refactor `PyTupleObject` to look like CPython's and allow
subclassing `PyTuple_Type`
* Allow c-level assignment to a function pointer in a C-API
user-defined type after calling PyTypeReady by retrieving
a pointer to the function via offsets
rather than storing the function pointer itself
* Use `madvise(MADV_FREE)`, or if that doesn't exist
`MADV_DONTNEED` on freed arenas to release memory back to the
OS for resource monitoring
* Fix overflow detection in conversion of float to 64-bit integer
in timeout argument to various thread/threading primitives
* Fix win32 outputting `\r\r\n` in some cases
* Make `hash(-1)` return -2, as CPython does, and fix all the
ancilary places this matters
* Fix `PyNumber_Check()` to behave more like CPython
* (VMProf) Try hard to not miss any Python-level frame in the
captured stacks, even if there is metainterp or blackhole interp
involved. Also fix the stacklet (greenlet) support
* Fix a critical JIT bug where `raw_malloc` -equivalent functions
lost the additional flags
* Fix the mapdict cache for subclasses of builtin types that
provide a dict
* Issues reported with our previous release were resolved_ after
reports from users on our issue tracker at
https://bitbucket.org/pypy/pypy/issues or on IRC at #pypy
* Performance improvements:
* Add a before_call()-like equivalent before a few operations like
`malloc_nursery`, to move values from registers into other registers
instead of to the stack.
* More tightly pack the stack when calling with `release gil`
* Support `int_floordiv()`, `int_mod()` in the JIT more efficiently
and add `rarithmetic.int_c_div()`, `rarithmetic.int_c_mod()` as
explicit interfaces. Clarify that `int_floordiv()` does python-style
rounding, unlike `llop.int_floordiv()`.
* Use `ll_assert` (more often) in incminimark
* (Testing) Simplify handling of interp-level tests and make it
more forward-compatible. Don't use interp-level RPython
machinery to test building app-level extensions in cpyext
* Constant-fold `ffi.offsetof("structname", "fieldname")` in cffi
backend
* Avoid a case in the JIT, where successive guard failures in
the same Python function end up as successive levels of
RPython functions, eventually exhausting the stack, while at
app-level the traceback is very short
* Check for NULL returns from calls to the raw-malloc and raise,
rather than a guard
* Improve `socket.recvfrom()` so that it copies less if possible
* When generating C code, inline `goto` to blocks with only one
predecessor, generating less lines of code
* When running the final backend-optimization phase before emitting
C code, constant-fold calls to we_are_jitted to return False. This
makes the generated C code a few percent smaller
* Refactor the `uid_t/gid_t` handling in `rlib.rposix` and in
`interp_posix.py`, based on the clean-up of CPython 2.7.x
.. _`JIT logging`: https://morepypy.blogspot.com/2016/08/pypy-tooling-upgrade-jitviewer-and.html
.. _resolved: http://doc.pypy.org/en/latest/whatsnew-5.4.0.html
Please update, and continue to help us make PyPy better.
Cheers
|