You are here

Securing Antiquated Languages via program Synthesis and human Assistance (SALSA)

Award Information
Agency: Department of Defense
Branch: Defense Advanced Research Projects Agency
Contract: HR001123C0063
Agency Tracking Number: D2-2745
Amount: $1,499,979.00
Phase: Phase II
Program: SBIR
Solicitation Topic Code: HR001121S0007-10
Solicitation Number: HR001121S0007.I
Solicitation Year: 2021
Award Year: 2023
Award Start Date (Proposal Award Date): 2023-03-01
Award End Date (Contract End Date): 2026-03-01
Small Business Information
LOS ANGELES, CA 90025-7140
United States
DUNS: 788118631
HUBZone Owned: No
Woman Owned: No
Socially and Economically Disadvantaged: No
Principal Investigator
 Samuel Dittmer
 (317) 850-2515
Business Contact
 Steve Lu
Phone: (310) 710-9136
Research Institution

We will continue to develop our Phase I translation software for converting legacy C code into Go, building mature software that is practicable and theoretically sound. To demonstrate the maturity of our translation software, we will translate the COBOL compiler GnuCOBOL from C to Go. At a very high level, our Phase II efforts will consist of technical improvements to our lifting tools for program synthesis, along with a new suite of tools for making the translation process more efficient, more robust, and less reliant on user input. Our Phase I efforts were organized around a synthesis engine coded in Rosette, which enables Rosette to view Go code as being punctured periodically with holes, where the holes refer to various patterns of unsafe behavior produced by a baseline “naive” translation from C to Go. The Rosette synthesis engine then uses an SMT solver to fill those holes, replacing the pattern of unsafe behavior with a pattern of safe behavior. Additionally, in Phase I we built a Go utilities library that managed the parsing and translation of Go code into abstract syntax trees into S-expressions and back, to bridge between the raw C code and the finished Go code. Our Phase II efforts will consist of continuing the development of our Phase I synthesis engine, along with improving the automation of the code to reduce the need for human-in-the-loop elements, and improving the verifiability of the translation by automatically generating a large family of test cases. For the Phase I synthesis engine, the areas where our Phase I translation software needs to be especially improved are in handling heap-allocated data and in parsing side-effecting functions. One interesting technical challenge to translating GnuCOBOL from C to Go is that significant portions of GnuCOBOL are written in Yacc (Yet another compiler-compiler), a parser generator. Lifting Yacc to Go will require new tools for identifying ambiguous grammars and lifting Yacc parsers to Go parsers. However, once complete, the translation will serve both as a demonstration of our SALSA translation tools, and as a platform that could lead to future work on translating COBOL.

* Information listed above is at the time of submission. *

US Flag An Official Website of the United States Government