Papers, talks and related projects
==================================

Papers
------

*Articles about PyPy published so far, most recent first:* (bibtex_ file)

* `A Way Forward in Parallelising Dynamic Languages`_,
  R. Meier, A. Rigo

* `Runtime Feedback in a Meta-Tracing JIT for Efficient Dynamic Languages`_,
  C.F. Bolz, A. Cuni, M. Fijalkowski, M. Leuschel, S. Pedroni, A. Rigo

* `Allocation Removal by Partial Evaluation in a Tracing JIT`_,
  C.F. Bolz, A. Cuni, M. Fijalkowski, M. Leuschel, S. Pedroni, A. Rigo

* `Towards a Jitting VM for Prolog Execution`_,
  C.F. Bolz, M. Leuschel, D, Schneider

* `High performance implementation of Python for CLI/.NET with JIT compiler generation for dynamic languages`_,
  A. Cuni, Ph.D. thesis

* `Tracing the Meta-Level: PyPy's Tracing JIT Compiler`_,
  C.F. Bolz, A. Cuni, M. Fijalkowski, A. Rigo

* `Faster than C#: Efficient Implementation of Dynamic Languages on .NET`_,
  A. Cuni, D. Ancona and A. Rigo

* `Automatic JIT Compiler Generation with Runtime Partial Evaluation`_
  (Master Thesis), C.F. Bolz

* `RPython: A Step towards Reconciling Dynamically and Statically Typed
  OO Languages`_, D. Ancona, M. Ancona, A. Cuni and N.D. Matsakis

* `How to *not* write Virtual Machines for Dynamic Languages`_,
  C.F. Bolz and A. Rigo

* `PyPy's approach to virtual machine construction`_, A. Rigo and S. Pedroni


*Non-published articles (only submitted so far, or technical reports):*

* `Automatic generation of JIT compilers for dynamic languages in .NET`_,
  D. Ancona, C.F. Bolz, A. Cuni and A. Rigo

* :doc:`EU Reports <index-report>`: a list of all the reports we produced until 2007 for the
  European Union sponsored part of PyPy.  Notably, it includes:

* `Core Object Optimization Results`_, PyPy Team

* `Compiling Dynamic Language Implementations`_, PyPy Team


*Other research using PyPy (as far as we know it):*

* `Hardware Transactional Memory Support for Lightweight Dynamic Language Evolution`_,
  N. Riley and C. Zilles

* `PyGirl: Generating Whole-System VMs from High-Level Prototypes using PyPy`_,
  C. Bruni and T. Verwaest

* `Back to the Future in One Week -- Implementing a Smalltalk VM in PyPy`_,
  C.F. Bolz, A. Kuhn, A. Lienhard, N. Matsakis, O. Nierstrasz, L. Renggli,
  A. Rigo and T. Verwaest


*Previous work:*

* `Representation-Based Just-in-Time Specialization and the Psyco Prototype
  for Python`_, A. Rigo


