Fast dynamic languages—how did JavaScript get so fast?
A seminar on design of virtual machines for modern languages
News
- 25.02.2011: the term paper and presentation slides from Stefan Fehrenbach on garbage collection are available, for those interested; they contain an interesting survey of recent algorithms.
- 02.12.2010: deadlines announced, see below.
- 28.10.2010: the registration deadline was moved to the 9.11. – see below. Still, please register as soon as possible; if unsure, you are welcome to contact me (see my contact information).
- 26.10.2010: The kick-off meeting will start on 28.10.2010 at 2:15pm, not at 10:15 am, and will be in
Seminarraum VII, 05D01, as indicated below, to avoid collisions with the FoPra presentations.
Apologies for the late change.
PS: The update to the Course listing should be propagated tomorrow. - 21.10.2010: fixed a browser-dependent bug breaking all
links on this webpage on some browsers.
My apologies, especially for the false idea of lack of attention that this might convey – the page did work on my browser (see this discussion for the browser-dependent behavior).
Thanks Tillmann for the report!
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.
Motivation
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.
Instructors
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:- write a term paper, surveying literature relevant to one of the suggested topics, in at most 10 pages in LLNCS style;
- present your work in a 25 minutes talk plus 5 minutes discussion;
- participate in each other's discussions.
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.