Dhrystone benchmark: rationale for version 2 and measurement rules
ACM SIGPLAN Notices
Garbage collection in an uncooperative environment
Software—Practice & Experience
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Back to the future: the story of Squeak, a practical Smalltalk written in itself
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Precise Constraint-Based Type Inference for Java
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
Oil and Water? High Performance Garbage Collection in Java with MMTk
Proceedings of the 26th International Conference on Software Engineering
IBM Systems Journal
Representation-based just-in-time specialization and the psyco prototype for python
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Constructing a metacircular Virtual machine in an exploratory programming environment
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Hardware tansactional memory support for lightweight dynamic language evolution
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
RPython: a step towards reconciling dynamically and statically typed OO languages
Proceedings of the 2007 symposium on Dynamic languages
Concurrency, Graphs and Models
Back to the Future in One Week -- Implementing a Smalltalk VM in PyPy
Self-Sustaining Systems
Composing new abstractions from object fragments
Proceedings of the 2nd Workshop on Virtual Machines and Intermediate Languages for emerging modularization mechanisms
Demystifying magic: high-level low-level programming
Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Tracing the meta-level: PyPy's tracing JIT compiler
Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems
Faster than C#: efficient implementation of dynamic languages on .NET
Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems
Safe reflection through polymorphism
Proceedings of the first international workshop on Context-aware software technology and applications
Challenging VMs on battery-powered embedded devices
Proceedings of the Third Workshop on Virtual Machines and Intermediate Languages
Compiling Python to a hybrid execution environment
Proceedings of the 3rd Workshop on General-Purpose Computation on Graphics Processing Units
Evaluation of a just-in-time compiler retrofitted for PHP
Proceedings of the 6th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Towards description and optimization of abstract machines in an extension of prolog
LOPSTR'06 Proceedings of the 16th international conference on Logic-based program synthesis and transformation
The SOM family: virtual machines for teaching and research
Proceedings of the fifteenth annual conference on Innovation and technology in computer science education
Towards a jitting VM for prolog execution
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
SPUR: a trace-based JIT compiler for CIL
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Allocation removal by partial evaluation in a tracing JIT
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Adding concurrency in python using a commercial processor's hardware transactional memory support
ACM SIGARCH Computer Architecture News
Proceedings of the 2011 ACM Symposium on Applied Computing
Typed self-interpretation by pattern matching
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Bootstrapping a self-hosted research virtual machine for JavaScript: an experience report
Proceedings of the 7th symposium on Dynamic languages
Runtime feedback in a meta-tracing JIT for efficient dynamic languages
Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
Towards just-in-time partial evaluation of prolog
LOPSTR'09 Proceedings of the 19th international conference on Logic-Based Program Synthesis and Transformation
Unpicking the knot: teasing apart VM/application interdependencies
VEE '12 Proceedings of the 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments
Proceedings of the 2012 workshop on Modularity in Systems Software
Fine-grained modularity and reuse of virtual machine components
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
RATA: rapid atomic type analysis by abstract interpretation – application to javascript optimization
CC'10/ETAPS'10 Proceedings of the 19th joint European conference on Theory and Practice of Software, international conference on Compiler Construction
Constructing customized interpreters from reusable evaluators using GAME
SC'12 Proceedings of the 11th international conference on Software Composition
Loop-aware optimizations in PyPy's tracing JIT
Proceedings of the 8th symposium on Dynamic languages
Self-optimizing AST interpreters
Proceedings of the 8th symposium on Dynamic languages
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Truffle: a self-optimizing runtime system
Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity
Maxine: An approachable virtual machine for, and in, java
ACM Transactions on Architecture and Code Optimization (TACO) - Special Issue on High-Performance Embedded Architectures and Compilers
The efficient handling of guards in the design of RPython's tracing JIT
Proceedings of the sixth ACM workshop on Virtual machines and intermediate languages
Bypassing portability pitfalls of high-level low-level programming
Proceedings of the sixth ACM workshop on Virtual machines and intermediate languages
Challenges for a trace-based just-in-time compiler for haskell
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
Storage strategies for collections in dynamically typed languages
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Proceedings of the 2013 ACM international symposium on New ideas, new paradigms, and reflections on programming & software
Unipycation: a case study in cross-language tracing
Proceedings of the 7th ACM workshop on Virtual machines and intermediate languages
Optimizing R VM: Allocation Removal and Path Length Reduction via Interpreter-level Specialization
Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization
Hi-index | 0.00 |
The PyPy project seeks to prove both on a research and a practical level the feasibility of constructing a virtual machine (VM) for a dynamic language in a dynamic language - in this case, Python. The aim is to translate (i.e. compile) the VM to arbitrary target environments, ranging in level from C/Posix to Smalltalk/Squeak via Java and CLI/.NET, while still being of reasonable efficiency within these environments.A key tool to achieve this goal is the systematic reuse of the Python language as a system programming language at various levels of our architecture and translation process. For each level, we design a corresponding type system and apply a generic type inference engine - for example, the garbage collector is written in a style that manipulates simulated pointer and address objects, and when translated to C these operations become C-level pointer and address instructions.