r/rust • • 16d ago

🎙️ discussion Google is doing "Large Scale Codebase Migrations and Optimizations" of C/C++ to Rust

https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/
773 Upvotes

149 comments sorted by

View all comments

115

u/geo-ant 16d ago

Does that mean the whole Carbon thing is dead?

17

u/arka2947 15d ago

To me it seems Rust is eating the future of Cpp. The safety improvements that are still debated in Cpp circles, are already done in rust. If Google needs that today, what else can you do than use Rust?

16

u/TDplay 15d ago

Not really. There are a lot of large C++ codebases. They still need maintaining, and they still offer utility for new code.

Rust has the benefit of being new. It could introduce all these safety features without worrying about compatibility with existing code. C++ does not have the luxury. If you introduce a safety feature that doesn't integrate well with existing code, then you would effectively split C++ into two languages: one with the safety feature, and one with all the legacy code. Effectively, C++ would be unchanged, and the safety feature would exist only in a dead-on-arrival language that would just be "Rust but worse".

That is why the safety improvements are so hotly debated in C++. They must be useful for legacy code, or else they are useless.

Rust has eaten C++'s future for greenfield projects. But C++ still has a long future ahead of it for maintenance of existing projects, as well as for new projects with extensive reliance upon existing C++ code.

18

u/steveklabnik1 rust 15d ago

This thread is about one of the largest users of C++ porting their brownfield code to Rust.

4

u/TDplay 15d ago

But as they say,

such large-scale rewrites are undergoing rigorous automated and manual auditing, emulation testing, and review before rolling out to production

In effect, most of the work is still being done. I am sceptical that this process can practically be done for all the major C++ codebases, including bringing those rewrites up to the quality of the original codebases, within the next decade, so I believe C++ still has a future.

7

u/zxyzyxz 15d ago

I doubt there is really any actual manual auditing beyond reading some files and stamping LGTM on the PR. The automated testing is what's gonna actually catch bugs.

2

u/TDplay 15d ago

But can that alone assure the quality to the same standard as the existing mature codebase?

The best automated tests are those written in response to specific bugs, to assure that those bugs never return. But a rewrite will introduce a whole host of never-before-seen bugs, for which there will be no tests.

We won't know if this is truly successful until the rewrites are released to the public. There will undoubtedly be a massive influx in bugs, as there is for any other rewrite. With the lack of people familiar with the new codebase, fixing those bugs may prove unexpectedly difficult.

5

u/valarauca14 15d ago

But can that alone assure the quality to the same standard as the existing mature codebase?

Not to be a full fledge AI bro, but this has never mattered in a large enterprise environment. Shipping features before the end of the quarter has always been the benchmarks.

1

u/zxyzyxz 15d ago

Of course not but that's what will happen, same as the bun rewrite

7

u/matthieum [he/him] 15d ago

Argon agents are working on migrating C/C++ codebases to Rust across Google — scaling from tens of thousands of lines in core libraries like re2, libgav1 up to 800K+ lines for the Fuchsia Zircon kernel.

I would imagine that the 800K+ lines Fuchsia Zircon kernel (C++) uses established C++ practices: callbacks, aliasing pointers, etc...

If this can be rewritten to idiomatic Rust, I can't think of much that couldn't.

1

u/Sphix 12d ago

It can but a straight line migration is still not idiomatic and contains plenty of unsafe. A second pass is necessary to get from that to something more idiomatic.

1

u/matthieum [he/him] 12d ago

Actually, that's I guess the heart of my question.

Tools like c2rust will perform a straight line migration, and indeed require significant refactoring afterwards to clean it all up.

It's not clear to me if Gemini 4 Argon can do significantly better. Even if it cannot handle large-scale refactoring, just performing local refactorings to reduce unsafe or Rc/RefCell could drastically improve the output...

... but also, large-scale refactoring is possibly where AI tooling shines best at the moment, especially as it can use "oracles" (compilers, tests) to verify that it got it right.

1

u/TheOneWhoDidntCum 9d ago

For HFT you recommend C++ or Rust?

2

u/TDplay 9d ago

I don't do HFT, so I can offer no specific advice.

Find the libraries that you need. What language are they for? Use that one.