Author: Ronan Lamy <ronan.l...@gmail.com> Branch: extradoc Changeset: r5403:ef0fa11803c3 Date: 2014-09-17 21:09 +0100 http://bitbucket.org/pypy/extradoc/changeset/ef0fa11803c3/
Log: progress diff --git a/talk/pycon-uk-2014/Makefile b/talk/pycon-uk-2014/Makefile --- a/talk/pycon-uk-2014/Makefile +++ b/talk/pycon-uk-2014/Makefile @@ -1,6 +1,5 @@ talk.pdf: talk.rst author.latex stylesheet.latex - rst2beamer --stylesheet=stylesheet.latex --documentoptions=14pt talk.rst talk.latex || exit - #/home/antocuni/.virtualenvs/rst2beamer/bin/python `which rst2beamer.py` --stylesheet=stylesheet.latex --documentoptions=14pt talk.rst talk.latex || exit + rst2beamer --stylesheet=stylesheet.latex --documentoptions=14pt --overlaybullets=False 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 diff --git a/talk/pycon-uk-2014/author.latex b/talk/pycon-uk-2014/author.latex --- a/talk/pycon-uk-2014/author.latex +++ b/talk/pycon-uk-2014/author.latex @@ -1,8 +1,8 @@ \definecolor{rrblitbackground}{rgb}{0.0, 0.0, 0.0} -\title[PyPy Status]{PyPy Status\\\small{(no, PyPy is not dead)}} -\author[antocuni] -{Antonio Cuni} +\title{PyPy and its ecosystem} +\author[Ronan Lamy]{Ronan Lamy\\ +\includegraphics[width=80px]{../img/py-web-new.png}} -\institute{PyCon Cinque} -\date{May 24, 2014} +\institute{Pycon UK} +\date{19 September 2014} diff --git a/talk/pycon-uk-2014/talk.rst b/talk/pycon-uk-2014/talk.rst --- a/talk/pycon-uk-2014/talk.rst +++ b/talk/pycon-uk-2014/talk.rst @@ -1,106 +1,53 @@ .. include:: beamerdefs.txt -================================ -PyPy Status -================================ +=========================== +PyPy and its ecosystem +=========================== About me --------- - PyPy core dev -- ``pdb++``, ``fancycompleter``, ... +- Working on HippyVM -- Consultant, trainer - -- http://antocuni.eu - - -PyPy is not dead ----------------- - -- No PyPy status talk at EuroPython 2013 - - * for the first time since 2004! - - * for no good reason :) - -- PyPy is healthy and alive - -|pause| - -- WARNING: This talk is boring - - * "it just works" What is PyPy? -------------- -* RPython toolchain +- "PyPy is a fast, compliant alternative implementation of the Python language (2.7.8 and 3.2.5)." - - subset of Python +- Python interpreter - - ideal for writing VMs + * written in RPython - - JIT & GC for free + * **FAST** -* Python interpreter - - written in RPython +What is RPython? +---------------- - - **FAST** +- Subset of Python -* Whatever (dynamic) language you want + * easy to read - - smalltalk, prolog, PHP, javascript, ... + * easy to test +- JIT & GC for free -PyPy: past two years (1) ------------------------------ +- General framework for dynamic languages -- PyPy 2.0 (May 2013) - * beta ARM, CFFI, unicode performance - - * stackless + JIT (eventlet, gevent, ...) - -|pause| - -- PyPy 2.1 (July 2013) - - * stable ARM - - * py3k (3.2.3), numpy, general improvements, bugfixes - -|pause| - -- PyPy 2.2 (November 2013) - - * incremental GC, faster JSON - - * more JIT, more py3k - - * more numpy, numpy C API - - -PyPy: past two years (2) +RPython-powered languages ------------------------- -- PyPy 2.3 (May 2014) +- **PyPy** -- Lot of internal refactoring +- HippyVM: implementing PHP -- C API for embedding + * ~7x faster than standard PHP - * pypy + uWSGI (thanks to Roberto De Ioris) - -- the usual, boring, general improvements - - -More PyPy-powered languages ----------------------------- - -- RPython: general framework for dynamic languages + * http://hippyvm.com/ - Topaz: implementing Ruby @@ -110,28 +57,152 @@ * https://github.com/topazproject/topaz -- HippyVM: implementing PHP +- Pyrolog (Prolog) - * ~7x faster than standard PHP +- RTruffleSOM (Smalltalk) - * http://hippyvm.com/ +- RSqueakVM (Smalltalk) +- lang-js (JavaScript) -Fundraising campaign ---------------------- +RPython translation stages +-------------------------- -- py3k: 50'852 $ of 105'000 $ (48.4%) +- (R)Python code -- numpy: 48'121 $ of 60'000 $ (80.2%) +|pause| -- STM, 1st call: 25'000 $ +- ``import`` -- STM, 2nd call: 2'097 $ of 80'000 $ (2.6%) + * Python objects (functions, classes, ...) - * more on STM later +|pause| -- thank to all donors! +- Bytecode analysis, type inference + + * Typed control flow graph + +|pause| + +- Translator transformations + + * Add GC & JIT + +|pause| + +- Code generation + + * C code + +|pause| + +- ``gcc`` + + * Compiled executable + + +How does the JIT work? +---------------------- + +|pause| + +- "Jitcode": very low-level byte code + + * Translates to machine code + +- Translation time + + * Add jitcode representation to RPython functions + +- Run-time: + + * Detect **hot** loop + + * Trace one code path through the loop + + * Compile (magic!) + + * Profit! + + +RPython example (HippyVM) +------------------------- + +|scriptsize| + +.. code:: python + + @wrap(['space', str, W_Root, Optional(int)]) + def strpos(space, haystack, w_needle, offset=0): + """Find the position of the first occurrence of a substring in a string.""" + if offset < 0 or offset > len(haystack): + space.ec.warn("strpos(): Offset not contained in string") + return space.w_False + try: + needle = unwrap_needle(space, w_needle) + except ValidationError as exc: + space.ec.warn("strpos(): " + exc.msg) + return space.w_False + if len(needle) == 0: + space.ec.warn("strpos(): Empty needle") + return space.w_False + + result = haystack.find(needle, offset) + + if result == -1: + return space.w_False + return space.newint(result) + +|end_scriptsize| + +PyPy: past two years (1) +----------------------------- + +- PyPy 2.0 (May 2013) + + * Beta ARM, CFFI, unicode performance + + * stackless + JIT (eventlet, gevent, ...) + +|pause| + +- PyPy 2.1 (July 2013) + + * Stable ARM + + * py3k (3.2.3), numpy, general improvements, bugfixes + +|pause| + +- PyPy 2.2 (November 2013) + + * Incremental GC, faster JSON + + * More JIT, more py3k + + * More numpy, numpy C API + + +PyPy: past two years (2) +------------------------- + +- PyPy 2.3 (May 2014) + + * Lot of internal refactoring + + * C API for embedding + + * General improvements + +|pause| + +- PyPy 2.4 (coming soon!) + + * Python 2.7.8 stdlib + + * General fixes and improvements + Current status --------------- @@ -171,25 +242,9 @@ - ~7.5x faster than CPython on ARM -- thanks to Raspberry-Pi foundation +- Thanks to Raspberry-Pi foundation -- distributed as part of Raspbian OS - - -numpy ------ - -- as usual, in-progress - -- ~80% of numpy implemented - - * 2336 passing tests out of 3265 - - * http://buildbot.pypy.org/numpy-status/latest.html - -- just try it - -- no scipy :-/ +- Distributed as part of Raspbian OS py3k @@ -199,7 +254,7 @@ - 3.3: branch started, in-progress -- some missing optimizations +- Some missing optimizations * getting better @@ -220,6 +275,22 @@ - Fast on CPython, super-fast on PyPy +numpy +----- + +- As usual, in-progress + +- ~80% of numpy implemented + + * 2336 passing tests out of 3265 + + * http://buildbot.pypy.org/numpy-status/latest.html + +- Just try it + +- No scipy :-/ + + cppyy ------ @@ -303,7 +374,7 @@ - With atomic blocks - * ==> Rollaback + * ==> Rollback * Performance penalty @@ -315,7 +386,7 @@ Implementation --------------- -- Conflicts detection, commit and rollaback is costly +- Conflicts detection, commit and rollback is costly - Original goal (2011): 2x-5x slower than PyPy without STM @@ -339,6 +410,20 @@ - Lots of polishing needed +Fundraising campaign +--------------------- + +- py3k: 52,380 $ of 105,000 $ (49.9%) + +- numpy: 48,412 $ of 60,000 $ (80.7%) + +- STM, 1st call: 25,000 $ + +- STM, 2nd call: 13,939 $ of 80,000 $ (17.4%) + +- Thanks to all donors! + + Contacts, Q&A -------------- @@ -346,13 +431,6 @@ - http://morepypy.blogspot.com/ -- twitter: @antocuni - -- Available for consultancy & training: - - * http://antocuni.eu - - * i...@antocuni.eu +- IRC: #p...@freenode.net - Any question? - _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit