Translating All C To Rust (TRACTOR) Benchmarks

Lincoln Laboratory is leading test and evaluation on a DARPA program to translate large C codebases into memory-safe Rust code, releasing a benchmark every six months to guide program performers.
An illustration of a machine transforming "C" icons into "Rust" icons.

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.

Download Battery 01

 

Milestone Projects

Milestone Project 0: Perlin noise library

Focuses on numerical computation, array manipulation, and arithmetic code.

Download Milestone Project 0

 

Milestone Project 1: SPHINCS cryptographic library

Emphasizes low-level bit manipulation, security-critical correctness, and strict performance requirements.

Download Milestone Project 1

 

Evaluation Reports

Download Round 1 Evaluation Report

Contact

For collaboration or participation, contact [email protected].