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.
Uncertainty is a C# library that uses LINQ to let developers easily express probabilistic computations and then inference over those computations. See our recorded Research In Focus talk from the Microsoft Faculty Summit (http://research.microsoft.com/apps/video/?id=251861) this past year for more information. Uncertain<T> is on GitHub: (https://github.com/klipto/Uncertainty)
Parasail is a novel approach to parallelizing a large class of seemingly sequential applications wherein dependencies are, at runtime, treated as symbolic values. The efficiency of parallelization, then, depends on the efficiency of the symbolic computation, an active area of research in static analysis, verification, and partial evaluation. This is exciting as advances in these fields can translate to novel parallel algorithms for sequential computation.
Create 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.
- The F* Project
F* is a verification-oriented dialect of ML. For more information, please visit https://fstar-lang.org or click on the logo below.
- Yarra: An Extension to C for Data Integrity and Partial Safety
Even 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 Infrastructure
The 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 CIL
SPUR is a research prototype of a tracing just-in-time compiler (TJIT) for CIL.
- Earl T. Barr and Mark Marron, TARDIS : Affordable Time-Travel Debugging in Managed Runtimes, in OOPSLA, OOPSLA, October 2014.
- Adrian Sampson, Pavel Panchekha, Todd Mytkowicz, Kathryn S. McKinley, Dan Grossman, and Luis Ceze, Expressing and Verifying Probabilistic Assertions, in ACM Conference on Programming Languages and Implementation (PLDI), pp. 112-122, ACM – Association for Computing Machinery, June 2014.
- Todd Mytkowicz, Madanlal Musuvathi, and Wolfram Schulte, Data-Parallel Finite-State Machines, Architectural Support for Programming Languages and Operating Systems (ASPLOS), March 2014.
- James Bornholt, Todd Mytkowicz, and Kathryn S. McKinley, Uncertain<T>: A First-Order Type for Uncertain Data, in ACM International Conference on Architectural Support for Programming Languages and Systems (ASPLOS), pp. 51-66, Selected for ACM SIGPLAN Research Highlight 2014, and IEEE MICRO Top Picks 2015, ACM – Association for Computing Machinery, March 2014.
- Saeed Maleki, Madanlal Musuvathi, and Todd Mytkowicz, Parallelizing Dynamic Programming Through Rank Convergence, ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP), February 2014.
- Sebastian Burckhardt, Alexey Gotsman, Hongseok Yang, and Marek Zawirski, Replicated Data Types: Specification, Verification, Optimality, in 41st Symposium on Principles of Programming Languages (POPL), ACM SIGPLAN, 22 January 2014.
- 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.
- Bin Ren, Gagan Agrawal, James R. Larus, Todd Mytkowicz, Tomi Poutanen, and Wolfram Schulte, SIMD parallelization of applications that traverse irregular data structures, in Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), vol. 0, pp. 1-10, IEEE Computer Society, Los Alamitos, CA, USA, 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.