RPython
Goals and Architecture Overview
High Level Goals
Architecture
Further reading
Frequently Asked Questions
What is RPython?
Can RPython compile normal Python programs to C?
What is this RPython language?
Does RPython have anything to do with Zope’s Restricted Python?
What’s the
"NOT_RPYTHON"
I see in some docstrings?
Couldn’t we simply take a Python syntax tree and turn it into Lisp?
Do I have to rewrite my programs in RPython?
Which backends are there for the RPython toolchain?
Could we use LLVM?
Compiling PyPy swaps or runs out of memory
How do I compile my own interpreters?
Can RPython modules for PyPy be translated independently?
Why does the translator draw a Mandelbrot fractal while translating?
Cross-translating for ARM
Requirements
Creating a Qemu based ARM chroot
Configuring scratchbox2
Translation
Logging environment variables
Garbage collector
PYPYLOG
PYPYSTM
RPython Language
Definition
Flow restrictions
Object restrictions
Integer Types
Exception rules
PyPy is debuggable on top of CPython
Generally Useful RPython Modules
listsort
nonconst
objectmodel
rarithmetic
rbigint
rrandom
rsocket
rstrategies
streamio
unroll
rsre
parsing
Regular Expressions
EBNF
Parse Trees
Visitors
Tree Transformations
[symbol_1 symbol_2 ... symbol_n]
<symbol>
>nonterminal_1 nonterminal_2 ... nonterminal_n<
Extensions to the EBNF grammar format
Full Example
Foreign Function Interface for RPython
Purpose
Declaring low-level external function
Types
Registering function as external
Glossary
Getting Started with RPython
Trying out the translator
Trying out the type annotator
Translating the flow graph to C code
A slightly larger example
Translating Full Programs
Sources
RPython directory cross-reference
JIT documentation
Content
Motivating JIT Compiler Generation
Motivation
Alternative approaches to improve speed
Further reading
PyJitPl5
Implementation of the JIT
More resources
Trace Optimizer
High level overview
A frequently encountered pattern
Rewrite optimization
Pure optimization
Unroll optimization
What is missing from this document
Further references
Virtualizables
Problem description
Solution
The RPython Toolchain
Overview
Building Flow Graphs
Introduction
Abstract interpretation
The Flow Model
The Annotation Pass
Mutable Values and Containers
User-defined Classes and Instances
The RPython Typer
Backend Optimizations
Function Inlining
Malloc Removal
Escape Analysis and Stack Allocation
Preparation for Source Generation
Making Exception Handling Explicit
Memory Management Details
The C Backend
A Historical Note
How It Fits Together
The RPython Typer
Overview
Example: Integer operations
The process in more details
Representations
Low-Level Types
Primitive Types
Structure Types
Array Types
Pointer Types
Function Types
Opaque Types
Implementing RPython types
HighLevelOp interface
The LLInterpreter
Garbage Collection in RPython
Introduction
Garbage collectors currently written for the GC framework
Mark and Sweep
Semispace copying collector
Generational GC
Hybrid GC
Mark & Compact GC
Minimark GC
RPython
Docs
»
Edit on Bitbucket
Index
A
|
B
|
C
|
E
|
G
|
J
|
L
|
O
|
P
|
R
|
S
|
T
A
annotator
B
backend
C
compile-time
E
external function
G
garbage collection framework
J
JIT
L
llinterpreter
lltypesystem
low-level helper
O
ootypesystem
P
prebuilt constant
promotion
R
RPython
RPython toolchain
rtyper
run-time
S
specialization
T
transformation
translation-time
translator
type inference
type system