Jan 16: Robert Grimm, NYU |
Adventures in Extensibility -- Of Languages and Compilers
Robert Grimm, NYUProgramming language technologies help reduce software complexity. But they are hard to realize, since compilers are complex systems themselves. To simplify compiler construction, the xtc project explores how to make languages and their compilers more easily extensible and to thus encourage the reuse of compiler components. This talk presents the resulting toolkit, which focuses on source-to-source transformers that translate extended languages to more basic versions. The xtc toolkit includes a parser generator, a type checker generator, and a code generator generator. I illustrate xtc with examples from the Jeannie language, which extends both Java and C by nesting Java and C code within each other at the level of individual statements and expressions. By fully combining the two languages' syntax and semantics, Jeannie eliminates verbose boiler-plate code, enables static error detection across the language boundary, and simplifies dynamic resource management. xtc makes this novel language composition practical, while also demonstrating the power of language technologies for reducing software complexity.
Jan 23: Type-safe languages and OS design |
Jan 30: File systems | Special Room: CSE 403 |
Feb 6: Supporting distributed apps |
Feb 13: Applications of VMMs |
Potpourri |
For the second half of the quarter, we'll revert back to our usual one-paper-per-week mode:
Transactional memory has recently gained attention as a way to simplify programming the multicore processors that are becoming ubiquitous in the product offerings of major CPU manufacturers. This talk addresses the interaction of hardware transactional memory and the operating system.
The first part of the talk will motivate the need for transactions in the operating system, describe some challenges to implementation, and explain the benefits of making transactions aware of OS scheduling priorities. Cooperative, transactional spinlocks are a novel mechanism to allow a program (the OS) to use transactions and also do I/O. Quantitative results are presented from whole system simulation of a version of the Linux kernel modified to use hardware transactional memory.
The second part of the talk will discuss ongoing work to address what we see as the the two key problems we see facing transactional memory and transactional programming: the performance problems due to structural (not semantic) write conflicts, and the interaction of system calls with transactions.