Software developers are increasingly building applications in multiple languages both to reuse existing software libraries and to leverage the languages best suited to their problems. In fact, multilingual programs are already prevalent, as essentially all programs written in Java use code written in C as well. But developing multilingual programs poses more challenges and difficulties than developing single language programs. Current programming interfaces between multiple languages tend to be tedious and unsafe; and most programming tools only support a single language. As a consequence, real-world multilingual programs are full of cross-language bugs.
This research seeks to substantially improve the correctness and development of multilingual programs. The investigators build on their prior multilingual language design (the Jeannie Java/C language), compilers (the xtc Jeannie compiler), and debuggers (the Blink Java/C debugger). Here, the investigators are designing and implementing novel approaches for validating the safety of existing multilingual interfaces and for creating safe multilingual programs. (1) The investigators are developing a framework for concisely capturing safety rules for multilingual interfaces and then automatically synthesizing the corresponding dynamic checker. (2) The investigators are exploring novel program analysis to refactor programs automatically that use unsafe multilingual interfaces into programs that use safe multilingual interfaces. If successful, the research impact will be improved correctness, efficiency, and reliability of multilingual programs.
Technical Contributions When developers build large-scale systems, they almost always compose software written in multiple languages because they need to leverage legacy code and to choose the language best suited to their problems. For instance, the same program will use Java for ease-of-programming, C to interface with the operating system, and generate queries in SQL to interact with a backend database. These programs pose significant analysis, debugging, and testing challenges because developers need to understand multiple languages and reason about their interactions. The results of our project are tools that improve the correctness and help developers of multilingual programs. Specifically, we developed the following tools and analyses. 1. We developed a framework for capturing the safety rules in foreign function interfaces (FFIs) through which different languages interact. 2. We developed technology to synthesize dynamic safety analyses from these safety rules. The resulting tool reports all dynamic violations of the rules and thus vastly improves the correctness of multilingual programs. 3. We developed practical debugging and testing tools for multilingual and concurrent programs that help developers quickly find the root cause of multilingual and concurrency errors. We demonstrated our tools on mixed Java and C programs, mixed Python and C programs, and .NET programs. We disseminated the results in scholarly publications, which are available on the following webpage: www.cs.utexas.edu/users/mckinley/papers.html We also made our tools publicly available for developers to use and so that other programming language implementation researchers may build upon them. The tools are available on the following webpage: http://cs.nyu.edu/xtc/ Broader Technical Contributions Programming language implementation underpins all computing software. The tools we developed improve correctness, composition, and debugging of large software applications that use multiple languages to solve their problems. Our work therefore has broad consequences for improving the correctness of large software applications in other disciplines, government, and businesses, since most large software systems compose languages to solve their problems. Broader Contributions to Education and the Technology Workforce Professor McKinley is the co-chair of CRA-Women (2011 to present), which seeks to improve the participation and success of under-represented minorities and women (URM+W) in computing research careers. NCWIT analysis of patents and company demographics, as well as other studies, show that a more diverse workforce leads to better technology, more sales, and higher profits. CRA-Women has developed national intervention programs with an army of volunteers to increase the numbers and success of URM+W with PhDs to increase women in technology leadership positions. This year CRA-W and the Coalition to Diversify Computing (CDC) with NSF funding established the CRA Center for Evaluation of the Research Pipeline, which evaluates intervention programs comparing them against a national sample of computing students. This center is the first of its kind in the nation and the initial results show that compared to non-participants with similar experiences, participants in carefully designed research experiences for undergraduates (REUs) and workshops for computing graduate students improve the numbers who enroll and succeed in PhD programs. Through her efforts as a speaker, organizer, leader, and fund raiser for these projects, Prof. McKinley has impacted the lives of 1,000s of women computing professionals. The education impact of this particular grant was training six graduate students (two women) in programming language technologies and thus contributing directly to the technology workforce. Two students received their PhD during this period and we anticipate the graduation of the others soon. One is now a professor at GIST, Korea and the other works for Facebook. These students have unique expertise in multilingual programming, tool building, parallel systems, and composable system design and implementation. Since these systems are hard to build and program, yet are prevalent, these students are specialized in an important domain that is likely to only increase in importance in the future.