You are here: Home –> Teaching –> Virtual Machines

Fast dynamic languages—how did JavaScript get so fast?

A seminar on design of virtual machines for modern languages


Seminar content

We discuss how projects like V8 and TraceMonkey (for JavaScript), which probably run in your browser, and Unladen Swallow (for Python) speed up widespread dynamic languages.

Before that, we will briefly introduce construction of virtual machines, excluding compilation and generation of bytecode.

Many techniques we will study have been introduced in the context of Lisp and Smalltalk, and have also been applied to platforms as the JVM, the .NET platform, and in part to some implementations of functional languages, like OcaML, PLT Scheme/Racket, and even GHC, so the knowledge acquired in this seminar applies to a wide range of languages.


Developers nowadays want to use very high-level dynamic languages, like JavaScript, Python, Ruby, and require them to offer very high performance and low memory consumption. This allows applying them to performance-critical domains in which the support for abstractions helps facing the complexity of requirements; moreover, JavaScript is in many situations the only available language for client-side web programming. These languages have traditionally been implemented by slow interpreters, but modern implementations (such as the one mentioned above, but also PyPy for Python and YARV for Ruby) are changing the situation, and thus motivate renewed interest in these topics.


Important dates

date description
Thursday, 28.10.2010, 14.15 h kick-off meeting in Seminarraum VII, 05D01
Tuesday, 09.11.2010 registration deadline (through email to Paolo Giarrusso)
Thursday, 11.11.2010 first introductory lecture
Thursday, 18.11.2010 second and last introductory lecture
Friday, 17.12.2010, noon deadline for progress report (not graded)
Monday, 17.01.2010, noon deadline for the term paper (graded)
date to decide (end of January – beginning of February), 10:15am presentations (graded), in Seminarraum V
Thursday, 03.02.2010, noon final version of the paper, with corrections after comments (graded)

Contributions and grading

Main contributions expected from students: The grade is determined by an assessment of the term paper, the presentation and the discussion on other papers.

Progress report

As indicated above, I would like you to send me by email a short progress report (no more than one page), indicating the topic you chose and which papers you have already decided to present (and which ideas/section in particular you found more interesting).

Even though it is not graded, it is required to present it, so that I can check and correct if needed the direction of your work.

Therefore, it is an opportunity for you to get help for your work from your teacher.