Author: Armin Rigo <ar...@tunes.org> Branch: extradoc Changeset: r5817:3e9c42adda30 Date: 2017-07-13 16:55 +0200 http://bitbucket.org/pypy/extradoc/changeset/3e9c42adda30/
Log: First draft of the talk diff --git a/talk/ep2017/pypy-whats-new/Makefile b/talk/ep2017/pypy-whats-new/Makefile new file mode 100644 --- /dev/null +++ b/talk/ep2017/pypy-whats-new/Makefile @@ -0,0 +1,6 @@ +slides.pdf: slides.tex author.latex + pdflatex $< + +slides.tex: slides.rst + rst2beamer.py slides.rst > slides.tex + sed 's/\\date{}/\\input{author.latex}/' -i slides.tex || exit diff --git a/talk/ep2017/pypy-whats-new/author.latex b/talk/ep2017/pypy-whats-new/author.latex new file mode 100644 --- /dev/null +++ b/talk/ep2017/pypy-whats-new/author.latex @@ -0,0 +1,7 @@ +\definecolor{rrblitbackground}{rgb}{0.4, 0.0, 0.0} + +\title[What's New in PyPy]{PyPy meets Python 3 and Numpy (and other What's New topics)} +\author[Armin Rigo]{Armin Rigo} + +\institute{EuroPython 2017} +\date{July 2017} diff --git a/talk/ep2017/pypy-whats-new/graphs.png b/talk/ep2017/pypy-whats-new/graphs.png new file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..9e5b0156179767c78b72f414147959bec8e982c0 GIT binary patch [cut] diff --git a/talk/ep2017/pypy-whats-new/slides.rst b/talk/ep2017/pypy-whats-new/slides.rst new file mode 100644 --- /dev/null +++ b/talk/ep2017/pypy-whats-new/slides.rst @@ -0,0 +1,245 @@ +=========================================================== +PyPy meets Python 3 and Numpy (and other What's New topics) +=========================================================== + + +What's New In PyPy +================== + +1. Python 3.5 + +2. Numpy, Cython, Pandas, ... + +3. pypy-stm? + +4. RevDB: reverse debugging + +5. Others... + + +What is PyPy +============ + +* PyPy is another implementation of Python + +* Supports only Python 2.7... up to this year + +* Comes with a JIT, good performance + +* Mostly, drop-in replacement + + + +PyPy 3.5 +============================================================ + +PyPy 3.5 +========== + +* Python 3.5 support released in **beta** + +* Drop-in replacement for ``python3.5`` + +* Thanks to Mozilla for funding this work! + + +PyPy 3.5 +========== + +* Async HTTP benchmarks: + +.. image:: graphs.png + :scale: 21% + + +PyPy 3.5 status +=============== + +* Roughly complete 3.5 support (plus f-strings!) + +* Reasonably good performance + +* Tested mostly on Linux so far + +* Non-beta to be released "soon" (i.e. some time in 2017 I guess) + +* Python 3.6 to follow + + +Scientific stack +============================================================ + +Scientific stack +================ + +Numpy or Numpypy? + +* Numpy = the standard numpy library + +* Numpypy = our own partial reimplementation + + +Scientific stack +================ + +Numpy or Numpypy? + +* Numpy = the standard numpy library *(use this)* + +* Numpypy = our own partial reimplementation *(deprecated)* + + +Scientific stack +================ + +* Numpy works (99.9%) + +* On both PyPy 2.7 and PyPy 3.5 + +* The rest of the scientific stack mostly works too (Pandas etc.) + + +Cython, cpyext +================ + +* Cython mostly works + +* Any CPython C extension module mostly works + +* This is all thanks to ``cpyext``, our CPython C API emulation layer + + +Performance? +============== + +* Numpy/Pandas/etc. are all slow-ish at the Python-C boundary + +* Less so than last year + +* Complex algorithms written inside Numpy in C or Fortran have the same + speed, of course + + +Performance? +============== + +* Basically: try it out on your own code + + + +Software Transactional Memory +============================================================ + +Software Transactional Memory +============================= + +* ``pypy-stm``: getting rid of the Global Interpreter Lock + +* ...unfortunately, this approach does not seem to work :-( + + +Software Transactional Memory +============================= + +Unstable performance: + +* "Conflicts" between threads are hard to find + +* Fix one conflict, usually only to uncover the next one + +* As long as there is one, performance is bad + +* Continue developing the program, and you'll often reintroduce conflicts + + +PyPy-nogil? +=========== + +* Thinking instead about a GIL-free but non-STM PyPy + + + +Reverse Debugger +============================================================ + +Reverse Debugger +================ + +* The essential tool you need once a year + + +Reverse Debugger +================ + +* Debugger with the ability to go forward *and backward in time* + +* Watchpoints to know when a value changes when going in either + direction + +* http://bitbucket.org/pypy/revdb + + + +Others +============================================================ + +JIT improvements +====================== + +* Reductions in the warm-up time + +* Consumes less memory, too + + +VMProf +===================== + +* ``pip install vmprof`` + +* Works on CPython and on PyPy + +* A "good" high-performance profiler for Python code + +* The PyPy version shows the machine code generated by the JIT + + +CFFI improvements +======================= + +* CFFI: calling C from Python (from CPython or PyPy) + +* Biggest improvement of last year is *embedding* + +* Use CFFI to embed Python inside another program---much easier than + with the CPython C API, and works identically on CPython or PyPy too + + +Next year? +================================================================= + +Next year? +========== + +* Polish PyPy 3.5 / 3.6 + +* Polish Numpy and the scientific stack + +* Play with PyPy-nogil + +* Port RevDB to PyPy 3.5 + +. + + +Question & answers +================== + +* Polish PyPy 3.5 / 3.6 + +* Polish Numpy and the scientific stack + +* Play with PyPy-nogil + +* Port RevDB to PyPy 3.5 + +Thank you! PyPy main site: http://pypy.org/ _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit