≡ Menu

I Was Judging Rust Unfairly.

Mea culpa: I was judging Rust largely based on some aspects of its tooling – one aspect in particular – and I was wrong, wrong, wrong, blaming the toolset instead of the environment, mostly because I wasn’t using enough of the environment to notice something about it.

I, uh, don’t care for Scala, for a few different reasons – mostly the toxicity of its ecosystem, the people who use it, who seem to take pride in being cantankerous curmudgeons with a flair for pointless dissent and discouragement. But one of the other reasons is that developing in Scala is slow. SBT – the preferred compilation tool – is a huge speed bump in Scala development.

(I actually like the base Scala language. It’s just everything else about Scala that makes it unpleasant.)

I saw Rust in some similar ways: not the ecosystem, mind: all the Rust programmers I know are great! Their worst attributes tend to be that they’re proud of being Rust programmers, especially if they’re good at it (and they are!) – but honestly, that pride’s probably deserved. I understand the borrow checker conceptually, sort of, I hope… but do I really understand it? I’m gonna say no.

But developing in Rust… the language is nice (like Scala!) and the developer ecosystem is great (unlike Scala!), but the compiler was … well… let’s just say I was having SBT-like “Sure, why don’t we hit the brakes hard” flashbacks.

Every time I hit cargo-update to keep some really nice tooling updated (dust, eza, bat, topgrade), I expected a seven-minute coffee break, if one of those packages needed to be recompiled.

It isn’t a pleasant user experience.

But then I wrote something that I wanted to run on that server. Locally, it finishes a complete initialization in under ten seconds, which is okay (it’s doing negotiation with a few other servers; the application’s initialization itself is under three seconds.) On my remote host – the one on which I judged Rust – it took three minutes.

What.

I mean, okay, my work desktop is pretty high end these days – not top-of-the-line killer material, but it’s recent and it’s able to hold its own against anything out there, I think. But that kind of differential is nuts.

So I tried building on the VPS. This is a Maven project; I compile it with mvnd locally, and a full mvnd clean package cycle (i.e., full test, full deploy) takes twelve seconds. On my VPS… it took eight minutes and 32 seconds.

What.

So, uh, I created a new remote server instance, on a dedicated server. It’s on a processor that’s few years old, certainly nowhere near cutting edge; no GPU. Decent RAM, I suppose. But on that machine, it’s 34 seconds – which is still three times as much as my development machine, but it’s tolerable. (The application is in Java anyway: I can compile it locally and run it remotely, the OS doesn’t matter for the executable.)

And Rust? I installed a set of packages in one fell swoop (cargo install du-dust eza bat topgrade) in far less time than my current VPS could update one of those packages.

Rust, I judged you unfairly. I’m sorry.

{ 0 comments… add one }

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.