Remix.run Logo
treyd 3 hours ago

> But LLMs don't care about expressiveness, they care about predictability.

I think this is true, but it misses a very key point. Go does an impressively bad job at designing APIs that are difficult to misuse, so LLMs will misuse them and will require also writing unit tests to walk through it, just to validate it used the libraries correctly. This isn't always possible (or is awkward/cumbersome) for certain scenarios like database querues.

All of the reasons people argue Go is good for LLMs are more true for Rust. You and the LLM can design libraries to be difficult to misuse, and then get instant feedback from the compiler to the LLM about what it did wrong, and often with suggestions about how it should fix them! This also makes RL deriving from compiler feedback more effective.

This allows the LLMs to reason more abstractly at larger scales, since the abstractions are less leaky (unlike in Go). The ceiling on abstraction screws you here, since troubleshooting requires more deep diving. It's the same reason Go projects become difficult for humans at large scales, too.

jimbokun 28 minutes ago | parent | next [-]

Go’s much faster compile times are a big advantage over Rust.

Thaxll 2 hours ago | parent | prev | next [-]

Go is not difficult to maintain at large scale, I mean take Kubernetes for example, it's "trivial" to understand and modified even though it's in the millions loc.

wakawaka28 2 hours ago | parent | prev | next [-]

Rust is unstable and slow to compile. I think these two features make it bad for LLMs and everything else.

maleldil 2 hours ago | parent | next [-]

Why do you say it's unstable?

auxiliarymoose 2 hours ago | parent | next [-]

Take async for example. You have to choose some third-party async runtime which may or may not work with other runtimes, libraries, platforms, etc.

With Go, async code written in Go 1.0 compiles and runs the same in Go 1.26, and there is no fragmentation or necessity to reach for third party components.

wakawaka28 4 minutes ago | parent | prev [-]

It is literally being changed constantly. They chose to add it to the Linux kernel but they have to build the features they need into the language as they go. It's not backward compatible like C and C++ either. Sure, there are a couple of versions you could try to pin to in Rust, but then all your libraries need to be pinned to the same version (to be fair, this last part is an assumption).

OoooooooO 2 hours ago | parent | prev [-]

Where is Rust unstable?

ForHackernews 3 hours ago | parent | prev [-]

Rust is harder for the bot to get "wrong" in the sense of running-but-does-the-wrong-thing, but it's far less stable than Go and LLMs frequently output Rust that straight up doesn't compile.

gizmo686 2 hours ago | parent | next [-]

LLMs outputting code that doesn't compile is the failure mode you want. Outputting wrong code that compiles is far worse.

Setting aside the problems of wrong but compiling code. Wrong and non-compiling code is also much easier to deal with. For training an LLM, you have an objective fitness function to detect compilation errors.

For using an LLM, you can embed the LLM itself in a larger system that checks it's output and either re-rolls on errors, or invokes something to fix the errors.

zozbot234 2 hours ago | parent | prev [-]

If you use the stable version of Rust, it's stable. There's a very strong commitment from the Rust folks on that specific point.

J_Shelby_J 2 hours ago | parent [-]

The only thing I see is the LLM not being aware of new features, so I have to specify the version rust.