A high performance Erlang system

Erlang is a concurrent functional programming language designed to ease the development of large-scale distributed soft real-time control applications. It has so far been quite successful in this application domain, despite the fact that its currently available implementations are emulators of virtual machines. In this paper, we improve on the performance aspects of Erlang implementations by presenting HiPE, an open-source native code compiler for Erlang. HiPE is a complete implementation of Erlang, o ers exible integration between emulated and native code, and e ciently supports features crucial for Erlang's application domain such as concurrency. As our performance evaluations show, HiPE is currently the fastest among all Erlang implementations.

[1]  David A. Gudeman,et al.  Representing Type Information in Dynamically Typed Languages , 1993 .

[2]  Robert Virding A Garbage Collector for the Concurrent Real-Time Language Erlang , 1995, IWMM.

[3]  Paul Klint,et al.  Interpretation Techniques , 1981, Softw. Pract. Exp..

[4]  James R. Bell,et al.  Threaded code , 1973, CACM.

[5]  R. K. Dybvig Three implementation models for scheme , 1987 .

[6]  Theodore P. Baker,et al.  Implementing Ada Exceptions , 1986, IEEE Software.

[7]  Bogumil Hausman Turbo Erlang: Approaching the Speed of C , 1993, ICLP-Workshops on Implementation of Logic Programming Systems.

[8]  Rafael Dueire Lins,et al.  Benchmarking implementations of functional languages with ‘Pseudoknot’, a float-intensive benchmark , 1996, Journal of Functional Programming.

[9]  Fiffi Hellstrand,et al.  AXD 301: A new generation ATM switching system , 1999, Comput. Networks.

[10]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[11]  Keith D. Cooper,et al.  Improvements to graph coloring register allocation , 1994, TOPL.

[12]  Sven-Olof Nyström,et al.  Evaluation of HiPE, an Erlang Native Code Compiler , 1999 .

[13]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[14]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[15]  Philip Wadler An angry half-dozen , 1998, SIGP.

[16]  Simon L. Peyton Jones,et al.  C--: A Portable Assembly Language that Supports Garbage Collection , 1999, PPDP.

[17]  Joe L. Armstrong The development of Erlang , 1997, ICFP '97.

[18]  R. K. Dybvig,et al.  Representing Control in the Presence of , 1996 .

[19]  Marc Feeley,et al.  Compiling Erlang to Scheme , 1998, PLILP/ALP.

[20]  P. H. Hartel The Pseudoknot Functional Benchmark , 1996 .

[21]  Simon Peyton Jones,et al.  The Implementation of Functional Programming Languages (Prentice-hall International Series in Computer Science) , 1987 .