ABSTRACT
Language composition approaches have traditionally suffered from poor performance. In this paper we hypothesise that meta-tracing provides a means to compose independent language interpreters while retaining the performance levels of each. To study this approach, we compose Python and Prolog interpreters to form Unipycation. We present a case study of its use and a suite of micro-benchmarks which give us some understanding of its cross-language performance.
- V. Bala, E. Duesterwald, and S. Banerjia. Dynamo: A transparent dynamic optimization system. SIGPLAN, 35(5):1--12, 2000. Google ScholarDigital Library
- M. Bebenita, F. Brandner, M. Fahndrich, F. Logozzo, W. Schulte, N. Tillmann, and H. Venter. SPUR: A trace-based JIT compiler for CIL. In Proc. OOPSLA, pages 708--725, 2010. Google ScholarDigital Library
- C. F. Bolz, A. Cuni, M. Fijałkowski, M. Leuschel, S. Pedroni, and A. Rigo. Allocation removal by partial evaluation in a tracing JIT. Proc. PEPM, pages 43--52, 2011. Google ScholarDigital Library
- C. F. Bolz, A. Cuni, M. Fijałkowski, M. Leuschel, S. Pedroni, and A. Rigo. Runtime feedback in a meta-tracing JIT for efficient dynamic languages. In Proc. ICOOOLPS, page 9:1--9:8, 2011. Google ScholarDigital Library
- C. F. Bolz, A. Cuni, M. Fijałkowski, and A. Rigo. Tracing the meta-level: PyPy's tracing JIT compiler. In Proc. ICOOOLPS, pages 18--25, 2009. Google ScholarDigital Library
- C. F. Bolz, M. Leuschel, and D. Schneider. Towards a Jitting VM for prolog execution. In Proc. PPDP, pages 99--108, 2010. Google ScholarDigital Library
- C. F. Bolz and L. Tratt. The impact of meta-tracing on VM design and implementation. To appear SCICO, 2013.Google Scholar
- I. Bratko. Prolog programming for artificial intelligence. Addison Wesley, 2001. Google ScholarDigital Library
- M. Bravenboer and E. Visser. Concrete syntax for objects. domain-specific language embedding and assimilation without restrictions. In Proc. OOPSLA, pages 365--383, 2004. Google ScholarDigital Library
- L. Cardelli, F. Matthes, and M. Abadi. Extensible grammars for language specialization. In Workshop on Database Programming Languages, pages 11--31, 1993. Google ScholarDigital Library
- J. Castanos, D. Edelsohn, K. Ishizaki, P. Nagpurkar, T. Nakatani, T. Ogasawara, and P. Wu. On the benefits and pitfalls of extending a statically typed language JIT compiler for dynamic scripting languages. pages 195--212, Oct. 2012.Google Scholar
- T. E. Cheatham. Motivation for extensible languages. SIGPLAN, 4(8):45--49, Aug. 1969. Google ScholarDigital Library
- E. Denti, A. Omicini, and A. Ricci. tuProlog: a light-weight prolog for internet applications and infrastructures. In Proc. PADL, volume 1990, pages 184--198. 2001. Google ScholarDigital Library
- M. D'Hondt, K. Gybels, and V. Jonckers. Seamless integration of rule-based knowledge and object-oriented functionality with linguistic symbiosis. Proc. SAC, pages 1328--1335, 2004. Google ScholarDigital Library
- L. Diekmann and L. Tratt. Parsing composed grammars with language boxes. In Workshop on Scalable Language Specifications, 2013.Google Scholar
- D. J. Edwards and T. P. Hart. The alpha-beta heuristic. Technical Report AIM-30, MIT, 1961. Google ScholarDigital Library
- A. Gal, B. Eich, M. Shaver, D. Anderson, D. Mandelin, M. R. Haghighat, B. Kaplan, G. Hoare, B. Zbarsky, J. Orendorff, J. Ruderman, E. W. Smith, R. Reitmaier, M. Bebenita, M. Chang, and M. Franz. Trace-based Just-In-Time type specialization for dynamic languages. In Proc. PLDI, pages 465--478, 2009. Google ScholarDigital Library
- A. Gal, C. W. Probst, and M. Franz. HotpathVM: an effective JIT compiler for resource-constrained devices. In Proc. VEE, pages 144--153, 2006. Google ScholarDigital Library
- K. Gybels. SOUL and Smalltalk - just married: evolution of the interaction between a logic and an object-oriented language towards symbiosis. In Proc. DP-COOL, 2003.Google Scholar
- P. Hudak. Building domain-specific embedded languages. ACM Computing Surveys, 28(4), 1996. Google ScholarDigital Library
- D. Ingalls, T. Kaehler, J. Maloney, S. Wallace, and A. Kay. Back to the future: the story of Squeak, a practical Smalltalk written in itself. In Proc. OOPSLA, pages 318--326, 1997. Google ScholarDigital Library
- E. T. Irons. Experience with an extensible language. Communications of the ACM, 13(1):31--40, 1970. Google ScholarDigital Library
- K. Ishizaki, T. Ogasawara, J. Castanos, P. Nagpurkar, D. Edelsohn, and T. Nakatani. Adding dynamically-typed language support to a statically-typed language compiler: Performance evaluation, analysis, and tradeoffs. In VEE, pages 169--180. ACM, 2012. Google ScholarDigital Library
- G. F. Johnson and C. N. Fischer. A meta-language and system for nonlocal incremental attribute evaluation in language-based editors. In Proc. POPL, pages 141--151, 1985. Google ScholarDigital Library
- R. A. Kelsey and J. A. Rees. A tractable Scheme implementation. Lisp Symb. Comput., 7(4):315--335, 1994. Google ScholarDigital Library
- A. Rigo and S. Pedroni. PyPy's approach to virtual machine construction. In Proc. DLS, pages 944--953, 2006. Google ScholarDigital Library
- G. L. Steele, Jr. Growing a language. HOSC, 12(3):221--236, 1999. Google ScholarDigital Library
- G. T. Sullivan, D. L. Bruening, I. Baron, T. Garnett, and S. Amarasinghe. Dynamic native optimization of interpreters. In Workshop on Interpreters, Virtual Machines and Emulators, pages 50--57, 2003. Google ScholarDigital Library
- L. Tratt. Domain specific language implementation via compile-time meta-programming. TOPLAS, 30(6):1--40, 2008. Google ScholarDigital Library
- J. von Neumann. Zur Theorie der Gesellschaftsspiele. Mathematische Annalen, 100(1):295--320, 1928.Google ScholarCross Ref
- J. von Neumann. Theory of games and economic behavior. Princeton University Press, 1944.Google Scholar
- A. Yermolovich, C. Wimmer, and M. Franz. Optimization of dynamic languages using hierarchical layering of virtual machines. In Proc. DLS, pages 79--88, 2009. Google ScholarDigital Library
Index Terms
- Unipycation: a case study in cross-language tracing
Recommendations
A Surprisingly Simple Lua Compiler
SBLP '21: Proceedings of the 25th Brazilian Symposium on Programming LanguagesDynamically-typed programming languages are often implemented using interpreters, which offer several advantages in terms of portability and flexibility of the implementation. However, as a language matures and its programs get bigger, programmers may ...
Pallene: A companion language for Lua
Highlights- We present Pallene, a typed and ahead-of-time-compiled subset of Lua.
- Pallene ...
Efficient interpreter optimizations for the JVM
PPPJ '13: Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and ToolsThe Java virtual machine is a popular target for many language implementers. Due to the unusually poor performance of hosted interpreters, many programming language implementers resort to implementing a custom compiler that emits Java bytecode instead. ...
Comments