.. _bibtex: https://bitbucket.org/pypy/extradoc/raw/tip/talk/bibtex.bib
.. _A Way Forward in Parallelising Dynamic Languages: https://bitbucket.org/pypy/extradoc/raw/extradoc/talk/icooolps2014/position-paper.pdf
.. _Runtime Feedback in a Meta-Tracing JIT for Efficient Dynamic Languages: https://bitbucket.org/pypy/extradoc/raw/extradoc/talk/icooolps2011/jit-hints.pdf
.. _Allocation Removal by Partial Evaluation in a Tracing JIT: https://bitbucket.org/pypy/extradoc/raw/extradoc/talk/pepm2011/bolz-allocation-removal.pdf
.. _Towards a Jitting VM for Prolog Execution: http://www.stups.uni-duesseldorf.de/mediawiki/images/a/a7/Pub-BoLeSch2010.pdf
.. _High performance implementation of Python for CLI/.NET with JIT compiler generation for dynamic languages: http://buildbot.pypy.org/misc/antocuni-thesis.pdf
.. _How to *not* write Virtual Machines for Dynamic Languages: https://bitbucket.org/pypy/extradoc/raw/tip/talk/dyla2007/dyla.pdf
.. _`Tracing the Meta-Level: PyPy's Tracing JIT Compiler`: https://bitbucket.org/pypy/extradoc/raw/tip/talk/icooolps2009/bolz-tracing-jit.pdf
.. _`Faster than C#: Efficient Implementation of Dynamic Languages on .NET`: https://bitbucket.org/pypy/extradoc/raw/tip/talk/icooolps2009-dotnet/cli-jit.pdf
.. _Automatic JIT Compiler Generation with Runtime Partial Evaluation: http://stups.hhu.de/mediawiki/images/b/b9/Master_bolz.pdf
.. _`RPython: A Step towards Reconciling Dynamically and Statically Typed OO Languages`: http://www.disi.unige.it/person/AnconaD/papers/DynamicLanguages_abstracts.html#AACM-DLS07
.. _EU Reports: index-report.html
.. _Hardware Transactional Memory Support for Lightweight Dynamic Language Evolution: http://sabi.net/nriley/pubs/dls6-riley.pdf
.. _`PyGirl: Generating Whole-System VMs from High-Level Prototypes using PyPy`: http://scg.unibe.ch/archive/papers/Brun09cPyGirl.pdf
.. _Representation-Based Just-in-Time Specialization and the Psyco Prototype for Python: http://psyco.sourceforge.net/psyco-pepm-a.ps.gz
.. _Back to the Future in One Week -- Implementing a Smalltalk VM in PyPy: http://dx.doi.org/10.1007/978-3-540-89275-5_7
.. _Automatic generation of JIT compilers for dynamic languages in .NET: https://bitbucket.org/pypy/extradoc/raw/tip/talk/ecoop2009/main.pdf
.. _Core Object Optimization Results: https://bitbucket.org/pypy/extradoc/raw/tip/eu-report/D06.1_Core_Optimizations-2007-04-30.pdf
.. _Compiling Dynamic Language Implementations: https://bitbucket.org/pypy/extradoc/raw/tip/eu-report/D05.1_Publish_on_translating_a_very-high-level_description.pdf


Talks and Presentations
-----------------------

*This part is no longer updated.*  The complete list is here__ (in
alphabetical order).

.. __: https://bitbucket.org/pypy/extradoc/src/extradoc/talk/

Talks in 2010
~~~~~~~~~~~~~

* `PyCon 2010`_.


Talks in 2009
~~~~~~~~~~~~~

* `RuPy 2009`_.

* `EuroPython talks 2009`_.

* `PyCon talks 2009`_.

* `Wroclaw (Poland) presentation`_ by Maciej Fijalkowski.  Introduction,
  including about the current JIT.

* `PyPy talk at OpenBossa 09`_ (blog post).


Talks in 2008
~~~~~~~~~~~~~

* Talk `at PyCon Poland 08`_.  In Polish.

* `The PyPy Project and You`_, by Michael Hudson at OSDC 2008.

* `Back to the Future in One Week -- Implementing a Smalltalk VM in PyPy`_
  by C.F. Bolz et al.; `pdf of the presentation`__ at S3 2008.

* `EuroPython talks 2008`_.

* PyPy at the `Maemo summit`_.

* `PyCon UK 2008 - JIT`_ and `PyCon UK 2008 - Status`_.

* `PyCon Italy 2008`_.

* Talk by Maciej Fijalkowski `at SFI 08`_, Cracow (Poland) Academic IT
  Festival.

* `RuPy 2008`_.

* `PyCon 2008`_.

.. __: https://bitbucket.org/pypy/extradoc/raw/tip/talk/s3-2008/talk.pdf


Talks in 2007
~~~~~~~~~~~~~

* Our "road show" tour of the United States: presentations `at IBM`__
  and `at Google`__.

* `ESUG 2007`_.

* `RPython: A Step towards Reconciling Dynamically and Statically Typed
  OO Languages`_ at DLS 2007.  `Pdf of the presentation`__.

* Talks at `Bern (Switzerland) 2007`_.

* `PyCon UK 2007`_.

* A presentation in Dresden_ by Maciej Fijalkowski.

* Multiple talks at `EuroPython 2007`_.

* A presentation at `Bad Honnef 2007`_ by C.F. Bolz about the Prolog
  interpreter.

