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 `: 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://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/bibtex.bib .. _A Way Forward in Parallelising Dynamic Languages: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/icooolps2014/position-paper.pdf .. _Runtime Feedback in a Meta-Tracing JIT for Efficient Dynamic Languages: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/icooolps2011/jit-hints.pdf .. _Allocation Removal by Partial Evaluation in a Tracing JIT: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pepm2011/bolz-allocation-removal.pdf .. _Towards a Jitting VM for Prolog Execution: https://stups.hhu.de/mediawiki/images/a/a7/Pub-BoLeSch2010.pdf .. _High performance implementation of Python for CLI/.NET with JIT compiler generation for dynamic languages: https://buildbot.pypy.org/misc/antocuni-thesis.pdf .. _How to *not* write Virtual Machines for Dynamic Languages: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/dyla2007/dyla.pdf .. _`Tracing the Meta-Level: PyPy's Tracing JIT Compiler`: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/icooolps2009/bolz-tracing-jit.pdf .. _`Faster than C#: Efficient Implementation of Dynamic Languages on .NET`: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/icooolps2009-dotnet/cli-jit.pdf .. _Automatic JIT Compiler Generation with Runtime Partial Evaluation: https://www.researchgate.net/profile/Davide_Ancona/publication/252023163_Automatic_generation_of_JIT_compilers_for_dynamic_languages_in_NET/links/53f2098e0cf2bc0c40e70023/Automatic-generation-of-JIT-compilers-for-dynamic-languages-in-NET.pdf .. _`RPython: A Step towards Reconciling Dynamically and Statically Typed OO Languages`: https://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: https://sabi.net/nriley/pubs/dls6-riley.pdf .. _`PyGirl: Generating Whole-System VMs from High-Level Prototypes using PyPy`: https://scg.unibe.ch/archive/papers/Brun09cPyGirl.pdf .. _Representation-Based Just-in-Time Specialization and the Psyco Prototype for Python: https://psyco.sourceforge.net/psyco-pepm-a.ps.gz .. _Back to the Future in One Week -- Implementing a Smalltalk VM in PyPy: https://dx.doi.org/10.1007/978-3-540-89275-5_7 .. _Automatic generation of JIT compilers for dynamic languages in .NET: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/ecoop2009/main.pdf .. _Core Object Optimization Results: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/eu-report/D06.1_Core_Optimizations-2007-04-30.pdf .. _Compiling Dynamic Language Implementations: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/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://foss.heptapod.net/pypy/extradoc/blob/branch/default/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://foss.heptapod.net/pypy/extradoc/raw/branch/default/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://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/roadshow-ibm/ .. __: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/roadshow-google/Pypy_architecture.pdf .. __: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/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: https://morepypy.blogspot.com/2010/02/pycon-2010-report.html .. _RuPy 2009: https://morepypy.blogspot.com/2009/11/pypy-on-rupy-2009.html .. _PyPy 3000: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/ep2006/pypy3000.txt .. _What can PyPy do for you: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/ep2006/usecases-slides.txt .. _PyPy introduction at EuroPython 2006: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/ep2006/intro.pdf .. _PyPy - the new Python implementation on the block: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/22c3/hpk-tech.txt .. _PyPy development method: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pycon2006/method_talk.txt .. _PyPy intro: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/accu2006/accu-2006.pdf .. _oscon2003-paper: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/oscon2003-paper.txt .. _Architecture introduction slides: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/amsterdam-sprint-intro.pdf .. _EU funding for FOSS: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/2004-21C3-pypy-EU-hpk.pdf .. _py lib slides: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/2005-pycon-py.pdf .. _PyCon 2005: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pypy-talk-pycon2005/README.txt .. _Trouble in Paradise: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/agile2006/during-oss-sprints_talk.pdf .. _Sprint Driven Development: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/xp2006/during-xp2006-sprints.pdf .. _Kill -1: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/ep2006/kill_1_agiletalk.pdf .. _Open Source, EU-Funding and Agile Methods: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/22c3/agility.pdf .. _PyPy Status: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/vancouver/ .. _Sprinting the PyPy way: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/ep2005/pypy_sprinttalk_ep2005bd.pdf .. _PyPy's VM Approach: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/dls2006/ .. _PyPy's approach to virtual machine construction: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/dls2006/pypy-vm-construction.pdf .. _EuroPython talks 2009: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/ep2009/ .. _PyCon talks 2009: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pycon2009/ .. _Wroclaw (Poland) presentation: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/wroclaw2009/talk.pdf .. _PyPy talk at OpenBossa 09: https://morepypy.blogspot.com/2009/03/pypy-talk-at-openbossa-09.html .. _at SFI 08: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/sfi2008/ .. _at PyCon Poland 08: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pyconpl-2008/talk.pdf .. _The PyPy Project and You: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/osdc2008/osdc08.pdf .. _EuroPython talks 2008: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/ep2008/ .. _Maemo summit: https://morepypy.blogspot.com/2008/09/pypypython-at-maemo-summit.html .. _PyCon UK 2008 - JIT: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pycon-uk-2008/jit/pypy-vm.pdf .. _PyCon UK 2008 - Status: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pycon-uk-2008/status/status.pdf .. _PyCon Italy 2008: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pycon-italy-2008/pypy-vm.pdf .. _RuPy 2008: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/rupy2008/ .. _RuPy 2007: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/rupy2007/ .. _PyCon 2008: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pycon2008/ .. _ESUG 2007: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/esug2007/ .. _Bern (Switzerland) 2007: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/bern2007/ .. _PyCon UK 2007: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pyconuk07/ .. _Dresden: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/dresden/ .. _EuroPython 2007: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/ep2007/ .. _Bad Honnef 2007: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/badhonnef2007/talk.pdf .. _Dzug talk: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/dzug2007/dzug2007.txt .. _PyCon 2007: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pycon2007/ .. _PyCon - Uno 2007: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/pycon-uno2007/pycon07.pdf .. _Warsaw 2007: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/warsaw2007/ .. _Warsaw 2006: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/talk/warsaw2006/ .. _Tokyo 2006: https://foss.heptapod.net/pypy/extradoc/raw/branch/default/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: https://download.microsoft.com/download/2/4/d/24dfac0e-fec7-4252-91b9-fb2310603f14/CLRUnderTheHood.BradA.ppt .. _Stackless: https://stackless.com .. _Psyco: https://psyco.sourceforge.net .. _Jython: https://www.jython.org .. _Squeak: https://www.squeak.org/ .. _Croquet: https://www.opencroquet.org/ .. _transparent dynamic optimization: https://www.hpl.hp.com/techreports/1999/HPL-1999-77.pdf .. _Dynamo: https://www.hpl.hp.com/techreports/1999/HPL-1999-78.pdf .. _LLVM: https://llvm.org/ .. _IronPython: https://ironpython.codeplex.com/ .. _Dynamic Native Optimization of Native Interpreters: https://people.csail.mit.edu/gregs/dynamorio.html .. _JikesRVM: https://www.jikesrvm.org/ .. _Tunes: https://tunes.org .. _old Tunes Wiki: https://buildbot.pypy.org/misc/cliki.tunes.org/