ACM Home Page
Please provide us with feedback. Feedback
Representation-based just-in-time specialization and the psyco prototype for python
Full text PdfPdf (291 KB)
Source
ACM/SIGPLAN Workshop Partial Evaluation and Semantics-Based Program Manipulation archive
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation table of contents
Verona, Italy
Pages: 15 - 26  
Year of Publication: 2004
ISBN:1-58113-835-0
Author
Armin Rigo  University of Southampton, United Kingdom
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 7,   Downloads (12 Months): 59,   Citation Count: 11
Additional Information:

abstract   references   cited by   index terms   review   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1014007.1014010
What is a DOI?

ABSTRACT

A powerful application of specialization is to remove interpretative overhead: a language can be implemented with an interpreter, whose performance is then improved by specializing it for a given program source. This approach is only moderately successful with very high level languages, where the operation of each single step can be highly dependent on run-time data and context. In the present paper, the Psyco prototype for the Python language is presented. It introduces two novel techniques. The first is just-in-time specialization, or specialization by need, which introduces the "unlifting" ability for a value to be promoted from run-time to compile-time during specialization -- the inverse of the lift operator of partial evaluation. Its presence gives an unusual and powerful perspective on the specialization process. The second technique is representations, a theory of data-oriented specialization generalizing the traditional specialization domains (i.e. the compile-time/run-time dichotomy).


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

1
2
3
 
4
5
6
7
 
8
A. Haraldsson. A program manipulation system based on partial evaluation. PhD thesis, Linköping Univ., Sweden, Linköping Studies in Science and Technology Dissertations 14, 1977.
9
10
 
11
 
12
 
13
C. Lattner. LLVM: An Infrastructure for Multi-Stage Optimization. Master's thesis, Computer Science Dept., University of Illinois at Urbana-Champaign, Urbana, IL, Dec 2002. See http://llvm.cs.uiuc.edu.
14
15
 
16
I. Piumarta. J3 for squeak. http://www-sor.inria.fr/~piumarta/squeak/unix/zip/j3-2.6.0/doc/j3/.
 
17
C. Pu, H. Massalin, and J. Ioannidis. The synthesis kernel. USENIX Association, editor, Computing Systems, 1(Winter):11--32, 1988.
 
18
A. Rigo. The ultimate psyco guide. http://psyco.sourceforge.net/psycoguide.ps.gz.
 
19
M. Salib. Starkiller: A static type inferencer and compiler for python. In Proceedings of the EuroPython conference, 2004. http://web.mit.edu/msalib/www/writings/talks/.
 
20
 
21
G. van Rossum. Python reference manual. http://docs.python.org/ref/ref.html.
22

CITED BY  11


REVIEW

"Susan M. Merritt : Reviewer"

Python is a very high-level language. As such, problem specification is very efficient, but program execution is not. Like most very high-level languages (for example, SETL), Python is interpreted. In earlier days, translation efficiency was more   more...