* A `Dzug talk`_ by Holger Krekel.

* Multiple talks at `PyCon 2007`_.

* A talk at `PyCon - Uno 2007`_.

* `RuPy 2007`_.

* `Warsaw 2007`_.

.. __: https://bitbucket.org/pypy/extradoc/raw/tip/talk/roadshow-ibm/
.. __: https://bitbucket.org/pypy/extradoc/raw/tip/talk/roadshow-google/Pypy_architecture.pdf
.. __: https://bitbucket.org/pypy/extradoc/raw/tip/talk/dls2007/rpython-talk.pdf


Talks in 2006
~~~~~~~~~~~~~

* `Warsaw 2006`_.

* `Tokyo 2006`_.

* `PyPy's VM Approach`_ talk, given by Armin Rigo at the Dynamic Languages
  Symposium at OOPSLA'06 (Portland OR), and by Samuele Pedroni at Intel
  Hillsboro (OR)  (October). The talk presents the paper
  `PyPy's approach to virtual machine construction`_ accepted for
  the symposium.

* `PyPy Status`_ talk, given by Samuele Pedroni at the Vancouner
  Python Workshop 2006 (August).

* `Trouble in Paradise`_: the Open Source Project PyPy,
  EU-funding and Agile Practices talk, by Bea During at
  Agile 2006 (experience report).

*  `Sprint Driven Development`_, Agile Methodologies in a
   Distributed Open Source Project (PyPy) talk, by Bea During
   at XP 2006 (experience report).

* `Kill -1`_: process refactoring in the PyPy project talk, by Bea During
  at the Agile track/Europython 2006.

* `What can PyPy do for you`_, by Armin Rigo and Carl Friedrich Bolz given at
  EuroPython 2006. The talk describes practical usecases of PyPy.

* `PyPy 3000`_, a purely implementation-centered lightning talk at EuroPython
  2006, given by Armin Rigo and Holger Krekel.

* `PyPy introduction at EuroPython 2006`_, given by Michael Hudson, also
  stating the status of the project.

* Very similar to the EuroPython intro talk (but somewhat older) is the
  `PyPy intro`_ talk, given by Michael Hudson at ACCU 2006 (April)

* `PyPy development method`_ talk, given by Bea During and
  Holger Krekel at Pycon2006


Talks in 2005
~~~~~~~~~~~~~

* `PyPy - the new Python implementation on the block`_,
  given by Carl Friedrich Bolz and Holger Krekel at the
  22nd Chaos Communication Conference in Berlin, Dec. 2005.

* `Open Source, EU-Funding and Agile Methods`_, given by Holger Krekel
  and Bea During at the 22nd Chaos Communication Conference in Berlin, Dec. 2005

* `Sprinting the PyPy way`_, an overview about our sprint methodology, given by
  Bea During during EuroPython 2005. (More PyPy talks were given, but are
  not present in detail.)

* `PyCon 2005`_ animated slices, mostly reporting on the translator status.

* `py lib slides`_ from the py lib talk at PyCon 2005
  (py is used as a support/testing library for PyPy).


Talks in 2004
~~~~~~~~~~~~~

* `EU funding for FOSS`_ talk on Chaos Communication
  Conference in Berlin, Dec 2004.


Talks in 2003
~~~~~~~~~~~~~

* oscon2003-paper_ an early paper presented at Oscon 2003 describing
  what the PyPy project is about and why you should care.

* `Architecture introduction slides`_ a mostly up-to-date
  introduction for the Amsterdam PyPy-Sprint Dec 2003.


