| ▲ | Aurornis 6 hours ago |
| > I could also see it slipping into obscurity as LLMs get faster and compile times become a more and more obvious bottleneck on iteration speeds. I’ve worked on some very large Rust projects. The incremental compile times are nowhere near the same order of magnitude of a bottleneck as an LLM turn. |
|
| ▲ | insanitybit 4 hours ago | parent | next [-] |
| I use LLMs and rust and compile times are absolutely a significant area of degradation. I love rust, I think it's the best language for LLMs, but the biggest win Rust could get for agentic development is to speed up the compiler. |
| |
| ▲ | embedding-shape an hour ago | parent [-] | | Neither of you talk about what sort of machine you're sitting on. Back when I used a netbook, I'd agree with you, for developing quick off programs, the compile times are horrible. But as someone on a workstation now, compilation times are the least of my problems, and disk space is more of a concern for me. You also don't share what LLM you use, some of them reason a lot, some of them nothing, some a bit. Again, personally I use LLMs with their maximum reasoning always, trading quality for speed/waiting every single time, and even compiling the Linux kernel would be faster than most LLM responses I get nowadays, for me, on a workstation. |
|
|
| ▲ | rr808 5 hours ago | parent | prev | next [-] |
| How long does a compile take? Because this was the biggest issue for me. I dont really like Python but the ability to make some changes then run it instantly is wild for me. |
| |
| ▲ | woodruffw 5 hours ago | parent | next [-] | | You probably already know this, but I figure it bears repeating: most people should be running `cargo check` during development, not `cargo build`. The latter is only necessary when you actually need the built binary; the former is sufficient for type- and borrow-checking. (On my local machine, `cargo check` is roughly 2x faster than `cargo build`. It's still slower than hot-reloaded Python, but it's rarely my development bottleneck.) | | |
| ▲ | est31 3 hours ago | parent | next [-] | | cargo check is useful to verify the code compiles (it's extremely rare to have compilation errors that survive cargo check). But cargo build is required if you want to actually try out the code you wrote, e.g. in order to run a test that you or the LLM wrote. | | |
| ▲ | J_Shelby_J 2 hours ago | parent | next [-] | | Yeah but like, tests encode behavior… sometimes I go all day without running a test. Sometimes multiple days. I’ve been using unit tests less and debug asserts more and more now days anyways. Encoding behavior as close the relevant code as possible. And using types and type state to minimize invariants. Idk, but it seems like such a smell when my coding agent drops 10 unit tests for a 300 LoC module. It means it did a bad job of writing the code in the first place. Anyways, if the code compiles, but the behavior is wrong, a test might be useful. But so is reading the code… so I’m skeptical of rerunning tests constantly. | |
| ▲ | woodruffw 2 hours ago | parent | prev [-] | | Yeah, I mean more for the iteration half -- YMMV, but I find that I make the LLMs most productive when I have them design the typestates first, ensure they compile, and then work on tests after that (rather than stacking tests through the process). |
| |
| ▲ | pjmlp 5 hours ago | parent | prev [-] | | A non starter for anything related to graphics or UI development, which is kind of most Rust stuff are CLIs or TUIs, like being back on curses heyday, Turbo Vision and Clipper. | | |
| ▲ | woodruffw 4 hours ago | parent | next [-] | | Is it? An immense amount of the world’s graphical software is written for native graphical targets like SwiftUI, where the iteration cycle is similarly bound to build times. It’s certainly painful, but I don’t think it’s a non-starter. | | |
| ▲ | pjmlp 2 hours ago | parent [-] | | SwiftUI has an incremental compiler with interactive workflows. | | |
| ▲ | woodruffw an hour ago | parent [-] | | Rust has an incremental compiler. And TMU SwiftUI’s live preview is essentially a very rough approximation of what the actual build would produce; it’s not a suitable replacement for a real build when developing a non-trivial UI. | | |
| ▲ | pjmlp an hour ago | parent [-] | | The experiences still fails short of XCode or Playground, hence why Slint has its own scripting language. | | |
| ▲ | woodruffw 33 minutes ago | parent [-] | | Sure, I don't disagree. It's just not clear to me that developers actually index that heavily on hot reloading to begin with. |
|
|
|
| |
| ▲ | Klonoar 4 hours ago | parent | prev | next [-] | | Various Rust UI projects have been working towards hot-reloadable capabilities, based on the work from the Dioxus team. IME it's just not really that big of a deal at this point. YMMV, etc. | | |
| ▲ | pjmlp 2 hours ago | parent [-] | | I am aware, still far away from what something like C++ Builder was already offering in the 1990's, let alone other more modern alternatives. |
| |
| ▲ | slopinthebag 2 hours ago | parent | prev [-] | | My rust compiles in the time it takes to switch from my editor to my browser to see the changes incremental recompiles are fast enough imo. Dioxus has hot reloading if you want to go faster and Bevy uses it for hot reloading as well. | | |
| ▲ | pjmlp 2 hours ago | parent [-] | | With a beefy desktop, or some Apple wonder CPU, right? |
|
|
| |
| ▲ | embedding-shape an hour ago | parent | prev | next [-] | | > I dont really like Python but the ability to make some changes then run it instantly is wild for me. You'll love Clojure, gets you even closer; you can make changes while your program is running, by changing source code then applying just that function you changed, while your editor is connected to your program and can show what the new results are. | | |
| ▲ | 7734128 39 minutes ago | parent [-] | | I'm quite often working in a Jupyter notebook where the imported modules are reloaded. I can have x in memory, change method y of X and then call x.y() and get the new definition. It feels almost criminal that it works, but it's quite nice. |
| |
| ▲ | Aurornis 4 hours ago | parent | prev [-] | | Initial compilation and incremental compilation are very different. Large Rust projects are broken up into modules. If you change one module you don’t have recompile the whole project. Remember we’re talking about compensation time versus LLM turns in this thread. Even a 10 second incremental compile is orders of magnitude faster than an LLM turn. | | |
| ▲ | majormajor 3 hours ago | parent [-] | | > Remember we’re talking about compensation time versus LLM turns in this thread. Even a 10 second incremental compile is orders of magnitude faster than an LLM turn. This entirely depends on (a) what a step/prompt/turn is trying to do and (b) tooling and rate limiting and various other aspects of your model and/or access to it. If you have high rate limits and aren't using an Opus-or-larger sized model you can get a LOT of changes done in 10 seconds. And this is especially true for "oh not all the tests are passing yet, let me change..." iterations where the change attempts are often low-single-digit seconds. |
|
|
|
| ▲ | apitman 6 hours ago | parent | prev [-] |
| I don't doubt this is true for many projects currently (though it's not for a bevy project I'm working on). Have you tried Cerebras, Groq, Taalas, et al? It was a paradigm shift for me. |
| |
| ▲ | Aurornis 6 hours ago | parent [-] | | I have, but even with the high token generation speed, incremental Rust compile times were not a bottleneck. I was disagreeing with the concept that incremental compile times could be a bottleneck. LLMs are even better at doing large swaths of work at once and having it compile first or second try than a human. | | |
|