Author: Armin Rigo <[email protected]> Branch: extradoc Changeset: r5432:4e83de5ed358 Date: 2014-10-15 19:05 +0200 http://bitbucket.org/pypy/extradoc/changeset/4e83de5ed358/
Log: Draft diff --git a/talk/pyconpl-2014/Makefile b/talk/pyconpl-2014/Makefile new file mode 100644 --- /dev/null +++ b/talk/pyconpl-2014/Makefile @@ -0,0 +1,18 @@ +# you can find rst2beamer.py here: +# https://bitbucket.org/antocuni/env/raw/default/bin/rst2beamer.py + +# WARNING: to work, it needs this patch for docutils +# https://sourceforge.net/tracker/?func=detail&atid=422032&aid=1459707&group_id=38414 + +talk.pdf: talk.rst author.latex stylesheet.latex + python `which rst2beamer.py` --stylesheet=stylesheet.latex --documentoptions=14pt --output-encoding=utf8 talk.rst talk.latex || exit + #/home/antocuni/.virtualenvs/rst2beamer/bin/python `which rst2beamer.py` --stylesheet=stylesheet.latex --documentoptions=14pt talk.rst talk.latex || exit + sed 's/\\date{}/\\input{author.latex}/' -i talk.latex || exit + #sed 's/\\maketitle/\\input{title.latex}/' -i talk.latex || exit + pdflatex talk.latex || exit + +view: talk.pdf + evince talk.pdf & + +xpdf: talk.pdf + xpdf talk.pdf & diff --git a/talk/pyconpl-2014/author.latex b/talk/pyconpl-2014/author.latex new file mode 100644 --- /dev/null +++ b/talk/pyconpl-2014/author.latex @@ -0,0 +1,9 @@ +\definecolor{rrblitbackground}{rgb}{0.0, 0.0, 0.0} + +\title[PyPy]{PyPy} +\author[arigo, fijal] +{Armin Rigo, Maciej Fijałkovski\\ +\includegraphics[width=80px]{../img/py-web-new.png}} + +\institute{PyCon PL} +\date{October 2014} diff --git a/talk/pyconpl-2014/beamerdefs.txt b/talk/pyconpl-2014/beamerdefs.txt new file mode 100644 --- /dev/null +++ b/talk/pyconpl-2014/beamerdefs.txt @@ -0,0 +1,108 @@ +.. colors +.. =========================== + +.. role:: green +.. role:: red + + +.. general useful commands +.. =========================== + +.. |pause| raw:: latex + + \pause + +.. |small| raw:: latex + + {\small + +.. |end_small| raw:: latex + + } + +.. |scriptsize| raw:: latex + + {\scriptsize + +.. |end_scriptsize| raw:: latex + + } + +.. |strike<| raw:: latex + + \sout{ + +.. closed bracket +.. =========================== + +.. |>| raw:: latex + + } + + +.. example block +.. =========================== + +.. |example<| raw:: latex + + \begin{exampleblock}{ + + +.. |end_example| raw:: latex + + \end{exampleblock} + + + +.. alert block +.. =========================== + +.. |alert<| raw:: latex + + \begin{alertblock}{ + + +.. |end_alert| raw:: latex + + \end{alertblock} + + + +.. columns +.. =========================== + +.. |column1| raw:: latex + + \begin{columns} + \begin{column}{0.45\textwidth} + +.. |column2| raw:: latex + + \end{column} + \begin{column}{0.45\textwidth} + + +.. |end_columns| raw:: latex + + \end{column} + \end{columns} + + + +.. |snake| image:: ../../img/py-web-new.png + :scale: 15% + + + +.. nested blocks +.. =========================== + +.. |nested| raw:: latex + + \begin{columns} + \begin{column}{0.85\textwidth} + +.. |end_nested| raw:: latex + + \end{column} + \end{columns} diff --git a/talk/pyconpl-2014/speed.png b/talk/pyconpl-2014/speed.png new file mode 100644 index 0000000000000000000000000000000000000000..33fe20ac9d81ddbd3ced48f52f9717693dc15518 GIT binary patch [cut] diff --git a/talk/pyconpl-2014/stylesheet.latex b/talk/pyconpl-2014/stylesheet.latex new file mode 100644 --- /dev/null +++ b/talk/pyconpl-2014/stylesheet.latex @@ -0,0 +1,9 @@ +\setbeamercovered{transparent} +\setbeamertemplate{navigation symbols}{} + +\definecolor{darkgreen}{rgb}{0, 0.5, 0.0} +\newcommand{\docutilsrolegreen}[1]{\color{darkgreen}#1\normalcolor} +\newcommand{\docutilsrolered}[1]{\color{red}#1\normalcolor} + +\newcommand{\green}[1]{\color{darkgreen}#1\normalcolor} +\newcommand{\red}[1]{\color{red}#1\normalcolor} diff --git a/talk/pyconpl-2014/talk.rst b/talk/pyconpl-2014/talk.rst new file mode 100644 --- /dev/null +++ b/talk/pyconpl-2014/talk.rst @@ -0,0 +1,250 @@ +.. include:: beamerdefs.txt + +================================ +PyPy +================================ + +Who We Are +---------- + +* Maciej Fijałkovski + +* Armin Rigo + +* PyPy developers for a long time + +* baroquesoftware + +What is PyPy? +-------------- + +* Python interpreter, alternative to CPython + +* Supports Python 2.7 and (beta) Python 3.2/3.3 + +* Compatible and generally much faster (JIT) + +Benchmarks +-------------------------------- + +.. image:: speed.png + :scale: 44% + +Demo +-------------------------------- + + +Recent developments +-------------------------------- + +Between PyPy 2.0 (May 2013) and PyPy 2.4 (now): + +. + +* All kinds of speed improvements for all kinds of programs + + - JIT improvements, incremental GC (garbage collector), + specific Python corners improved, ... + +* Support for ARM in addition to x86 + + - Thanks to the Raspberry-Pi foundation + +* Python 3 support + + - py3k, in addition to Python 2.7 + +* Numpy more complete (but still not done) + + - also, no scipy + +Recent developments (2) +-------------------------------- + +* CFFI + + - C Foreign Function Interface + +* STM + + - Software Transactional Memory + +CFFI +----- + +- Python <-> C interfacing done right + + * existing shared libraries + + * custom C code + +- Inspired by LuaJIT's FFI + +- Alternative to the CPython Extension API, ctypes, Cython, etc. + +- Fast-ish on CPython, super-fast on PyPy, Jython support in the future + +STM +---------------------- + +- See later + +Status +----------------------------- + +- Python code "just works" + + * generally much faster than with CPython + +- C code: improving support + + * cpyext: tries to load CPython C extension modules, slowly + + * CFFI: the future + + * cppyy for C++ + + * A very small native PyPy C API for embedding + +- Lots of CFFI modules around: + + * pygame_cffi, psycopg2cffi, lxml... + +Fundraising Campaign +--------------------- + +- py3k: 52'000 $ of 105'000 $ (50%) + +- numpy: 48'000 $ of 60'000 $ (80%) + +- STM, 1st call: 25'000 $ + +- STM, 2nd call: 16'000 $ of 80'000 $ (20%) + +- Thanks to all donors! + +Commercial support +------------------ + +- We offer commercial support for PyPy + +- Consultancy and training + +- Performance issues for open- or closed-source programs, porting, + improving support in parts of the Python or non-Python interpreters, + etc. + +- http://baroquesoftware.com + +PyPy and RPython +--------------------------- + +* PyPy is an interpreter/JIT-compiled for Python + +* PyPy is written in RPython + +* RPython is a language for writing interpreters: + it provides GC-for-free, JIT-for-free, etc. + +* Ideal for writing VMs for dynamic languages + +More PyPy-Powered Languages +---------------------------- + +- Topaz: implementing Ruby + + * most of the language implemented + + * "definitely faster than MRI" + + * https://github.com/topazproject/topaz + +- HippyVM: implementing PHP + + * ~7x faster than standard PHP + + * comparable speed as HHVM + + * http://hippyvm.com/ + +- And more + +Work in Progress: STM +--------------------- + +- Software Transactional Memory + +- Solving the GIL problem + + * GIL = Global Interpreter Lock + +- Without bringing the threads and locks mess + +- Preliminary versions of pypy-jit-stm available + +STM (2) +------- + +- STM = Free Threading done right + + * with some overhead: 30-40% so far + +- Done at the level of RPython + +- The interpreter author doesn't have to worry + about adding tons of locks + + - that's us + +- The user *can* if he likes, but doesn't have to either + + - that's you ``:-)`` + +STM (3) +------- + +- Works "like a GIL" but runs optimistically in parallel + +- A few bytecodes from thread A run on core 1 + +- A few bytecodes from thread B run on core 2 + +- If there is no conflict, we're happy + +- If there is a conflict, one of the two aborts and retries + +- Same effect as transactions in databases + +STM (4) +------- + +- Threading made simpler for the user + +- It is generally efficient with *very coarse locks* + + * no fine-grained locking needed + +- Easy to convert a number of existing single-threaded programs + + * start multiple threads, run blocks of code in each + + * use a single lock around everything + + * normally, you win absolutely nothing + + * but STM can (try to) *execute the blocks in parallel* anyway + +STM (Demo) +---------- + + +Contacts, Q&A +-------------- + +- http://pypy.org + +- http://morepypy.blogspot.com/ + +- ``#pypy`` at freenode.net + +- Any question? _______________________________________________ pypy-commit mailing list [email protected] https://mail.python.org/mailman/listinfo/pypy-commit