.. _PyCon 2010: http://morepypy.blogspot.com/2010/02/pycon-2010-report.html
.. _RuPy 2009: http://morepypy.blogspot.com/2009/11/pypy-on-rupy-2009.html
.. _PyPy 3000: https://bitbucket.org/pypy/extradoc/raw/tip/talk/ep2006/pypy3000.txt
.. _What can PyPy do for you: https://bitbucket.org/pypy/extradoc/raw/tip/talk/ep2006/usecases-slides.txt
.. _PyPy introduction at EuroPython 2006: https://bitbucket.org/pypy/extradoc/raw/tip/talk/ep2006/intro.pdf
.. _PyPy - the new Python implementation on the block: https://bitbucket.org/pypy/extradoc/raw/tip/talk/22c3/hpk-tech.txt
.. _PyPy development method: https://bitbucket.org/pypy/extradoc/raw/tip/talk/pycon2006/method_talk.txt
.. _PyPy intro: https://bitbucket.org/pypy/extradoc/raw/tip/talk/accu2006/accu-2006.pdf
.. _oscon2003-paper: https://bitbucket.org/pypy/extradoc/raw/tip/talk/oscon2003-paper.txt
.. _Architecture introduction slides: https://bitbucket.org/pypy/extradoc/raw/tip/talk/amsterdam-sprint-intro.pdf
.. _EU funding for FOSS: https://bitbucket.org/pypy/extradoc/raw/tip/talk/2004-21C3-pypy-EU-hpk.pdf
.. _py lib slides: https://bitbucket.org/pypy/extradoc/raw/tip/talk/2005-pycon-py.pdf
.. _PyCon 2005: https://bitbucket.org/pypy/extradoc/raw/tip/talk/pypy-talk-pycon2005/README.txt
.. _Trouble in Paradise: https://bitbucket.org/pypy/extradoc/raw/tip/talk/agile2006/during-oss-sprints_talk.pdf
.. _Sprint Driven Development: https://bitbucket.org/pypy/extradoc/raw/tip/talk/xp2006/during-xp2006-sprints.pdf
.. _Kill -1: https://bitbucket.org/pypy/extradoc/raw/tip/talk/ep2006/kill_1_agiletalk.pdf
.. _Open Source, EU-Funding and Agile Methods: https://bitbucket.org/pypy/extradoc/raw/tip/talk/22c3/agility.pdf
.. _PyPy Status: https://bitbucket.org/pypy/extradoc/raw/tip/talk/vancouver/
.. _Sprinting the PyPy way: https://bitbucket.org/pypy/extradoc/raw/tip/talk/ep2005/pypy_sprinttalk_ep2005bd.pdf
.. _PyPy's VM Approach: https://bitbucket.org/pypy/extradoc/raw/tip/talk/dls2006/
.. _PyPy's approach to virtual machine construction: https://bitbucket.org/pypy/extradoc/raw/tip/talk/dls2006/pypy-vm-construction.pdf
.. _EuroPython talks 2009: https://bitbucket.org/pypy/extradoc/raw/tip/talk/ep2009/
.. _PyCon talks 2009: https://bitbucket.org/pypy/extradoc/raw/tip/talk/pycon2009/
.. _Wroclaw (Poland) presentation: https://bitbucket.org/pypy/extradoc/raw/tip/talk/wroclaw2009/talk.pdf
.. _PyPy talk at OpenBossa 09: http://morepypy.blogspot.com/2009/03/pypy-talk-at-openbossa-09.html
.. _at SFI 08: https://bitbucket.org/pypy/extradoc/raw/tip/talk/sfi2008/
.. _at PyCon Poland 08: https://bitbucket.org/pypy/extradoc/raw/tip/talk/pyconpl-2008/talk.pdf
.. _The PyPy Project and You: https://bitbucket.org/pypy/extradoc/raw/tip/talk/osdc2008/osdc08.pdf
.. _EuroPython talks 2008: https://bitbucket.org/pypy/extradoc/raw/tip/talk/ep2008/
.. _Maemo summit: http://morepypy.blogspot.com/2008/09/pypypython-at-maemo-summit.html
.. _PyCon UK 2008 - JIT: https://bitbucket.org/pypy/extradoc/raw/tip/talk/pycon-uk-2008/jit/pypy-vm.pdf
.. _PyCon UK 2008 - Status: https://bitbucket.org/pypy/extradoc/raw/tip/talk/pycon-uk-2008/status/status.pdf
.. _PyCon Italy 2008: https://bitbucket.org/pypy/extradoc/raw/tip/talk/pycon-italy-2008/pypy-vm.pdf
.. _RuPy 2008: https://bitbucket.org/pypy/extradoc/raw/tip/talk/rupy2008/
.. _RuPy 2007: https://bitbucket.org/pypy/extradoc/raw/tip/talk/rupy2007/
.. _PyCon 2008: https://bitbucket.org/pypy/extradoc/raw/tip/talk/pycon2008/
.. _ESUG 2007: https://bitbucket.org/pypy/extradoc/raw/tip/talk/esug2007/
.. _Bern (Switzerland) 2007: https://bitbucket.org/pypy/extradoc/raw/tip/talk/bern2007/
.. _PyCon UK 2007: https://bitbucket.org/pypy/extradoc/raw/tip/talk/pyconuk07/
.. _Dresden: https://bitbucket.org/pypy/extradoc/raw/tip/talk/dresden/
.. _EuroPython 2007: https://bitbucket.org/pypy/extradoc/raw/tip/talk/ep2007/
.. _Bad Honnef 2007: https://bitbucket.org/pypy/extradoc/raw/tip/talk/badhonnef2007/talk.pdf
.. _Dzug talk: https://bitbucket.org/pypy/extradoc/raw/tip/talk/dzug2007/dzug2007.txt
.. _PyCon 2007: https://bitbucket.org/pypy/extradoc/raw/tip/talk/pycon2007/
.. _PyCon - Uno 2007: https://bitbucket.org/pypy/extradoc/raw/tip/talk/pycon-uno2007/pycon07.pdf
.. _Warsaw 2007: https://bitbucket.org/pypy/extradoc/raw/tip/talk/warsaw2007/
.. _Warsaw 2006: https://bitbucket.org/pypy/extradoc/raw/tip/talk/warsaw2006/
.. _Tokyo 2006: https://bitbucket.org/pypy/extradoc/raw/tip/talk/tokyo/


