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.”

  • crispy_kilt@feddit.de
    link
    fedilink
    arrow-up
    0
    ·
    9 months ago

    If you want a high-level, convenient Rust, it’s already there: It’s Rust with liberal use of Arc and .clone() and Box<dyn Trait> and so on. If you want things to be convenient instead of efficient, Rust already has everything you need.

      • crispy_kilt@feddit.de
        link
        fedilink
        arrow-up
        0
        ·
        9 months ago

        I guess we’re coming at this with different opinions on what is convenient. Python is extremely easy and quick to write - but then writing more code for tests than the actual program itself because the compiler catches next to nothing and still dealing with the occasional runtime error is highly inconvenient to me. I look at the “ease of use” - or painlessness if you will - of a programming language over the whole lifecycle of the program, not just initially writing it.

        Initial development is like 2% of the total effort over the whole lifecycle of a program, at most. The vast majority of time is refactoring, troubleshooting, changing, testing, building, deploying, monitoring… and so on. With Rusts strong type system, I will probably spend 30% more time developing than with an easier language like Python/Go/Kotlin, but I will save 300% of time debugging, troubleshooting, deploying. Moreover, writing code is something I enjoy, while debugging is something I’d rather avoid. Any language that enables me to spend less time teoubleshooting runtime errors and debugging edge cases is a desirable language for me.

        What would you consider a convenient language, and why?

      • philm@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        9 months ago

        What is a convenient language exactly?

        Although I think the arguments are not exactly pro-Rust (they already show complexity with something like Box<dyn Trait>).

        Sure hacking something quickly together with python is quite a bit faster/easier/less mental overhead.

        But long-term and IDE experience IMO Rust is the most convenient language (mind you I programmed in ~10-20 languages, and the whole DX is best with Rust IMO (cargo, rust-analyzer etc.)), as it forces you to write a clean architecture and the strong type system keeps it maintainable. While refactoring can feel cumbersome, I almost always had a clean and working/correct (often without tests) code afterwards (when all the compiler errors are fixed).

        That said Rust is of course not perfect, all the strong-typing, zero-cost (async is certainly not something I would recommend beginners) systems-programming features make it complex at times (and the type-system can get in the way at times, e.g. trait-object-safety, or not “simple” higher-kinded types). So when that is annoying and control over the exact memory is not that important, something like OCAML or Haskell may be better.

        • BatmanAoD@programming.devOP
          link
          fedilink
          arrow-up
          0
          ·
          9 months ago

          “Faster/easier/less mental overhead” is indeed exactly what I mean by “convenient”.

          Maintainability is very different from “convenience”, and I think we’re both in agreement that Rust makes the correct tradeoff by favoring maintainability over convenience. But that doesn’t mean that maintainability implies convenience!

          I strongly prefer to write Rust versus “convenient” languages such as Python, Ruby, and (my least favorite, but the one I use most often professionally) Go. But that doesn’t stop me from appreciating the benefits of “convenience”; and I think that there is room in the language design space for a slightly different tradeoff: something that isn’t usable everywhere Rust is (e.g. it presumably wouldn’t ever be a candidate for inclusion in the Linux kernel) but still has many of the same maintainability advantages.

          • philm@programming.dev
            link
            fedilink
            arrow-up
            0
            ·
            9 months ago

            “Faster/easier/less mental overhead” is indeed exactly what I mean by “convenient”.

            How different the conception of convenient is :P

            I think it’s super convenient to just do cargo new <project>, start hacking, have superb tooling/expressiveness/performance etc. And it works remarkably well and fast if the problem space is not self-referential etc. or a lot of mutability is in play (I’m probably faster in Rust now than in python, but that probably has to do with the amount of time I’m spending with it…). But I get your point, and I think there’s certainly better languages for certain problems (and I even started one myself some time ago, because I wanted something like Nix but with strong typing (anonymous sum/union types/sets etc. similar as typescript))

            • BatmanAoD@programming.devOP
              link
              fedilink
              arrow-up
              0
              ·
              9 months ago

              You agree with me so strongly that you started designing your own language?? Then why didn’t you lead with that, since the post was asking for neolang recommendations??