extradoc / talk / dresden / talk.txt

Full commit
What is PyPy?

- multiplatform compiler toolchain

- flexible interpreter

- an open source project


Python - quick summary

- interpreted language

- very dynamic and introspective

- diversity of implementations
  (platforms, features, JIT)

- (?)complex

Our goal

- write (runnable) specification in high-level
  language (RPython)

- use python as a meta-programming language
  for RPython

- reason: C is to low level to analyze

Single source approach

- multiple backends (C, CLI, JVM coming...) [m]

- multiple interpreter (Python, Javascript, scheme...) [n]

- multiple different approaches
  (JIT, stackless, gc, threading, ...) [o]

- in summary m+n+o code, not m*n*o

Forest of flow graphs/translation

XXX interactive demo of pygame viewer

Transformation approach

- most of our optimisations/safety checks
  are done as a graph transformation

- example - stack checks

- example - gc (modeled after Jikes MMtk)

Objspace concept

- single place where operations on objects
  are performed

Taint objspace

- intercepts all operations performed on objects

.. image:: interpreterarch.png

Multiple object implementation

- variety of different implementations per
  interpreter type

- example: multidict

- example: ropes

Transparent proxies

- works as a different object implementation

- intercepts all operations on objects
  and calls app-level code

- very much like .NET transparent proxy

Custom persistance scheme

- can be implemented on top of tproxy

- using whatever storage mechanism

- with desired granularity


- replace all external calls by stream writing methods

- create a custom library to cope with that

- some demo?