Related projects
----------------

* TraceMonkey_ is using a tracing JIT, similar to the tracing
  JITs generated by our (in-progress) JIT generator.

* Dynamo_ showcased `transparent dynamic optimization`_
  generating an optimized version of a binary program at runtime.

* Tailoring Dynamo_ to interpreter implementations and challenges -
  Gregory Sullivan et. al.,
  `Dynamic Native Optimization of Native Interpreters`_. IVME 03. 2003.

* Stackless_ is a recursion-free version of Python.

* Psyco_ is a just-in-time specializer for Python.

* JikesRVM_ a research dynamic optimizing Java VM written in Java.

* `Squeak`_ is a Smalltalk-80 implementation written in
  Smalltalk, being used in `Croquet`_, an experimental
  distributed multi-user/multi-programmer virtual world.

* `LLVM`_ the low level virtual machine project.

* `CLR under the hood`_ (powerpoint, works with open office) gives
  a good introduction to the underlying models of Microsoft's Common
  Language Runtime, the Intermediate Language, JIT and GC issues.

* spyweb translates Python programs to Scheme. (site unavailable)

* Jython_ is a Python implementation in Java.

* IronPython_ a new Python implementation compiling Python into
  Microsoft's Common Language Runtime (CLR) Intermediate Language (IL).

* Tunes_ is not entirely unrelated.  The web site changed a lot, but a
  snapshot of the `old Tunes Wiki`_ is available; browsing
  through it is a lot of fun.

.. _TraceMonkey: https://wiki.mozilla.org/JavaScript:TraceMonkey
.. _CLR under the hood: http://download.microsoft.com/download/2/4/d/24dfac0e-fec7-4252-91b9-fb2310603f14/CLRUnderTheHood.BradA.ppt
.. _Stackless: http://stackless.com
.. _Psyco: http://psyco.sourceforge.net
.. _Jython: http://www.jython.org
.. _Squeak: http://www.squeak.org/
.. _Croquet: http://www.opencroquet.org/
.. _transparent dynamic optimization: http://www.hpl.hp.com/techreports/1999/HPL-1999-77.pdf
.. _Dynamo: http://www.hpl.hp.com/techreports/1999/HPL-1999-78.pdf
.. _LLVM: http://llvm.org/
.. _IronPython: http://ironpython.codeplex.com/
.. _Dynamic Native Optimization of Native Interpreters: http://people.csail.mit.edu/gregs/dynamorio.html
.. _JikesRVM: http://jikesrvm.org/
.. _Tunes: http://tunes.org
.. _old Tunes Wiki: http://buildbot.pypy.org/misc/cliki.tunes.org/
