Using closures for code generation
Computer Languages
No assembly required: compiling standard ML to C
ACM Letters on Programming Languages and Systems (LOPLAS)
Storage use analysis and its applications
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Communications of the ACM
Revised Report on the Algorithmic Language Scheme
Higher-Order and Symbolic Computation
Fixing Letrec: A Faithful Yet Efficient Implementation of Scheme's Recursive Binding Construct
Higher-Order and Symbolic Computation
Trace-based just-in-time type specialization for dynamic languages
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Hop, a Fast Server for the Diffuse Web
COORDINATION '09 Proceedings of the 11th International Conference on Coordination Models and Languages
Towards reasoning for web applications: an operational semantics for Hop
APLWACA '10 Proceedings of the 2010 Workshop on Analysis and Programming Languages for Web Applications and Cloud Applications
Efficient interpretation using quickening
Proceedings of the 6th symposium on Dynamic languages
Interpreter instruction scheduling
CC'11/ETAPS'11 Proceedings of the 20th international conference on Compiler construction: part of the joint European conferences on theory and practice of software
A multi-tier semantics for Hop
Higher-Order and Symbolic Computation
Science of Computer Programming
Hi-index | 0.00 |
HOP is a Scheme-based multi-tier programming language for the Web. The client-side of a program is compiled to JavaScript, while the server-side is executed by a mix of natively compiled code and interpreted code. At the time where HOP programs were basic scripts, the performance of the server-side interpreter was not a concern; an inefficient interpreter was acceptable. As HOP expanded, HOP programs got larger and more complex. A more efficient interpreter was necessary. This new interpreter is described in this paper. It is compact, its whole implementation counting no more than 2.5 KLOC. It is more than twice faster than the old interpreter and consumes less than a third of its memory. Although it cannot compete with static or JIT native compilers, our experimental results show that it is amongst the fastest interpreters for dynamic languages.