SLIDE 1 A quick overview of epsilon
- a functional language implementation -
Luca Saiu <positron@gnu.org> 2007-05-29
LCR LIPN - Université Paris 13
SLIDE 2
Introducing myself
Luca Saiu <positron@gnu.org> 2007-05-29
I come from Pisa... I come from Pisa... Para-virtualization Para-virtualization Networks Networks Kernel programming Kernel programming GUIs in a functional language GUIs in a functional language Now I'm working on Now I'm working on Marionnet with Jean-Vincent Loddo: with Jean-Vincent Loddo:
SLIDE 3
GNU epsilon
Luca Saiu <positron@gnu.org> 2007-05-29
Usable Usable in practice... ...and also clean and minimal ...and also clean and minimal Efficient implementation Efficient implementation Free software and part of the GNU Project A A functional functional programming language programming language Quite a long history Quite a long history Started in 2001, implemented Started in 2001, implemented three times three times
SLIDE 4
Why functional
Luca Saiu <positron@gnu.org> 2007-05-29
Very Very high-level high-level Clean semantics Clean semantics: easy to reason about : easy to reason about Safe, when statically-typed Safe, when statically-typed Challenging: efficient compilation is nontrivial An extremely interesting alternative paradigm: An extremely interesting alternative paradigm:
SLIDE 5
Why another language
Luca Saiu <positron@gnu.org> 2007-05-29
All All the existing programming languages I know of the existing programming languages I know of leave to desire in their leave to desire in their means of abstraction means of abstraction (but Lisp macros are a step in the right direction)
Every powerful language has three mechanisms Every powerful language has three mechanisms [...] [...]: : — — Abelson and Sussman, SICP Abelson and Sussman, SICP primitive expressions primitive expressions, , which represent the simplest entities the language is concerned with, which represent the simplest entities the language is concerned with, means of combination means of combination, , by which compound elements are built from simpler ones, and by which compound elements are built from simpler ones, and means of abstraction means of abstraction, , by which compound elements can be named and manipulated as units. by which compound elements can be named and manipulated as units.
SLIDE 6
Better means of abstraction
Luca Saiu <positron@gnu.org> 2007-05-29
Macros Macros Semantic Semantic constraints constraints and and attributes attributes User-definable: User-definable: Global transforms Global transforms SPS, CPS SPS, CPS pattern-matching pattern-matching type checking type checking type inference type inference ...and language “primitives” ...and language “primitives” definable in C definable in C
SLIDE 7
epsilon
Luca Saiu – 29-05-2007
epsilon is free software and part of the GNU Project (officially approved by Richard Stallman) Currently implemented in C ~60,000 lines Compilation into C code and bytecode interpretation Programming tools: epsilonlex, epsilonyacc Usable As of now: (ICFPc) “Usual” features: omega-order, first-class functions, modules...
SLIDE 8 epsilon: future directions
Luca Saiu – 29-05-2007
Compilation via source-to-source transforms... “Stratified” implementation ...into a minimal purely-functional language... ...then into very low-level abstract machine code epsilon middle language core language eAML C Scheme Bootstrapped via OCaml
assembly-like with primitives in C purely functional
first-class continuations, side effects macro expansion, constraints, attributes transforms (CPS, SPS), optimizations code generation
√ √
(Ocaml interpreter) √
SLIDE 9
For more information
Luca Saiu – 2007-05-29
positron@gnu.org http://www.gnu.org/software/epsilon saiu@lipn.univ-paris13.fr For more information... http://www-lipn.lipn.univ-paris13.fr/~saiu Thanks.