this post was submitted on 11 Jan 2024
34 points (87.0% liked)

Rust

5981 readers
102 users here now

Welcome to the Rust community! This is a place to discuss about the Rust programming language.

Wormhole

[email protected]

Credits

  • The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)

founded 1 year ago
MODERATORS
34
submitted 10 months ago* (last edited 10 months ago) by [email protected] to c/[email protected]
 

Almost five years ago, Saoirse "boats" wrote "Notes on a smaller Rust", and a year after that, revisited the idea.

The basic idea is a language that is highly inspired by Rust but doesn't have the strict constraint of being a "systems" language in the vein of C and C++; in particular, it can have a nontrivial (or "thick") runtime and doesn't need to limit itself to "zero-cost" abstractions.

What languages are being designed that fit this description? I've seen a few scripting languages written in Rust on GitHub, but none of them have been very active. I also recently learned about Hylo, which does have some ideas that I think are promising, but it seems too syntactically alien to really be a "smaller Rust."

Edit to add: I think Graydon Hoare's post about language design choices he would have preferred for Rust also sheds some light on the kind of things a hypothetical "Rust-like but not Rust" language could do differently: https://graydon2.dreamwidth.org/307291.html

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 10 points 10 months ago (3 children)

Why would you want that? What is wrong with python if you want an interpreted language with garbage collection? By contrast what is wrong with rust + a lot of crates (or C++/Ada/...) if you want a compiled language?

Zero cost abstractions are great because speed is very important for complex problems. Little things here and there make for modern computers that feel slower than my old 8 bit atari when trying to get work done.

[–] [email protected] 6 points 10 months ago (1 children)

There is a huge and valuable possibility space between python and Rust. We know this because it is already occupied by many extremely successful languages (Java, C#, Swift, etc).

The value of a language that sits between C# and Rust also seems pretty obvious at this point; a language that gives you Rust's memory management tools for optimisation, but doesn't force you to use them for all of your code.

[–] [email protected] 1 points 10 months ago (2 children)

It exists, it's called Rust with lots of Arc, .clone(), and Box<dyn Trait>. You don't have to borrow if you prefer to have a slower, easier program.

[–] [email protected] 4 points 10 months ago

I know Rust has these features, but they are intended to be features of last resort and it shows. It's not a criticism; Rust pushes people relentlessly towards safety and performance, and is extremely successful at that.

I am imagining a language more like Pony, but with less of a focus on the actor model. I could use a language like that to write a high performance game engine with no GC pausing issues, and then write very high level gameplay scripts on top of it in the same language.

You could do that in Rust, but the Rust game engine space has already made it clear that most people feel the need for a scripting language.

[–] [email protected] 1 points 10 months ago

Box

Now try to do that with a trait that isn't object-safe...

I get your point, these things make fighting with the borrow-checker a little bit less annoying, but Rust is complex. I'll happily accept that because I value high code-quality (to that point that I rather invest more time to get things right) but when that is not the goal and you want something higher-level and strongly-typed there are alternatives that work better (I'm just talking about the language itself, ecosystem alone for me is yet another pro-Rust thing)

[–] [email protected] 3 points 10 months ago* (last edited 10 months ago) (1 children)

Coming from some one who used 4 different languages (C#, C++, Python, and G'MIC), I just feel more comfortable when there's a explicit end blocks, which is why I don't like Python. Of all of those languages, only Python does not make that explicit end block which is off-putting in my opinion, and there isn't any other options with the similar role to Python.

[–] [email protected] 4 points 10 months ago

Ruby often comes up as a python alternative. There are a lot of other lesser known choices - but any of them will still be more popular (at least at first) than something you come up with and thus any of the will give more community support.

[–] [email protected] 3 points 10 months ago (1 children)

Copying what I wrote in another comment:

What I would like to see is something that shares these advantages with Go:

  • quick to build
  • easier to teach & learn than Rust
  • easier to quickly prototype with than Rust (though of course it's debatable how well Go does at this one)

...but I don't like the actual language design of Go, and I think it's possible to design a language that's more Rusty but still simpler than actual Rust.

For instance, error handling in Rust is both more ergonomic and more rigorous than in Go. That's huge! A language like Go but with sum types, Result, and the question-mark operator would be leaps and bounds nicer than Go itself.

To be clear, I don't imagine that a "smaller Rust" would replace Rust. But I also don't think we've reached optimal language design when the language I'd pick to write an OS is also the language I'd pick to write a small CLI app.

[–] [email protected] 1 points 10 months ago (1 children)

Learning a programming language is not hard. there are thousands of choices. Before you ask for another one, first please check that there isn't already one that meets your needs. Fragmentation of languages is not useful in general. It is rare to have an idea that hasn't been tried before, so find someone who already has done that idea.

[–] [email protected] 6 points 10 months ago

... I am currently asking if there is a language that fits the description. And I'm clearly not the only one interested in such a language.

I personally have not found Rust onerous to learn, especially by comparison to C++. But a lot of people do find the learning curve steep.