Author: Richard Plangger <planri...@gmail.com> Branch: vmprof-native Changeset: r90724:4a1cac3da487 Date: 2017-03-16 10:19 +0100 http://bitbucket.org/pypy/pypy/changeset/4a1cac3da487/
Log: merge default diff too long, truncating to 2000 out of 2513 lines diff --git a/LICENSE b/LICENSE --- a/LICENSE +++ b/LICENSE @@ -1,3 +1,5 @@ +#encoding utf-8 + License ======= @@ -42,9 +44,9 @@ Antonio Cuni Samuele Pedroni Matti Picus + Ronan Lamy Alex Gaynor Philip Jenvey - Ronan Lamy Brian Kearns Richard Plangger Michael Hudson @@ -55,12 +57,12 @@ Hakan Ardo Benjamin Peterson Anders Chrigstrom + Wim Lavrijsen Eric van Riet Paap - Wim Lavrijsen Richard Emslie Alexander Schremmer + Remi Meier Dan Villiom Podlaski Christiansen - Remi Meier Lukas Diekmann Sven Hager Anders Lehmann @@ -83,8 +85,8 @@ Lawrence Oluyede Bartosz Skowron Daniel Roberts + Adrien Di Mascio Niko Matsakis - Adrien Di Mascio Alexander Hesse Ludovic Aubry Jacob Hallen @@ -100,8 +102,8 @@ Michael Foord Stephan Diehl Stefan Schwarzer + Tomek Meka Valentino Volonghi - Tomek Meka Stefano Rivera Patrick Maupin Devin Jeanpierre @@ -109,268 +111,273 @@ Bruno Gola David Malcolm Jean-Paul Calderone - Timo Paulssen Edd Barrett Squeaky + Timo Paulssen Marius Gedminas Alexandre Fayolle Simon Burton + Nicolas Truessel Martin Matusiak - Nicolas Truessel + Wenzhu Man Konstantin Lopuhin - Wenzhu Man John Witulski Laurence Tratt + Greg Price Ivan Sichmann Freitas - Greg Price Dario Bertini + Jeremy Thurgood Mark Pearse Simon Cross - Jeremy Thurgood + Tobias Pape Andreas Stührk - Tobias Pape Jean-Philippe St. Pierre Guido van Rossum Pavel Vinogradov Paweł Piotr Przeradowski + William Leslie + marky1991 + Ilya Osadchiy + Tobias Oberstein Paul deGrandis - Ilya Osadchiy - marky1991 - Tobias Oberstein + Boris Feigin + Taavi Burns Adrian Kuhn - Boris Feigin tav - Taavi Burns Georg Brandl Bert Freudenberg Stian Andreassen Wanja Saatkamp + Mike Blume Gerald Klix - Mike Blume Oscar Nierstrasz + Rami Chowdhury Stefan H. Muller - Rami Chowdhury + Joannah Nanjekye Eugene Oden + Tim Felgentreff + Jeff Terrace Henry Mason Vasily Kuznetsov Preston Timmons David Ripton - Jeff Terrace - Tim Felgentreff Dusty Phillips Lukas Renggli Guenter Jantzen - William Leslie Ned Batchelder + Amit Regmi Anton Gulenko - Amit Regmi - Ben Young + Sergey Matyunin Jasper Schulz + Andrew Chambers Nicolas Chauvat Andrew Durdin - Andrew Chambers - Sergey Matyunin + Ben Young Michael Schneider Nicholas Riley Jason Chu Igor Trindade Oliveira Yichao Yu + Michael Twomey Rocco Moretti Gintautas Miliauskas - Michael Twomey Lucian Branescu Mihaila anatoly techtonik + Karl Bartel Gabriel Lavoie + Jared Grubb Olivier Dormond - Jared Grubb - Karl Bartel Wouter van Heyst + Sebastian Pawluś Brian Dorsey Victor Stinner Andrews Medina - Sebastian Pawluś - Stuart Williams - Daniel Patrick Aaron Iles Toby Watson + Daniel Patrick + Stuart Williams Antoine Pitrou Christian Hudon + Justas Sadzevicius + Neil Shepperd Michael Cheng - Justas Sadzevicius + Mikael Schönenberg + Stanislaw Halik + Berkin Ilbeyi Gasper Zejn - Neil Shepperd - Stanislaw Halik - Mikael Schönenberg - Berkin Ilbeyi Faye Zhao Elmo Mäntynen - Jonathan David Riehl Anders Qvist Corbin Simpson Chirag Jadwani + Jonathan David Riehl Beatrice During Alex Perry + p_ziesch...@yahoo.de + Robert Zaremba + Alan McIntyre + Alexander Sedov Vaibhav Sood - Alan McIntyre Reuben Cummings - Alexander Sedov - p_ziesch...@yahoo.de Attila Gobi Christopher Pope - Aaron Gallagher + Tristan Arthur + Christian Tismer + Dan Stromberg + Carl Meyer Florin Papa - Christian Tismer - Marc Abramowitz - Dan Stromberg - Arjun Naik Valentina Mukhamedzhanova Stefano Parmesan touilleMan + Marc Abramowitz + Arjun Naik + Aaron Gallagher Alexis Daboville - Jens-Uwe Mager - Carl Meyer + Pieter Zieschang Karl Ramm - Pieter Zieschang - Gabriel Lukas Vacek - Kunal Grover - Andrew Dalke + Omer Katz + Jacek Generowicz Sylvain Thenault Jakub Stasiak + Stefan Beyer + Andrew Dalke + Alejandro J. Cura + Vladimir Kryachko + Gabriel + Mark Williams + Kunal Grover Nathan Taylor - Vladimir Kryachko - Omer Katz - Mark Williams - Jacek Generowicz - Alejandro J. Cura + Travis Francis Athougies + Yasir Suhail + Sergey Kishchenko + Martin Blais + Lutz Paelike + Ian Foote + Philipp Rustemeuer + Catalin Gabriel Manciu Jacob Oscarson - Travis Francis Athougies Ryan Gonzalez - Ian Foote Kristjan Valur Jonsson + Lucio Torre + Richard Lancaster + Dan Buch + Lene Wagner + Tomo Cocoa + Alecsandru Patrascu David Lievens Neil Blakey-Milner - Lutz Paelike - Lucio Torre + Henrik Vendelbo Lars Wassermann - Philipp Rustemeuer - Henrik Vendelbo - Richard Lancaster - Yasir Suhail - Dan Buch + Ignas Mikalajunas + Christoph Gerum Miguel de Val Borro Artur Lisiecki - Sergey Kishchenko - Ignas Mikalajunas - Alecsandru Patrascu - Christoph Gerum - Martin Blais - Lene Wagner - Catalin Gabriel Manciu - Tomo Cocoa - Kim Jin Su - rafalgalczyn...@gmail.com Toni Mattis - Amber Brown + Laurens Van Houtven + Bobby Impollonia + Roberto De Ioris + Jeong YunWon + Christopher Armstrong + Aaron Tubbs + Vasantha Ganesh K + Jason Michalski + Markus Holtermann + Andrew Thompson + Yusei Tahara + Ruochen Huang + Fabio Niephaus + Akira Li + Gustavo Niemeyer + Rafał Gałczyński + Logan Chien Lucas Stadler - Julian Berman - Markus Holtermann roberto@goyle + Matt Bogosian Yury V. Zaytsev - Anna Katrina Dominguez - Bobby Impollonia - Vasantha Ganesh K - Andrew Thompson florinpapa - Yusei Tahara - Aaron Tubbs - Ben Darnell - Roberto De Ioris - Logan Chien - Juan Francisco Cantero Hurtado - Ruochen Huang - Jeong YunWon - Godefroid Chappelle - Joshua Gilbert - Dan Colish - Christopher Armstrong - Michael Hudson-Doyle Anders Sigfridsson Nikolay Zinov - Jason Michalski + rafalgalczyn...@gmail.com + Joshua Gilbert + Anna Katrina Dominguez + Kim Jin Su + Amber Brown + Ben Darnell + Juan Francisco Cantero Hurtado + Godefroid Chappelle + Julian Berman + Michael Hudson-Doyle Floris Bruynooghe - Laurens Van Houtven - Akira Li - Gustavo Niemeyer Stephan Busemann - Rafał Gałczyński - Matt Bogosian + Dan Colish timo - Christian Muirhead - Berker Peksag - James Lan Volodymyr Vladymyrov - shoma hosaka - Ben Mather - Niclas Olofsson - Matthew Miller - Rodrigo Araújo + Daniel Neuhäuser + Flavio Percoco halgari - Boglarka Vezer - Chris Pressey - Buck Golemon - Diana Popa - Konrad Delong - Dinu Gherman + Jim Baker Chris Lambacher coolbutusel...@gmail.com + Mike Bayer + Rodrigo Araújo Daniil Yarancev - Jim Baker + OlivierBlanvillain + Jonas Pfannschmidt + Zearin + Andrey Churin Dan Crosta - Nikolaos-Digenis Karagiannis - James Robert - Armin Ronacher - Brett Cannon - Donald Stufft - yrttyr - aliceinwire - OlivierBlanvillain - Dan Sanders - Zooko Wilcox-O Hearn + reub...@gmail.com + Julien Phalip + Roman Podoliaka + Eli Stevens + Boglarka Vezer + PavloKapyshin Tomer Chachamu Christopher Groskopf Asmo Soinio - jiaaro - Mads Kiilerich Antony Lee - Jason Madden - Daniel Neuh�user - reub...@gmail.com - Yaroslav Fedevych Jim Hunziker - Markus Unterwaditzer - Even Wiik Thomassen - jbs - squeaky - soareschen - Jonas Pfannschmidt - Kurt Griffiths - Mike Bayer - Stefan Marr - Flavio Percoco - Kristoffer Kleine + shoma hosaka + Buck Golemon + JohnDoe + yrttyr Michael Chermside Anna Ravencroft + remarkablerocket + Berker Peksag + Christian Muirhead + soareschen + Matthew Miller + Konrad Delong + Dinu Gherman pizi - remarkablerocket - Andrey Churin - Zearin - Eli Stevens - Tobias Diaz - Julien Phalip - Roman Podoliaka + James Robert + Armin Ronacher + Diana Popa + Mads Kiilerich + Brett Cannon + aliceinwire + Zooko Wilcox-O Hearn + James Lan + jiaaro + Markus Unterwaditzer + Kristoffer Kleine + Graham Markall Dan Loewenherz werat + Niclas Olofsson + Chris Pressey + Tobias Diaz + Nikolaos-Digenis Karagiannis + Kurt Griffiths + Ben Mather + Donald Stufft + Dan Sanders + Jason Madden + Yaroslav Fedevych + Even Wiik Thomassen + Stefan Marr Heinrich-Heine University, Germany Open End AB (formerly AB Strakt), Sweden diff --git a/lib_pypy/cffi/cparser.py b/lib_pypy/cffi/cparser.py --- a/lib_pypy/cffi/cparser.py +++ b/lib_pypy/cffi/cparser.py @@ -803,6 +803,16 @@ "the actual array length in this context" % exprnode.coord.line) # + if (isinstance(exprnode, pycparser.c_ast.BinaryOp) and + exprnode.op == '+'): + return (self._parse_constant(exprnode.left) + + self._parse_constant(exprnode.right)) + # + if (isinstance(exprnode, pycparser.c_ast.BinaryOp) and + exprnode.op == '-'): + return (self._parse_constant(exprnode.left) - + self._parse_constant(exprnode.right)) + # raise FFIError(":%d: unsupported expression: expected a " "simple numeric constant" % exprnode.coord.line) diff --git a/pypy/doc/config/translation.gcrootfinder.txt b/pypy/doc/config/translation.gcrootfinder.txt --- a/pypy/doc/config/translation.gcrootfinder.txt +++ b/pypy/doc/config/translation.gcrootfinder.txt @@ -9,10 +9,8 @@ - ``--gcrootfinder=asmgcc``: use assembler hackery to find the roots directly from the normal stack. This is a bit faster, but platform specific. It works so far with GCC or MSVC, - on i386 and x86-64. It is tested only on Linux (where it is - the default) so other platforms (as well as MSVC) may need - various fixes before they can be used. + on i386 and x86-64. It is tested only on Linux + so other platforms (as well as MSVC) may need + various fixes before they can be used. Note asmgcc will be deprecated + at some future date, and does not work with clang. -You may have to force the use of the shadowstack root finder if -you are running into troubles or if you insist on translating -PyPy with other compilers like clang. diff --git a/pypy/doc/contributor.rst b/pypy/doc/contributor.rst --- a/pypy/doc/contributor.rst +++ b/pypy/doc/contributor.rst @@ -11,9 +11,9 @@ Antonio Cuni Samuele Pedroni Matti Picus + Ronan Lamy Alex Gaynor Philip Jenvey - Ronan Lamy Brian Kearns Richard Plangger Michael Hudson @@ -24,12 +24,12 @@ Hakan Ardo Benjamin Peterson Anders Chrigstrom + Wim Lavrijsen Eric van Riet Paap - Wim Lavrijsen Richard Emslie Alexander Schremmer + Remi Meier Dan Villiom Podlaski Christiansen - Remi Meier Lukas Diekmann Sven Hager Anders Lehmann @@ -52,8 +52,8 @@ Lawrence Oluyede Bartosz Skowron Daniel Roberts + Adrien Di Mascio Niko Matsakis - Adrien Di Mascio Alexander Hesse Ludovic Aubry Jacob Hallen @@ -69,8 +69,8 @@ Michael Foord Stephan Diehl Stefan Schwarzer + Tomek Meka Valentino Volonghi - Tomek Meka Stefano Rivera Patrick Maupin Devin Jeanpierre @@ -78,267 +78,270 @@ Bruno Gola David Malcolm Jean-Paul Calderone - Timo Paulssen Edd Barrett Squeaky + Timo Paulssen Marius Gedminas Alexandre Fayolle Simon Burton + Nicolas Truessel Martin Matusiak - Nicolas Truessel + Wenzhu Man Konstantin Lopuhin - Wenzhu Man John Witulski Laurence Tratt + Greg Price Ivan Sichmann Freitas - Greg Price Dario Bertini + Jeremy Thurgood Mark Pearse Simon Cross - Jeremy Thurgood + Tobias Pape Andreas Stührk - Tobias Pape Jean-Philippe St. Pierre Guido van Rossum Pavel Vinogradov Paweł Piotr Przeradowski + William Leslie + marky1991 + Ilya Osadchiy + Tobias Oberstein Paul deGrandis - Ilya Osadchiy - marky1991 - Tobias Oberstein + Boris Feigin + Taavi Burns Adrian Kuhn - Boris Feigin tav - Taavi Burns Georg Brandl Bert Freudenberg Stian Andreassen Wanja Saatkamp + Mike Blume Gerald Klix - Mike Blume Oscar Nierstrasz + Rami Chowdhury Stefan H. Muller - Rami Chowdhury + Joannah Nanjekye Eugene Oden + Tim Felgentreff + Jeff Terrace Henry Mason Vasily Kuznetsov Preston Timmons David Ripton - Jeff Terrace - Tim Felgentreff Dusty Phillips Lukas Renggli Guenter Jantzen - William Leslie Ned Batchelder + Amit Regmi Anton Gulenko - Amit Regmi - Ben Young + Sergey Matyunin Jasper Schulz + Andrew Chambers Nicolas Chauvat Andrew Durdin - Andrew Chambers - Sergey Matyunin + Ben Young Michael Schneider Nicholas Riley Jason Chu Igor Trindade Oliveira Yichao Yu + Michael Twomey Rocco Moretti Gintautas Miliauskas - Michael Twomey Lucian Branescu Mihaila anatoly techtonik + Karl Bartel Gabriel Lavoie + Jared Grubb Olivier Dormond - Jared Grubb - Karl Bartel Wouter van Heyst + Sebastian Pawluś Brian Dorsey Victor Stinner Andrews Medina - Sebastian Pawluś - Stuart Williams - Daniel Patrick Aaron Iles Toby Watson + Daniel Patrick + Stuart Williams Antoine Pitrou Christian Hudon + Justas Sadzevicius + Neil Shepperd Michael Cheng - Justas Sadzevicius + Mikael Schönenberg + Stanislaw Halik + Berkin Ilbeyi Gasper Zejn - Neil Shepperd - Stanislaw Halik - Mikael Schönenberg - Berkin Ilbeyi Faye Zhao Elmo Mäntynen - Jonathan David Riehl Anders Qvist Corbin Simpson Chirag Jadwani + Jonathan David Riehl Beatrice During Alex Perry + p_ziesch...@yahoo.de + Robert Zaremba + Alan McIntyre + Alexander Sedov Vaibhav Sood - Alan McIntyre Reuben Cummings - Alexander Sedov - p_ziesch...@yahoo.de Attila Gobi Christopher Pope - Aaron Gallagher + Tristan Arthur + Christian Tismer + Dan Stromberg + Carl Meyer Florin Papa - Christian Tismer - Marc Abramowitz - Dan Stromberg - Arjun Naik Valentina Mukhamedzhanova Stefano Parmesan touilleMan + Marc Abramowitz + Arjun Naik + Aaron Gallagher Alexis Daboville - Jens-Uwe Mager - Carl Meyer + Pieter Zieschang Karl Ramm - Pieter Zieschang - Gabriel Lukas Vacek - Kunal Grover - Andrew Dalke + Omer Katz + Jacek Generowicz Sylvain Thenault Jakub Stasiak + Stefan Beyer + Andrew Dalke + Alejandro J. Cura + Vladimir Kryachko + Gabriel + Mark Williams + Kunal Grover Nathan Taylor - Vladimir Kryachko - Omer Katz - Mark Williams - Jacek Generowicz - Alejandro J. Cura + Travis Francis Athougies + Yasir Suhail + Sergey Kishchenko + Martin Blais + Lutz Paelike + Ian Foote + Philipp Rustemeuer + Catalin Gabriel Manciu Jacob Oscarson - Travis Francis Athougies Ryan Gonzalez - Ian Foote Kristjan Valur Jonsson + Lucio Torre + Richard Lancaster + Dan Buch + Lene Wagner + Tomo Cocoa + Alecsandru Patrascu David Lievens Neil Blakey-Milner - Lutz Paelike - Lucio Torre + Henrik Vendelbo Lars Wassermann - Philipp Rustemeuer - Henrik Vendelbo - Richard Lancaster - Yasir Suhail - Dan Buch + Ignas Mikalajunas + Christoph Gerum Miguel de Val Borro Artur Lisiecki - Sergey Kishchenko - Ignas Mikalajunas - Alecsandru Patrascu - Christoph Gerum - Martin Blais - Lene Wagner - Catalin Gabriel Manciu - Tomo Cocoa - Kim Jin Su - rafalgalczyn...@gmail.com Toni Mattis - Amber Brown + Laurens Van Houtven + Bobby Impollonia + Roberto De Ioris + Jeong YunWon + Christopher Armstrong + Aaron Tubbs + Vasantha Ganesh K + Jason Michalski + Markus Holtermann + Andrew Thompson + Yusei Tahara + Ruochen Huang + Fabio Niephaus + Akira Li + Gustavo Niemeyer + Rafał Gałczyński + Logan Chien Lucas Stadler - Julian Berman - Markus Holtermann roberto@goyle + Matt Bogosian Yury V. Zaytsev - Anna Katrina Dominguez - Bobby Impollonia - Vasantha Ganesh K - Andrew Thompson florinpapa - Yusei Tahara - Aaron Tubbs - Ben Darnell - Roberto De Ioris - Logan Chien - Juan Francisco Cantero Hurtado - Ruochen Huang - Jeong YunWon - Godefroid Chappelle - Joshua Gilbert - Dan Colish - Christopher Armstrong - Michael Hudson-Doyle Anders Sigfridsson Nikolay Zinov - Jason Michalski + rafalgalczyn...@gmail.com + Joshua Gilbert + Anna Katrina Dominguez + Kim Jin Su + Amber Brown + Ben Darnell + Juan Francisco Cantero Hurtado + Godefroid Chappelle + Julian Berman + Michael Hudson-Doyle Floris Bruynooghe - Laurens Van Houtven - Akira Li - Gustavo Niemeyer Stephan Busemann - Rafał Gałczyński - Matt Bogosian + Dan Colish timo - Christian Muirhead - Berker Peksag - James Lan Volodymyr Vladymyrov - shoma hosaka - Ben Mather - Niclas Olofsson - Matthew Miller - Rodrigo Araújo + Daniel Neuhäuser + Flavio Percoco halgari - Boglarka Vezer - Chris Pressey - Buck Golemon - Diana Popa - Konrad Delong - Dinu Gherman + Jim Baker Chris Lambacher coolbutusel...@gmail.com + Mike Bayer + Rodrigo Araújo Daniil Yarancev - Jim Baker + OlivierBlanvillain + Jonas Pfannschmidt + Zearin + Andrey Churin Dan Crosta - Nikolaos-Digenis Karagiannis - James Robert - Armin Ronacher - Brett Cannon - Donald Stufft - yrttyr - aliceinwire - OlivierBlanvillain - Dan Sanders - Zooko Wilcox-O Hearn + reub...@gmail.com + Julien Phalip + Roman Podoliaka + Eli Stevens + Boglarka Vezer + PavloKapyshin Tomer Chachamu Christopher Groskopf Asmo Soinio - jiaaro - Mads Kiilerich Antony Lee - Jason Madden - Daniel Neuhäuser - reub...@gmail.com - Yaroslav Fedevych Jim Hunziker - Markus Unterwaditzer - Even Wiik Thomassen - jbs - squeaky - soareschen - Jonas Pfannschmidt - Kurt Griffiths - Mike Bayer - Stefan Marr - Flavio Percoco - Kristoffer Kleine + shoma hosaka + Buck Golemon + JohnDoe + yrttyr Michael Chermside Anna Ravencroft + remarkablerocket + Berker Peksag + Christian Muirhead + soareschen + Matthew Miller + Konrad Delong + Dinu Gherman pizi - remarkablerocket - Andrey Churin - Zearin - Eli Stevens - Tobias Diaz - Julien Phalip - Roman Podoliaka + James Robert + Armin Ronacher + Diana Popa + Mads Kiilerich + Brett Cannon + aliceinwire + Zooko Wilcox-O Hearn + James Lan + jiaaro + Markus Unterwaditzer + Kristoffer Kleine + Graham Markall Dan Loewenherz werat - - + Niclas Olofsson + Chris Pressey + Tobias Diaz + Nikolaos-Digenis Karagiannis + Kurt Griffiths + Ben Mather + Donald Stufft + Dan Sanders + Jason Madden + Yaroslav Fedevych + Even Wiik Thomassen + Stefan Marr diff --git a/pypy/doc/index-of-release-notes.rst b/pypy/doc/index-of-release-notes.rst --- a/pypy/doc/index-of-release-notes.rst +++ b/pypy/doc/index-of-release-notes.rst @@ -6,6 +6,7 @@ .. toctree:: + release-v5.7.0.rst release-pypy2.7-v5.6.0.rst release-pypy2.7-v5.4.1.rst release-pypy2.7-v5.4.0.rst @@ -53,6 +54,12 @@ release-0.7.0.rst release-0.6 +CPython 3.5 compatible versions +------------------------------- + +.. toctree:: + + release-v5.7.0.rst CPython 3.3 compatible versions ------------------------------- diff --git a/pypy/doc/index-of-whatsnew.rst b/pypy/doc/index-of-whatsnew.rst --- a/pypy/doc/index-of-whatsnew.rst +++ b/pypy/doc/index-of-whatsnew.rst @@ -7,6 +7,7 @@ .. toctree:: whatsnew-head.rst + whatsnew-pypy2-5.7.0.rst whatsnew-pypy2-5.6.0.rst whatsnew-pypy2-5.4.0.rst whatsnew-pypy2-5.3.1.rst diff --git a/pypy/doc/release-v5.7.0.rst b/pypy/doc/release-v5.7.0.rst new file mode 100644 --- /dev/null +++ b/pypy/doc/release-v5.7.0.rst @@ -0,0 +1,190 @@ +============================================= +PyPy2.7 and PyPy3.5 v5.7 - two in one release +============================================= + +We have released PyPy2.7 and a beta-quality PyPy3.5 v5.7. +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 +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 +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 +as `these benchmarks show`_ it already gives a nice speed bump. +We also backported the ``f""`` formatting from 3.6 (as an expection; otherwise +"PyPy3.5" supports the Python 3.5 language). + +CFFI_ has been updated to 1.10, improving an already great package for +interfacing with C. + +We now use shadowstack as our default gcrootfinder_ even on Linux. The +alternative, asmgcc, will be deprecated at some future point. While about 3% +slower, shadowstack is much more easily maintained and debuggable. Also, +the performance of shadowstack has been improved in general: this should +close the speed gap between Linux and other platforms. + +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 v5.7 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. + +.. _CFFI: https://cffi.readthedocs.io/en/latest/whatsnew.html +.. _grant: https://morepypy.blogspot.com/2016/08/pypy-gets-funding-from-mozilla-for.html +.. _`PyPy`: index.html +.. _`RPython`: https://rpython.readthedocs.org +.. _`modules`: project-ideas.html#make-more-python-modules-pypy-friendly +.. _`help`: project-ideas.html +.. _`these benchmarks show`: https://morepypy.blogspot.com/2017/03/async-http-benchmarks-on-pypy3.html +.. _gcrootfinder: config/translation.gcrootfinder.html + +What is PyPy? +============= + +PyPy is a very compliant Python interpreter, almost a drop-in replacement for +CPython 2.7 and CPython 3.5. 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://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 + * 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 + * support translations with cpyext and the Boehm GC (for special cases like + 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) + * 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 + +* Bug Fixes + + * any uncaught RPython exception in the interpreter is turned into a + SystemError (rather than a segfault) + * create log files without the executable bit + * 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 + * 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 + * fix in corner cases with the GIL and C-API functions + +* Performance improvements: + + * clean-ups in the jit optimizeopt + * optimize ``if x is not None: return x`` or ``if x != 0: return x`` + * add ``jit.conditional_call_elidable()``, a way to tell the JIT + "conditonally call this function" returning a result + * try harder to propagate ``can_be_None=False`` information + * add ``rarithmetic.ovfcheck_int32_add/sub/mul`` + * add and use ``rgc.may_ignore_finalizer()``: an optimization hint that makes + the GC stop tracking the object + * replace malloc+memset with a single calloc, useful for large allocations? + * linux: try to implement os.urandom() as the syscall getrandom() if available + * propagate ``debug.ll_assert_not_none()`` through the JIT to reduce number of + guards + * improve the performance of ``PyDict_Next`` + * improve ``dict.pop()`` + * improve the optimization of branchy Python code by retaining more + information across failing guards + * add optimized "zero-copy" path for ``io.FileIO.readinto`` + +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 + +* New features + + * this first PyPy3.5 release implements much, but not all, of Python 3.5.3 + * 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 + * solve deadlocks in thread locking mechanism + +* Performance improvements: + + * do not create a list whenever descr_new of a bytesobject is called + * + * + * + +.. _resolved: whatsnew-pypy2-5.7.0.html +.. _cryptography: https://cryptography.io +.. _cppyy: cppyy.html + +Please update, and continue to help us make PyPy better. + +Cheers diff --git a/pypy/doc/tool/makecontributor.py b/pypy/doc/tool/makecontributor.py --- a/pypy/doc/tool/makecontributor.py +++ b/pypy/doc/tool/makecontributor.py @@ -75,9 +75,10 @@ 'Spenser Bauman':['Spenser Andrew Bauman'], 'Raffael Tfirst':['raffael.tfi...@gmail.com'], 'timo':['t...@eistee.fritz.box'], - 'Jasper Schulz':['Jasper.Schulz'], + 'Jasper Schulz':['Jasper.Schulz', 'jbs'], 'Aaron Gallagher':['"Aaron Gallagher'], 'Yasir Suhail':['yasirs'], + 'Squeaky', ['squeaky'], } alias_map = {} 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 @@ -1,191 +1,8 @@ ========================== -What's new in PyPy2.7 5.6+ +What's new in PyPy2.7 5.8+ ========================== -.. this is a revision shortly after release-pypy2.7-v5.6 -.. startrev: 7e9787939641 +.. this is a revision shortly after release-pypy2.7-v5.7 +.. startrev: 44f31f6dd39f -Since a while now, PyPy preserves the order of dictionaries and sets. -However, the set literal syntax ``{x, y, z}`` would by mistake build a -set with the opposite order: ``set([z, y, x])``. This has been fixed. -Note that CPython is inconsistent too: in 2.7.12, ``{5, 5.0}`` would be -``set([5.0])``, but in 2.7.trunk it is ``set([5])``. PyPy's behavior -changed in exactly the same way because of this fix. - - -.. branch: rpython-error-to-systemerror - -Any uncaught RPython exception (from a PyPy bug) is turned into an -app-level SystemError. This should improve the lot of users hitting an -uncaught RPython error. - -.. branch: union-side-effects-2 - -Try to improve the consistency of RPython annotation unions. - -.. branch: pytest-2.9.2 - -.. branch: clean-exported-state - -Clean-ups in the jit optimizeopt - -.. branch: conditional_call_value_4 - -Add jit.conditional_call_elidable(), a way to tell the JIT "conditonally -call this function" returning a result. - -.. branch: desc-specialize - -Refactor FunctionDesc.specialize() and related code (RPython annotator). - -.. branch: raw-calloc - -.. branch: issue2446 - -Assign ``tp_doc`` to the new TypeObject's type dictionary ``__doc__`` key -so it will be picked up by app-level objects of that type - -.. branch: cling-support - -Module cppyy now uses cling as its backend (Reflex has been removed). The -user-facing interface and main developer tools (genreflex, selection files, -class loader, etc.) remain the same. A libcppyy_backend.so library is still -needed but is now available through PyPI with pip: PyPy-cppyy-backend. - -The Cling-backend brings support for modern C++ (11, 14, etc.), dynamic -template instantations, and improved integration with CFFI for better -performance. It also provides interactive C++ (and bindings to that). - -.. branch: better-PyDict_Next - -Improve the performance of ``PyDict_Next``. When trying ``PyDict_Next`` on a -typedef dict, the test exposed a problem converting a ``GetSetProperty`` to a -``PyGetSetDescrObject``. The other direction seem to be fully implemented. -This branch made a minimal effort to convert the basic fields to avoid -segfaults, but trying to use the ``PyGetSetDescrObject`` will probably fail. - -.. branch: stdlib-2.7.13 - -Updated the implementation to match CPython 2.7.13 instead of 2.7.13. - -.. branch: issue2444 - -Fix ``PyObject_GetBuffer`` and ``PyMemoryView_GET_BUFFER``, which leaked -memory and held references. Add a finalizer to CPyBuffer, add a -PyMemoryViewObject with a PyBuffer attached so that the call to -``PyMemoryView_GET_BUFFER`` does not leak a PyBuffer-sized piece of memory. -Properly call ``bf_releasebuffer`` when not ``NULL``. - -.. branch: boehm-rawrefcount - -Support translations of cpyext with the Boehm GC (for special cases like -revdb). - -.. branch: strbuf-as-buffer - -Implement StringBuffer.get_raw_address (missing feature for the buffer protocol). -More generally it is now possible to obtain the address of any object (if it -is readonly) without pinning it. - -.. branch: cpyext-cleanup -.. branch: api_func-refactor - -Refactor cpyext initialisation. - -.. branch: cpyext-from2 - -Fix a test failure introduced by strbuf-as-buffer - -.. branch: cpyext-FromBuffer - -Do not recreate the object in PyMemoryView_FromBuffer, rather pass it to -the returned PyMemoryViewObject, to take ownership of it. Fixes a ref leak. - -.. branch: issue2464 - -Give (almost?) all GetSetProperties a valid __objclass__. - -.. branch: TreeStain/fixed-typo-line-29-mostly-to-most-1484469416419 -.. branch: TreeStain/main-lines-changed-in-l77-l83-made-para-1484471558033 - -.. branch: missing-tp_new - -Improve mixing app-level classes in c-extensions, especially if the app-level -class has a ``tp_new`` or ``tp_dealloc``. The issue is that c-extensions expect -all the method slots to be filled with a function pointer, where app-level will -search up the mro for an appropriate function at runtime. With this branch we -now fill many more slots in the c-extenion type objects. -Also fix for c-extension type that calls ``tp_hash`` during initialization -(str, unicode types), and fix instantiating c-extension types from built-in -classes by enforcing an order of instaniation. - -.. branch: rffi-parser-2 - -rffi structures in cpyext can now be created by parsing simple C headers. -Additionally, the cts object that holds the parsed information can act like -cffi's ffi objects, with the methods cts.cast() and cts.gettype(). - -.. branch: rpython-hash - -Don't freeze hashes in the translated pypy. In practice, that means -that we can now translate PyPy with the option --hash=siphash24 and get -the same hashes as CPython 3.5, which can be randomized (in a -crypographically good way). It is the default in PyPy3. The default of -PyPy2 remains unchanged: there are user programs out there that depend -on constant hashes (or even sometimes on specific hash results). - -.. branch: dict-move-to-end - -Our dicts, which are always ordered, now have an extra "method" for -Python 3.x which moves an item to first or last position. In PyPy 3.5 -it is the standard ``OrderedDict.move_to_end()`` method, but the -behavior is also available on Python 2.x or for the ``dict`` type by -calling ``__pypy__.move_to_end(dict, key, last=True)``. - - -.. branch optinfo-into-bridges-3 - -Improve the optimization of branchy Python code by retaining more information -across failing guards. - - -.. branch: space-newtext - -Internal refactoring of ``space.wrap()``, which is now replaced with -explicitly-typed methods. Notably, there are now ``space.newbytes()`` -and ``space.newtext()``: these two methods are identical on PyPy 2.7 but -not on PyPy 3.x. The latter is used to get an app-level unicode string -by decoding the RPython string, assumed to be utf-8. - -.. branch: space-wrap - -.. branch: fix_bool_restype - -Fix for ``ctypes.c_bool``-returning ctypes functions - -.. branch: fix-cpyext-releasebuffer - -Improve handling of the Py3-style buffer slots in cpyext: fix memoryviews -keeping objects alive forever (missing decref), and make sure that -bf_releasebuffer is called when it should, e.g. from PyBuffer_Release. - -.. branch: fix-global - -Fix bug (bad reported info) when asked to translate SyntaxWarning to -SyntaxError. - -.. branch: optinfo-into-bridges-3 - -Improve the optimization of branchy Python code by retaining more -information across failing guards. This is done by appending some -carefully encoded extra information into the resume code. - -.. branch: shadowstack-perf-2 - -Two changes that together bring the performance of shadowstack close to -asmgcc---close enough that we can now make shadowstack the default even -on Linux. This should remove a whole class of rare bugs introduced by -asmgcc. - -.. branch: fniephaus/fix-typo-1488123166752 diff --git a/pypy/doc/whatsnew-pypy2-5.7.0.rst b/pypy/doc/whatsnew-pypy2-5.7.0.rst new file mode 100644 --- /dev/null +++ b/pypy/doc/whatsnew-pypy2-5.7.0.rst @@ -0,0 +1,191 @@ +========================= +What's new in PyPy2.7 5.7 +========================= + +.. this is a revision shortly after release-pypy2.7-v5.6 +.. startrev: 7e9787939641 + + +Since a while now, PyPy preserves the order of dictionaries and sets. +However, the set literal syntax ``{x, y, z}`` would by mistake build a +set with the opposite order: ``set([z, y, x])``. This has been fixed. +Note that CPython is inconsistent too: in 2.7.12, ``{5, 5.0}`` would be +``set([5.0])``, but in 2.7.trunk it is ``set([5])``. PyPy's behavior +changed in exactly the same way because of this fix. + + +.. branch: rpython-error-to-systemerror + +Any uncaught RPython exception (from a PyPy bug) is turned into an +app-level SystemError. This should improve the lot of users hitting an +uncaught RPython error. + +.. branch: union-side-effects-2 + +Try to improve the consistency of RPython annotation unions. + +.. branch: pytest-2.9.2 + +.. branch: clean-exported-state + +Clean-ups in the jit optimizeopt + +.. branch: conditional_call_value_4 + +Add jit.conditional_call_elidable(), a way to tell the JIT "conditonally +call this function" returning a result. + +.. branch: desc-specialize + +Refactor FunctionDesc.specialize() and related code (RPython annotator). + +.. branch: raw-calloc + +.. branch: issue2446 + +Assign ``tp_doc`` to the new TypeObject's type dictionary ``__doc__`` key +so it will be picked up by app-level objects of that type + +.. branch: cling-support + +Module cppyy now uses cling as its backend (Reflex has been removed). The +user-facing interface and main developer tools (genreflex, selection files, +class loader, etc.) remain the same. A libcppyy_backend.so library is still +needed but is now available through PyPI with pip: PyPy-cppyy-backend. + +The Cling-backend brings support for modern C++ (11, 14, etc.), dynamic +template instantations, and improved integration with CFFI for better +performance. It also provides interactive C++ (and bindings to that). + +.. branch: better-PyDict_Next + +Improve the performance of ``PyDict_Next``. When trying ``PyDict_Next`` on a +typedef dict, the test exposed a problem converting a ``GetSetProperty`` to a +``PyGetSetDescrObject``. The other direction seem to be fully implemented. +This branch made a minimal effort to convert the basic fields to avoid +segfaults, but trying to use the ``PyGetSetDescrObject`` will probably fail. + +.. branch: stdlib-2.7.13 + +Updated the implementation to match CPython 2.7.13 instead of 2.7.13. + +.. branch: issue2444 + +Fix ``PyObject_GetBuffer`` and ``PyMemoryView_GET_BUFFER``, which leaked +memory and held references. Add a finalizer to CPyBuffer, add a +PyMemoryViewObject with a PyBuffer attached so that the call to +``PyMemoryView_GET_BUFFER`` does not leak a PyBuffer-sized piece of memory. +Properly call ``bf_releasebuffer`` when not ``NULL``. + +.. branch: boehm-rawrefcount + +Support translations of cpyext with the Boehm GC (for special cases like +revdb). + +.. branch: strbuf-as-buffer + +Implement StringBuffer.get_raw_address (missing feature for the buffer protocol). +More generally it is now possible to obtain the address of any object (if it +is readonly) without pinning it. + +.. branch: cpyext-cleanup +.. branch: api_func-refactor + +Refactor cpyext initialisation. + +.. branch: cpyext-from2 + +Fix a test failure introduced by strbuf-as-buffer + +.. branch: cpyext-FromBuffer + +Do not recreate the object in PyMemoryView_FromBuffer, rather pass it to +the returned PyMemoryViewObject, to take ownership of it. Fixes a ref leak. + +.. branch: issue2464 + +Give (almost?) all GetSetProperties a valid __objclass__. + +.. branch: TreeStain/fixed-typo-line-29-mostly-to-most-1484469416419 +.. branch: TreeStain/main-lines-changed-in-l77-l83-made-para-1484471558033 + +.. branch: missing-tp_new + +Improve mixing app-level classes in c-extensions, especially if the app-level +class has a ``tp_new`` or ``tp_dealloc``. The issue is that c-extensions expect +all the method slots to be filled with a function pointer, where app-level will +search up the mro for an appropriate function at runtime. With this branch we +now fill many more slots in the c-extenion type objects. +Also fix for c-extension type that calls ``tp_hash`` during initialization +(str, unicode types), and fix instantiating c-extension types from built-in +classes by enforcing an order of instaniation. + +.. branch: rffi-parser-2 + +rffi structures in cpyext can now be created by parsing simple C headers. +Additionally, the cts object that holds the parsed information can act like +cffi's ffi objects, with the methods cts.cast() and cts.gettype(). + +.. branch: rpython-hash + +Don't freeze hashes in the translated pypy. In practice, that means +that we can now translate PyPy with the option --hash=siphash24 and get +the same hashes as CPython 3.5, which can be randomized (in a +crypographically good way). It is the default in PyPy3. The default of +PyPy2 remains unchanged: there are user programs out there that depend +on constant hashes (or even sometimes on specific hash results). + +.. branch: dict-move-to-end + +Our dicts, which are always ordered, now have an extra "method" for +Python 3.x which moves an item to first or last position. In PyPy 3.5 +it is the standard ``OrderedDict.move_to_end()`` method, but the +behavior is also available on Python 2.x or for the ``dict`` type by +calling ``__pypy__.move_to_end(dict, key, last=True)``. + + +.. branch optinfo-into-bridges-3 + +Improve the optimization of branchy Python code by retaining more information +across failing guards. + + +.. branch: space-newtext + +Internal refactoring of ``space.wrap()``, which is now replaced with +explicitly-typed methods. Notably, there are now ``space.newbytes()`` +and ``space.newtext()``: these two methods are identical on PyPy 2.7 but +not on PyPy 3.x. The latter is used to get an app-level unicode string +by decoding the RPython string, assumed to be utf-8. + +.. branch: space-wrap + +.. branch: fix_bool_restype + +Fix for ``ctypes.c_bool``-returning ctypes functions + +.. branch: fix-cpyext-releasebuffer + +Improve handling of the Py3-style buffer slots in cpyext: fix memoryviews +keeping objects alive forever (missing decref), and make sure that +bf_releasebuffer is called when it should, e.g. from PyBuffer_Release. + +.. branch: fix-global + +Fix bug (bad reported info) when asked to translate SyntaxWarning to +SyntaxError. + +.. branch: optinfo-into-bridges-3 + +Improve the optimization of branchy Python code by retaining more +information across failing guards. This is done by appending some +carefully encoded extra information into the resume code. + +.. branch: shadowstack-perf-2 + +Two changes that together bring the performance of shadowstack close to +asmgcc---close enough that we can now make shadowstack the default even +on Linux. This should remove a whole class of rare bugs introduced by +asmgcc. + +.. branch: fniephaus/fix-typo-1488123166752 diff --git a/pypy/doc/whatsnew-pypy3-5.7.0.rst b/pypy/doc/whatsnew-pypy3-5.7.0.rst new file mode 100644 --- /dev/null +++ b/pypy/doc/whatsnew-pypy3-5.7.0.rst @@ -0,0 +1,14 @@ +========================= +What's new in PyPy3 5.7.0 +========================= + +.. this is the revision after release-pypy3.3-5.5.x was branched +.. startrev: c5fb5db3c8ee + +.. branch: py3.5-time + +.. branch: py3.5-ssl + +.. branch: PEP393 + +Implement some level of compatibility with PEP 393 APIs. diff --git a/pypy/doc/whatsnew-pypy3-head.rst b/pypy/doc/whatsnew-pypy3-head.rst new file mode 100644 --- /dev/null +++ b/pypy/doc/whatsnew-pypy3-head.rst @@ -0,0 +1,7 @@ +========================= +What's new in PyPy3 5.7+ +========================= + +.. this is the revision after release-pypy3.3-5.7.x was branched +.. startrev: afbf09453369 + diff --git a/pypy/module/_cffi_backend/test/test_recompiler.py b/pypy/module/_cffi_backend/test/test_recompiler.py --- a/pypy/module/_cffi_backend/test/test_recompiler.py +++ b/pypy/module/_cffi_backend/test/test_recompiler.py @@ -1866,7 +1866,7 @@ def test_call_with_nested_anonymous_struct(self): import sys if sys.platform == 'win32': - py.test.skip("needs a GCC extension") + skip("needs a GCC extension") ffi, lib = self.prepare(""" struct foo { int a; union { int b, c; }; }; struct foo f(void); @@ -1914,6 +1914,9 @@ "set_source() and not taking a final '...' argument)") def test_call_with_zero_length_field(self): + import sys + if sys.platform == 'win32': + skip("zero-length field not supported by MSVC") ffi, lib = self.prepare(""" struct foo { int a; int x[0]; }; struct foo f(void); @@ -1959,7 +1962,7 @@ def test_call_with_packed_struct(self): import sys if sys.platform == 'win32': - py.test.skip("needs a GCC extension") + skip("needs a GCC extension") ffi, lib = self.prepare(""" struct foo { char y; int x; }; struct foo f(void); diff --git a/pypy/module/_multibytecodec/src/cjkcodecs/cjkcodecs.h b/pypy/module/_multibytecodec/src/cjkcodecs/cjkcodecs.h --- a/pypy/module/_multibytecodec/src/cjkcodecs/cjkcodecs.h +++ b/pypy/module/_multibytecodec/src/cjkcodecs/cjkcodecs.h @@ -201,10 +201,13 @@ #define BEGIN_MAPPINGS_LIST /* empty */ #define MAPPING_ENCONLY(enc) \ + RPY_EXTERN const struct dbcs_map pypy_cjkmap_##enc; \ const struct dbcs_map pypy_cjkmap_##enc = {#enc, (void*)enc##_encmap, NULL}; #define MAPPING_DECONLY(enc) \ + RPY_EXTERN const struct dbcs_map pypy_cjkmap_##enc; \ const struct dbcs_map pypy_cjkmap_##enc = {#enc, NULL, (void*)enc##_decmap}; #define MAPPING_ENCDEC(enc) \ + RPY_EXTERN const struct dbcs_map pypy_cjkmap_##enc; \ const struct dbcs_map pypy_cjkmap_##enc = {#enc, (void*)enc##_encmap, \ (void*)enc##_decmap}; #define END_MAPPINGS_LIST /* empty */ @@ -294,7 +297,7 @@ #ifdef USING_IMPORTED_MAPS #define USING_IMPORTED_MAP(charset) \ - extern const struct dbcs_map pypy_cjkmap_##charset; + RPY_EXTERN const struct dbcs_map pypy_cjkmap_##charset; #define IMPORT_MAP(locale, charset, encmap, decmap) \ importmap(&pypy_cjkmap_##charset, encmap, decmap) diff --git a/pypy/module/_rawffi/alt/test/test_funcptr.py b/pypy/module/_rawffi/alt/test/test_funcptr.py --- a/pypy/module/_rawffi/alt/test/test_funcptr.py +++ b/pypy/module/_rawffi/alt/test/test_funcptr.py @@ -32,7 +32,10 @@ # c_file.write(py.code.Source('\n'.join(snippets))) eci = ExternalCompilationInfo(include_dirs=[cdir]) - return str(platform.compile([c_file], eci, 'x', standalone=False)) + # Windows note: can't reuse the same file name 'x.dll', because + # the previous one is likely still opened + return str(platform.compile([c_file], eci, 'x' + cls.__name__, + standalone=False)) def setup_class(cls): space = cls.space diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py --- a/pypy/module/cpyext/api.py +++ b/pypy/module/cpyext/api.py @@ -609,6 +609,7 @@ 'Py_FrozenFlag', 'Py_TabcheckFlag', 'Py_UnicodeFlag', 'Py_IgnoreEnvironmentFlag', 'Py_DivisionWarningFlag', 'Py_DontWriteBytecodeFlag', 'Py_NoUserSiteDirectory', '_Py_QnewFlag', 'Py_Py3kWarningFlag', 'Py_HashRandomizationFlag', '_Py_PackageContext', + '_PyTraceMalloc_Track', '_PyTraceMalloc_Untrack', 'PyMem_Malloc', ] TYPES = {} FORWARD_DECLS = [] diff --git a/pypy/module/cpyext/include/patchlevel.h b/pypy/module/cpyext/include/patchlevel.h --- a/pypy/module/cpyext/include/patchlevel.h +++ b/pypy/module/cpyext/include/patchlevel.h @@ -29,8 +29,8 @@ #define PY_VERSION "2.7.13" /* PyPy version as a string */ -#define PYPY_VERSION "5.7.0-alpha0" -#define PYPY_VERSION_NUM 0x05070000 +#define PYPY_VERSION "5.8.0-alpha0" +#define PYPY_VERSION_NUM 0x05080000 /* Defined to mean a PyPy where cpyext holds more regular references to PyObjects, e.g. staying alive as long as the internal PyPy object diff --git a/pypy/module/cpyext/test/test_pystate.py b/pypy/module/cpyext/test/test_pystate.py --- a/pypy/module/cpyext/test/test_pystate.py +++ b/pypy/module/cpyext/test/test_pystate.py @@ -73,6 +73,7 @@ ("dance", "METH_NOARGS", """ PyThreadState *old_tstate, *new_tstate; + PyObject *d; PyEval_InitThreads(); @@ -81,7 +82,7 @@ return PyLong_FromLong(0); } - PyObject* d = PyThreadState_GetDict(); /* fails on cpython */ + d = PyThreadState_GetDict(); /* fails on cpython */ if (d != NULL) { return PyLong_FromLong(1); } @@ -144,6 +145,9 @@ ("bounce", "METH_NOARGS", """ PyThreadState * tstate; + PyObject *dict; + PyGILState_STATE gilstate; + if (PyEval_ThreadsInitialized() == 0) { PyEval_InitThreads(); @@ -152,11 +156,11 @@ if (tstate == NULL) { return PyLong_FromLong(0); } - PyObject* dict = PyThreadState_GetDict(); + dict = PyThreadState_GetDict(); if (dict != NULL) { return PyLong_FromLong(1); } - PyGILState_STATE gilstate = PyGILState_Ensure(); + gilstate = PyGILState_Ensure(); dict = PyThreadState_GetDict(); if (dict == NULL) { return PyLong_FromLong(2); diff --git a/pypy/module/cpyext/test/test_tupleobject.py b/pypy/module/cpyext/test/test_tupleobject.py --- a/pypy/module/cpyext/test/test_tupleobject.py +++ b/pypy/module/cpyext/test/test_tupleobject.py @@ -154,5 +154,10 @@ def test_tuple_subclass(self): module = self.import_module(name='foo') - a = module.TupleLike([1, 2, 3]) + a = module.TupleLike(range(100, 400, 100)) assert module.is_TupleLike(a) == 1 + assert isinstance(a, tuple) + assert issubclass(type(a), tuple) + assert list(a) == range(100, 400, 100) + assert list(a) == range(100, 400, 100) + assert list(a) == range(100, 400, 100) diff --git a/pypy/module/cpyext/test/test_typeobject.py b/pypy/module/cpyext/test/test_typeobject.py --- a/pypy/module/cpyext/test/test_typeobject.py +++ b/pypy/module/cpyext/test/test_typeobject.py @@ -1221,3 +1221,25 @@ pass bases = module.foo(C) assert bases == (A, B) + + def test_multiple_inheritance_old_style_base(self): + module = self.import_extension('foo', [ + ("foo", "METH_O", + ''' + PyTypeObject *tp; + tp = (PyTypeObject*)args; + Py_INCREF(tp->tp_bases); + return tp->tp_bases; + ''' + )]) + # used to segfault after some iterations + for i in range(11): + print i + class A(object): + pass + class B: + pass + class C(A, B): + pass + bases = module.foo(C) + assert bases == (A, B) diff --git a/pypy/module/cpyext/test/test_userslots.py b/pypy/module/cpyext/test/test_userslots.py --- a/pypy/module/cpyext/test/test_userslots.py +++ b/pypy/module/cpyext/test/test_userslots.py @@ -160,8 +160,9 @@ }; ''', more_init=''' PyObject * mod = PyImport_ImportModule("datetime"); + PyObject * dt; if (mod == NULL) INITERROR; - PyObject * dt = PyString_FromString("datetime"); + dt = PyString_FromString("datetime"); datetime_cls = (PyTypeObject*)PyObject_GetAttr(mod, dt); if (datetime_cls == NULL) INITERROR; _Timestamp.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE; diff --git a/pypy/module/cpyext/typeobject.py b/pypy/module/cpyext/typeobject.py --- a/pypy/module/cpyext/typeobject.py +++ b/pypy/module/cpyext/typeobject.py @@ -418,8 +418,8 @@ def inherit_special(space, pto, base_pto): # XXX missing: copy basicsize and flags in a magical way - # (minimally, if tp_basicsize is zero we copy it from the base) - if not pto.c_tp_basicsize: + # (minimally, if tp_basicsize is zero or too low, we copy it from the base) + if pto.c_tp_basicsize < base_pto.c_tp_basicsize: pto.c_tp_basicsize = base_pto.c_tp_basicsize if pto.c_tp_itemsize < base_pto.c_tp_itemsize: pto.c_tp_itemsize = base_pto.c_tp_itemsize @@ -931,7 +931,10 @@ if base: inherit_special(space, pto, base) for w_base in space.fixedview(from_ref(space, pto.c_tp_bases)): - inherit_slots(space, pto, w_base) + if isinstance(w_base, W_TypeObject): + inherit_slots(space, pto, w_base) + #else: + # w_base is a W_ClassObject, ignore it if not pto.c_tp_setattro: from pypy.module.cpyext.object import PyObject_GenericSetAttr diff --git a/pypy/module/sys/version.py b/pypy/module/sys/version.py --- a/pypy/module/sys/version.py +++ b/pypy/module/sys/version.py @@ -10,7 +10,7 @@ #XXX # sync CPYTHON_VERSION with patchlevel.h, package.py CPYTHON_API_VERSION = 1013 #XXX # sync with include/modsupport.h -PYPY_VERSION = (5, 7, 0, "alpha", 0) #XXX # sync patchlevel.h +PYPY_VERSION = (5, 8, 0, "alpha", 0) #XXX # sync patchlevel.h import pypy diff --git a/pypy/module/test_lib_pypy/cffi_tests/cffi0/test_parsing.py b/pypy/module/test_lib_pypy/cffi_tests/cffi0/test_parsing.py --- a/pypy/module/test_lib_pypy/cffi_tests/cffi0/test_parsing.py +++ b/pypy/module/test_lib_pypy/cffi_tests/cffi0/test_parsing.py @@ -387,13 +387,14 @@ def test_enum(): ffi = FFI() ffi.cdef(""" - enum Enum { POS = +1, TWO = 2, NIL = 0, NEG = -1}; + enum Enum { POS = +1, TWO = 2, NIL = 0, NEG = -1, OP = (POS+TWO)-1}; """) C = ffi.dlopen(None) assert C.POS == 1 assert C.TWO == 2 assert C.NIL == 0 assert C.NEG == -1 + assert C.OP == 2 def test_stdcall(): ffi = FFI() diff --git a/rpython/jit/backend/x86/assembler.py b/rpython/jit/backend/x86/assembler.py --- a/rpython/jit/backend/x86/assembler.py +++ b/rpython/jit/backend/x86/assembler.py @@ -349,15 +349,12 @@ # mc.MOV(eax, heap(self.cpu.pos_exception())) mc.TEST_rr(eax.value, eax.value) - mc.J_il8(rx86.Conditions['NZ'], 0) - jnz_location = mc.get_relative_pos() + jnz_location = mc.emit_forward_jump('NZ') # mc.RET() # # patch the JNZ above - offset = mc.get_relative_pos() - jnz_location - assert 0 < offset <= 127 - mc.overwrite(jnz_location-1, chr(offset)) + mc.patch_forward_jump(jnz_location) # From now on this function is basically "merged" with # its caller and so contains DEFAULT_FRAME_BYTES bytes # plus my own return address, which we'll ignore next @@ -834,16 +831,13 @@ ofs = self.cpu.unpack_fielddescr(descrs.arraydescr.lendescr) mc.CMP_bi(ofs, 0xffffff) # force writing 32 bit stack_check_cmp_ofs = mc.get_relative_pos() - 4 - mc.J_il8(rx86.Conditions['GE'], 0) - jg_location = mc.get_relative_pos() + jg_location = mc.emit_forward_jump('GE') mc.MOV_si(WORD, 0xffffff) # force writing 32 bit ofs2 = mc.get_relative_pos() - 4 self.push_gcmap(mc, gcmap, store=True) mc.CALL(imm(self._frame_realloc_slowpath)) # patch the JG above - offset = mc.get_relative_pos() - jg_location - assert 0 < offset <= 127 - mc.overwrite(jg_location-1, chr(offset)) + mc.patch_forward_jump(jg_location) self.frame_depth_to_patch.append(stack_check_cmp_ofs) self.frame_depth_to_patch.append(ofs2) @@ -857,16 +851,13 @@ ofs = self.cpu.unpack_fielddescr(descrs.arraydescr.lendescr) mc.CMP_bi(ofs, 0xffffff) stack_check_cmp_ofs = mc.get_relative_pos() - 4 - mc.J_il8(rx86.Conditions['GE'], 0) - jg_location = mc.get_relative_pos() + jg_location = mc.emit_forward_jump('GE') mc.MOV_rr(edi.value, ebp.value) mc.MOV_ri(esi.value, 0xffffff) ofs2 = mc.get_relative_pos() - 4 mc.CALL(imm(self.cpu.realloc_frame_crash)) # patch the JG above - offset = mc.get_relative_pos() - jg_location - assert 0 < offset <= 127 - mc.overwrite(jg_location-1, chr(offset)) + mc.patch_forward_jump(jg_location) self.frame_depth_to_patch.append(stack_check_cmp_ofs) self.frame_depth_to_patch.append(ofs2) @@ -1002,13 +993,10 @@ self.mc.MOV(eax, heap(endaddr)) # MOV eax, [start] self.mc.SUB(eax, esp) # SUB eax, current self.mc.CMP(eax, heap(lengthaddr)) # CMP eax, [length] - self.mc.J_il8(rx86.Conditions['BE'], 0) # JBE .skip - jb_location = self.mc.get_relative_pos() + jb_location = self.mc.emit_forward_jump('BE')#JBE .skip self.mc.CALL(imm(self.stack_check_slowpath))# CALL slowpath # patch the JB above # .skip: - offset = self.mc.get_relative_pos() - jb_location - assert 0 < offset <= 127 - self.mc.overwrite(jb_location-1, chr(offset)) + self.mc.patch_forward_jump(jb_location) # def _call_footer(self): @@ -1242,15 +1230,12 @@ return genop_cmp def _if_parity_clear_zero_and_carry(self): - self.mc.J_il8(rx86.Conditions['NP'], 0) - jnp_location = self.mc.get_relative_pos() + jnp_location = self.mc.emit_forward_jump('NP') # CMP EBP, 0: as EBP cannot be null here, that operation should # always clear zero and carry self.mc.CMP_ri(ebp.value, 0) # patch the JNP above - offset = self.mc.get_relative_pos() - jnp_location - assert 0 < offset <= 127 - self.mc.overwrite(jnp_location-1, chr(offset)) + self.mc.patch_forward_jump(jnp_location) def _cmpop_float(cond, rev_cond): is_ne = cond == 'NE' @@ -1728,10 +1713,11 @@ # jump to jump over this GUARD_NO_EXCEPTION as well, if we can _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit