14 comments

[ 2.9 ms ] story [ 42.1 ms ] thread
> "How Rust Won"

I love Rust, I'm a fan of writing it and I love the tooling. And I love to see it's (hopefully) getting more popular. Despite this, I'm not sure if "won" is the right word because to my very uneducated eyes there is still considerable amount of Rust not succeeding. Admittedly I don't write so much Rust (I should do more!) but when I do it always baffles me how tons of the libraries recommended online are ghost town. There are some really useful Rust libraries out there that weren't maintained for many years. It still feels like Rust ecosystem is not quite there to be called a "successful" language. Am I wrong? This is really not a criticism of Rust per se, I'm curious about the answer myself. I want to dedicate so much more time and resources on Rust, but I'm worries 5 to 10 years from now everything will be unmaintained. E.g. Haskell had a much more vibrant community before Rust came and decent amount of Haskellers moved to Rust.

I feel like Rust hasn't won yet - it needs to transition from the cool technology people because of the hype, novelty and the clout it affords them to the pragmatic boring technology people use because it's the best tool for the job.

In this stage, the unique standout features are given a lot of limelight, and people are a bit more forgiving with usability failings and library shortcomings, as that can be fixed later.

If they fail, they'll be relegated to the 'perpetually misunderstood' pile, like Haskell has.

Node/Ts has made the transition a while ago, Go's ride was a bit more bumpy (most ppl agree the language is good, but channels are a bit of an acquired taste).

I think Rust is in the process of making the jump. I think language devs and library maintainers are a bit more responsive to the borrow checker usability gripes (rather than the knee-jerk 'you just don't get it' reaction) and the ecosystem expands in both depth and breadth. Imo the question of Rust making it is more of a 'when' than 'if', but it's not there yet.

Nice! I've wanted to give a similar talk. My thesis is that Rust won on usability above all else. If you look at the semantics of Rust, it's essentially an ML style language with typeclasses and linear types. In some alternate history that's a PhD thesis by someone at Inria that exactly 4 people use. But by making the language actually usable with good errors, familiar syntax (yes, syntax matters!), and documentation, Rust got users. I don't want to get into an in depth comparison but if you look at the documentation of even the most popular functional languages, it's not even close. And they've had a head start of decades!
Couldn't agree more about the syntax. It may be "ugly" but it's just so much easier to mentally parse than ML-style syntax.
To be clear: Rust does not have linear types. Rust has affine types. An affine Goose can't destroyed more than once. However zero isn't more than one. A linear Goose must be destroyed exactly once. Austral would be an example of a language with linear types.

In C++ if we destroy this Goose twice, probably everything catches on fire, whoops.

In Rust or Austral if we attempt to destroy this Goose twice the code doesn't compile. No executable for you until you stop destroying the Goose twice.

In C++ or Rust if we forget to destroy the Goose, the Goose-destroying code never runs. Hope that wasn't important.

In Austral if we forget to destroy the Goose, the code doesn't compile. No executable for you until you ensure the Goose is destroyed.

I agree with you, but noting that "forgetting to destroy the Goose" is not done by not explicitly destroying it (in both C++ and Rust), rather by explicitly not destroying it (or other edge cases, such as `Rc` cycles).
I was wondering where I recognized your name before, before I realized you're the linebender guy.

Hello! Big fan of your UI research

I’m glad not completely off with my bet 5 years ago that Rust will get larger chunk of the market. With the spread of AI Rust feels like a good candidate among Typescript and Python giants in a an era of coding assistant tools that needs a good nudge like Rust compiler.
The most interesting slide IMO:

  The diaspora

  Mozilla laid off much of the Rust team in August 2020
    - Hacker News discussion https://news.ycombinator.com/item?id=24143819
  ~everybody landed at a big tech company
  Result: Rust knowledge well distributed around industry
  No one company dominates
    - In contrast to Java, Swift, Go, C#, Dart
  Strong sense of collaboration & common mission
    - You can really feel this at conferences
Here's an amusing anti-Rust talk: "Rust a language without poetry".[1] It's a reasonable critique, but the presentation is awful. It seems that someone took a paper and ran it through some AI program that provided text to speech and irrelevant images. Need to run it through a tool to extract the text, then discard the video.

"Every (lost) week spent refactoring to satisfy lifetime constraints..." Not wrong.

[1] https://www.youtube.com/watch?v=kLXXZddWCJU

That was amusing. It felt like those AI ads that YouTube sometimes feeds me, where a perpetual preamble promises to have a point and to get to it, which might have something to do with toe fungus or restoring virility but you’ll never know because the actual point is to lull you into a trance-like state of perfect thoughtlessness.
I once read an interview with Guido van Rossum where he was asked what the point in time was when he realized that Python took off. He said, never, it just slowly but continuously grew.

This stuck with me. I hope we can say the same thing about Rust 10, 20 or 30 years from now.

Python was my first language and that is precisely how it felt. I would be at a convention or conference and mention python and it seemed like people didn't care, had a negative opinion or just didn't use it. It was treated as something only semi-programmers did, like people whose job wasn't actually programming, business analysts or scientists.

Then one day python was suddenly top of the charts, probably post python 3 (old timers hated it but it really improved ergonomics) but not immediately so. Rather later on when they fixed the performance loss from 2->3 (which looking back as a primarily Rust coder now, was a hilarious argument that community had internally because even my worst, most quickly cobbled together rust code beats some of my best python code at the same task performance wise).