To accelerate the transition to memory safe programming languages, the US Defense Advanced Research Projects Agency (DARPA) is driving the development of TRACTOR, a programmatic code conversion vehicle.

The term stands for TRanslating All C TO Rust. It’s a DARPA project that aims to develop machine-learning tools that can automate the conversion of legacy C code into Rust.

The reason to do so is memory safety. Memory safety bugs, such buffer overflows, account for the majority of major vulnerabilities in large codebases. And DARPA’s hope is that AI models can help with the programming language translation, in order to make software more secure.

“You can go to any of the LLM websites, start chatting with one of the AI chatbots, and all you need to say is ‘here’s some C code, please translate it to safe idiomatic Rust code,’ cut, paste, and something comes out, and it’s often very good, but not always,” said Dan Wallach, DARPA program manager for TRACTOR, in a statement.

104 points
*

“You can go to any of the LLM websites, start chatting with one of the AI chatbots, and all you need to say is ‘here’s some C code, please translate it to safe idiomatic Rust code,’ cut, paste, and something comes out, and it’s often very good, but not always,” said Dan Wallach, DARPA program manager for TRACTOR, in a statement.

“This parlor trick impressed me. I’m sure it can scale to solve difficult real world problems.”

It’s a promising approach worth trying, but I won’t be holding my breath.

If DARPA really wanted safer languages, they could be pushing test coverage, not blindly converting stable well tested C code into untested Rust code.

This, like most AI speculation, reeks of looking for shortcuts instead of doing the boring job at hand.

permalink
report
reply
69 points

It reeks of a consultant who sold upper management via a gated demo.

permalink
report
parent
reply
12 points

You would also port the tests, right?

permalink
report
parent
reply
7 points
*

You would also port the tests, right?

Right… If they exist.

But that bit shouldn’t be left to a hallucination prone AI.

permalink
report
parent
reply
6 points
*

You have tests?

Edit: guess could always use AI to auto generate tests /s

permalink
report
parent
reply
3 points

I mean the parent comment mentioned tests…

permalink
report
parent
reply
11 points

Also:

As to the possibility of automatic code conversion, Morales said, “It’s definitely a DARPA-hard problem.” The number of edge cases that come up when trying to formulate rules for converting statements in different languages is daunting, he said.

permalink
report
parent
reply
10 points

I’m thinking they also want to future proof this.

The quantity of C devs are dying. It’s a really difficult language to get competent with.

permalink
report
parent
reply
3 points

That’s a really valid point.

permalink
report
parent
reply
0 points

A really unfortunate one too.

permalink
report
parent
reply
6 points

If DARPA really wanted safer languages, they could be pushing test coverage,

Or Ada…

permalink
report
parent
reply
2 points

Ada is not strictly safer. It’s not memory safe for example, unless you never free. The advantage it has is mature support for formal verification. But there’s literally no way you’re going to be able to automatically convert C to Ada + formal properties.

In any case Rust has about a gazillion in-progress attempts at adding various kinds of formal verification support. Kani, Prusti, Cruesot, Verus, etc. etc. It probably won’t be long before it’s better than Ada.

Also if your code is Ada then you only have access to the tiny Ada ecosystem, which is probably fine in some domains (e.g. embedded) but not in general.

permalink
report
parent
reply
1 point

A: “We really need this super-important and highly-technical job done.”
B: “We could just hire a bunch of highly-technical people to do it.”
A: “No, we would have to hire people and that would cost us millions.”
B: “We could spend billions on untested technology and hope for the best.”
A: “Excellent work B! Charge the government $100M for our excellent idea.”

permalink
report
parent
reply
64 points

turning C code automatically into Rust…

Oh wow they must have some sick transpiler, super exciting…

With AI, of course

God fucking damnit.

permalink
report
reply
6 points

You want Skynet? 'Cause that’s how you get Skynet.

permalink
report
parent
reply
2 points

Maybe, but it’s gonna be more like SkyNet with electrolytes; it’s what terminators crave.

permalink
report
parent
reply
46 points
*

Code works in C

Want to make it safer

Put it into a fucking LLM

You know sometimes I wonder if I’m an idiot or that maybe I just don’t have the right family connections to get a super high paying job

permalink
report
reply
4 points
*

Too bad commenters are as bad as reading articles as LLMs are at handling complex scenarios. And are equally as confident with their comments.

This is a pretty level headed, calculated, approach DARPA is taking (as expected from DARPA).

permalink
report
parent
reply
44 points

permalink
report
reply
2 points

On a bit serious note, flux.1 model is pretty good…

permalink
report
parent
reply
32 points

Key detail in the actual memo is that they’re not using just an LLM. “Wallach anticipates proposals that include novel combinations of software analysis, such as static and dynamic analysis, and large language models.”

They also are clearly aware of scope limitations. They explicitly call out some software, like entire kernels or pointer arithmetic heavy code, as being out of scope. They also seem to not anticipate 100% automation.

So with context, they seem open to any solutions to “how can we convert legacy C to Rust.” Obviously LLMs and machine learning are attractive avenues of investigation, current models are demonstrably able to write some valid Rust and transliterate some code. I use them, they work more often than not for simpler tasks.

TL;DR: they want to accelerate converting C to Rust. LLMs and machine learning are some techniques they’re investigating as components.

permalink
report
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3K

    Monthly active users

  • 858

    Posts

  • 7.4K

    Comments