Sorry, you need to enable JavaScript to visit this website.

Languages and Tools

Languages and Tools


The Languages and Tools area studies language design and implementation together with architecture and use of software development tools.


Selected Research Projects

A research effort, joint with the University of Chicago, to design and implement a heterogeneous parallel functional programming language that targets commodity multicore and shared-memory multiprocessors. Our previous results have included novel implicitly-parallel constructs; nested schedulers with composable cancellation; lazy-tree splitting; data-only flattening; GC for multicore NUMA; partial aborts for software transactional memory. Our ongoing work is to extend the language and implementation to declarative mutable state.

An open-source whole-program optimizing compiler for Standard ML that is actively used in industry and academia.  Our ongoing work is to explore whole-program compilation of next-generation language features.

Type- and Control-Flow Analysis
A novel program analysis that yields both control-flow (information about first-class functions) and type-flow (information about polymorphic types).  Our previous results have demonstrated the mutual benefit and decidability of the two flows and developed an efficient computation of the type- and control-flow analysis for System F.  Our ongoing work is to extend the analysis to richer type systems.