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

  • crispy_kilt@feddit.de
    link
    fedilink
    arrow-up
    1
    ·
    6 months ago

    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.

    • porgamrer@programming.dev
      link
      fedilink
      arrow-up
      4
      ·
      6 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.

    • philm@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      6 months ago

      Box<dyn Trait>

      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)