Translating All C To Rust (TRACTOR) Benchmarks
The DARPA TRACTOR program is a major research effort aimed at fundamentally changing how legacy, memory-unsafe software is modernized. Its core goal is to develop scalable, automated techniques for translating large C codebases into memory-safe Rust code. Today, manual translation from C to Rust can take years and cost billions of dollars. Rather than treating translation as a one-time conversion task, TRACTOR frames it as a repeatable, measurable, and security-driven process. The program seeks not only functional correctness, but also improved safety guarantees, competitive performance, and code quality that supports long-term maintenance and evolution. In doing so, TRACTOR directly addresses the growing national security imperative to reduce dependence on memory-unsafe software.
- Goal: Objective evaluation of C to Rust translation systems.
- Structure: Incremental benchmark batteries and milestone projects.
- Cadence: New benchmark batteries every 6 months.
Lincoln Laboratory serves as the independent test and evaluation organization for the TRACTOR program. In this capacity, the Laboratory is responsible for designing, curating, and executing a rigorous evaluation framework that allows DARPA to objectively assess progress across the program. This role includes defining evaluation metrics, developing standardized benchmarks, running experiments across performers, and analyzing results to surface technical insights and limitations.
Benchmark Batteries
The benchmark is released in multiple batteries, each targeting a representative subset of the C language. New batteries introduce additional features and complexity and are released every six months.
Battery 01: Basic C features
Battery 01 establishes a baseline by exercising a deliberately constrained but representative subset of C. It focuses on pointers with clear, well-defined lifetimes, avoids dynamic allocation and untyped pointers, and allows only controlled pointer arithmetic such as array indexing or parsing command-line arguments. It includes pass-by-reference idioms that test translation to Rust’s borrowing model, conventional error handling via return codes and errno, and use of global and static program structure. Data structures are intentionally simple, allowing evaluation to focus on correctness, safety, and idiomatic Rust.
Milestone Projects
Milestone Project 0: Perlin noise library
Focuses on numerical computation, array manipulation, and arithmetic code.
Milestone Project 1: SPHINCS cryptographic library
Emphasizes low-level bit manipulation, security-critical correctness, and strict performance requirements.
Evaluation Reports
Download Round 1 Evaluation Report
Contact
For collaboration or participation, contact [email protected].