RiSE CRX Compilers and Runtimes Working Group
The Compiler and Runtime (CRx) working group addresses problems related to performance, energy efficiency, scalability, security, and privacy via fundamental advances to compiler and runtime technology. We tackle scenarios ranging from mobile devices to datacenters, leveraging our research expertise in language translation, optimization, virtual machines, garbage collection, static analysis and runtime monitoring.
Projects
- TouchDevelopCreate apps everywhere on all your devices! For Windows Phone and the web. In the TouchDevelop programming environment you write scripts by tapping on the screen. You do not need a separate PC or keyboard. Scripts can perform various tasks similar to regular apps. Any TouchDevelop user can install, run, edit, publish scripts. You can share scripts with other people by publishing them to the TouchDevelop script bazaar, or by submitting them as an app to the Windows Store or Windows Phone Store.
- F*: A Verifying ML Compiler for Distributed ProgrammingF* is a new dependently typed language for secure distributed programming. It's designed to be enable the construction and communication of proofs of program properties and of properties of a program's environment in a verifiably secure way. F* compiles to .NET bytecode in type-preserving style, and interoperates smoothly with other .NET languages, including F#, on which it is based.
- Yarra: An Extension to C for Data Integrity and Partial SafetyEven with protections like array-bounds checking in place, C programs remain vulnerable to errors in untrusted third-party libraries. Yarra is a new extension to C that uses a combination of static and dynamic techniques to protect the integrity of critical data structures in a C program from corruption by buggy libraries. We have used Yarra to harden applications ranging from SSH, FTP, and HTTP servers to memory allocators like BGET from non-control data attacks in third party code.
- Common Compiler InfrastructureThe Common Compiler Infrastructure (CCI) is a set of libraries and an application programming interfaces (API) that supports some of the functionality that is common to compilers and related programming tools.
- SPUR: A Trace-Based JIT Compiler for CILSPUR is a research prototype of a tracing just-in-time compiler (TJIT) for CIL.
- JSMeter: Measuring JavaScript Web ApplicationsThe goal of JSMeter is to measure the runtime behavior of JavaScript programs. Our ultimate goal is to improve the quality of JavaScript engine implementations.
- Cuzz - Concurrency FuzzingCuzz is a very effective tool for finding concurrency bugs. Cuzz works on unmodified executables and is designed for maximizing concurrency coverage for your existing (unmodified) tests. It randomizes the thread schedules in a systematic and disciplined way, using an algorithm that provides probabilistic coverage guarantees.
- RobustHeap: using the heap to improve reliability and securityRobustHeap and DH (formerly DieHard) are memory allocators that include a number of features to provide tolerance or detection of memory errors related to out-of-bounds writes and use of dangling pointers.
Publications
- Sebastian Burckhardt, Manuel Fahndrich, Peli de Halleux, Jun Kato, Sean McDirmid, Michal Moskal, and Nikolai Tillmann, It's Alive! Continuous Feedback in UI Programming, in PLDI, ACM SIGPLAN, June 2013
- James Bornholt, Todd Mytkowicz, and Kathryn S. McKinley, Uncertain<T>: A First-Order Type for Uncertain Data, no. MSR-TR-2013-46, April 2013
- Benjamin Livshits, Dynamic Taint Tracking in Managed Runtimes, no. MSR-TR-2012-114, 19 November 2012
- Todd Mytkowicz and Wolfram Schulte, Waiting for Godot: The Right Language Abstractions for Parallel Programming Should be Here Soon, no. MSR-TR-2012-63, July 2012
- Sebastian Burckhardt, Manuel Fahndrich, Daan Leijen, and Benjamin P. Wood, Cloud Types for Eventual Consistency, in Proceedings of the 26th European Conference on Object-Oriented Programming (ECOOP), Springer, 15 June 2012
- Manuel Fahndrich, Michael Barnett, Daan Leijen, and Francesco Logozzo, Integrating a Set of Contract Checking Tools into Visual Studio, in Proceedings of the 2012 Second International Workshop on Developing Tools as Plug-ins (TOPI 2012), IEEE, 3 June 2012
- Ting Coa, Tiejin Gao, Stephen M. Blackburn, and Kathryn S. McKinely, The Yin and Yang of Power and Performance for Asymmetric Hardware and Managed Software, in ACM/IEEE International Symposium on Computer Architecture, June 2012
- Sebastian Burckhardt, Manuel Fahndrich, Daan Leijen, and Mooly Sagiv, Eventually Consistent Transactions, in Proceedings of the 22n European Symposium on Programming (ESOP), Springer, 24 March 2012
- Sebastian Burckhardt, Manuel Fahndrich, Daan Leijen, and Mooly Sagiv, Eventually Consistent Transactions (full version), no. MSR-TR-2011-117, October 2011
- Benjamin S. Lerner, Brian Burg, Wolfram Schulte, and H Venter, C3: An Experimental, Extensible, Reconfigurable Platform for HTML-based Applications, in 2nd USENIX Conference on Web Application Development, USENIX, 15 June 2011
