News
This course is no longer taught and has been replaced by a course focusing on Virtual Machines and Managed Runtimes with a somewhat broader scope.
About
What’s the fastest programming language? Can JavaScript
be faster than
C
? Is there an easy way to write a programming language that’s going
to be really fast? Do we always have to write all libraries from scratch
whenever there is a new language? Is it hard to implement a debugger?
And what about a profiler? How much work is that? Those are some of the
questions we are going to answer in this course!
To answer those questions, we are going to use GraalVM — the fastest virtual machine developed by OracleLabs in Zurich, Linz, Prague & elsewhere. Thanks to the expertise of the GraalVM team from Prague, the workshop is going to be practical, discussing latest trends in the design and development of virtual machines. There are no taboo questions — we know everything there is to know about GraalVM!
The goal of the course is to demonstrate the benefits and drawbacks of dynamic compilation, understand what the compiler is actually doing, and learn how to communicate with it (e.g., how to structure your code to get the best out of GraalVM). Should you have your own programming language — bring it with you and we’ll make it faster!
The most curious of you can also join us in our OracleLabs offices in Jinonice and spend some time coding with GraalVM during a summer internship.
Join the nswi176@d3s.mff.cuni.cz mailing-list to receive updates, resource references, and to ask questions that did not make it into the labs!
All course videos are also available in this playlist.
Schedule
Topic | Details |
---|---|
I. Towards the Fastest JVM on the Planet! (slides) |
|
II. How do Modern Compilers Work (slides) | Based on Chris’s talk and slides:
|
III. Talk 2 Compiler: Directives | Walk-thru Talk 2 Compiler demo project:
|
IV. Talk 2 Compiler: Assumptions & Caches |
|
V. Talk 2 Compiler: Nodes & Specializations |
|
VI. Memory Management |
|
VII. Graal Self |
|
VIII. JIT vs. AOT compilation |
|
IX. Interop between languages |
|
X. Tools & Instruments |
|
XI. Static Languages with LLVM |
|
XII. Writing bytecode interpreter |
|
XIII. Real Language Problems |
|
Appendix A: Contributing To Open Source |
|