Welcome to the 1st Truffle/Graal Languages Workshop

In recent years we have observed a change in the way people think about implementing programming languages. In the past, an implementation of a given language was monolithic, with all the components, such as the runtime, compiler or memory management subsystem, developed from scratch. With the appearance of Java, developers of other languages started targeting its bytecode format in order to re-use high-performance services provided by Java virtual machines. Evolution of these ideas has resulted in the creation of a specialized open-source Java-based language implementation toolkit, consisting of the Graal optimizing compiler and Graal’s multi-language framework, Truffle. The toolkit facilitates the creation of high-performance language implementations using partial evaluation of self-specializing interpreters and attempts to rectify some of the limitations of previous approaches. In particular, it circumvents possible mismatches between “guest” language semantics and “host” bytecodes. It is rapidly gaining popularity in both industry and academia as a foundation for guest languages (e.g., JavaScript, Ruby, Python, R and others).

The goal of this full day workshop is to attract programming language developers interested in using Truffle and Graal for creating programming language implementations and tools, as well as, more broadly, developers interested in discussing language implementation approaches heavily relying on dynamic profiling feedback and specialization. The workshop is meant to be a forum where language developers can learn about Truffle and Graal, share their experience using the toolkit, identify potential limitations and discuss methods of rectifying them, as well as propose future directions for the development of Truffle languages tooling support and of the toolkit itself. We are especially interested in attracting participation of language developers that are not yet familiar with Truffle or Graal but are interested in exploring how they can simplify development of their own current or future projects.

The workshop will be divided into two segments. The morning segment will consist of a number of short talks and discussions led by experienced language developers, and is aimed at introducing Truffle and Graal as well as sharing experience implementing Truffle languages. The afternoon segment is aimed at providing support for developers planning to jump-start their own projects using Truffle or contributing to one of the existing Truffle-based implementations, as well as discussing how the Truffle platform can be used for programming language research. This segment will start with a hands-on tutorial, and experienced Truffle language developers as well as members of the Truffle/Graal core team will also be available for individual/group mentoring and/or coding sessions.