Rust?

Another wild idea appears: could I use the Rust language to program Pokitto? At this moment let’s just talk hypothetically.

I don’t know Rust, but I’d hope this would be a way for me to learn it, and a byproduct would be a small game :slight_smile:

It seems like Rust supports our platform? So I suppose I should just compile my Rust program into object code, and then simply link it to the PokittoLib, is that right? I don’t have experience with this and don’t know how difficult a task I am talking about. Does the compiler have to know some specifics of the hardware platform, or is it enough to just tell it “compile me this for ARM”?

Transcompiling to C++ wouldn’t be a too good idea, would it?

(Or is there any other interesting language we could experiment with? It seems like gcc supports Go.)

EDIT:

useful link? Seems like I need to know some additional things like flash and RAM adresses… guess I can find it in the datasheets.

I have heard good things about Rust from some of the top coders in our company. They say that it has good support for concurrency and many program faults are detected at compile time. I suspect Rust might be more beneficial for big projects, but I am not familiar with Rust myself.

1 Like

I have heard only good things as well. It has been voted the most loved language at SO, and some people I trust in their tastes tell me it’s really good. That’s why I’d like to learn in. But I can’t really learn something from the books, I need a project. So here I am :slight_smile:

On the other hand I’ve heard some negative comments on Go, for example that it lacks generics (should be getting them soon though I think).

I’ve given it a quick try and got stuck on being unable to install some package. However I also came across an article that sums up Go and compares it with Rust. It looks like it could be nice to be supported on Pokitto – apparently it aims to be simple and is very easy to learn (like Python, better than C/C++ for programming newcomers), but also has good performance and safety (compiled, statically typed, like C/C++). C++ is still the most powerful thing, Go would just seem to be a middle step between Python and C++. So next I am likely going look into Go.

Just a heads up, I’ve heard some bad things about Go. Also I believe it’s garbage collected,
so it would be in the same class as Python and Lua rather than C++ and Rust.

I’ve heard good things about D, and Andrei Alexandrescu was involved in the design.
It normally has a GC, but aparently there’s a way to avoid it.

To be honest though, I suspect most of these modern languages are designed to target modern x64 systems with GBs of RAM, so I suspect they’ll either be hard to port or require more memory than there is available.

I think it would be better to look at languages designed for small systems,
like Pawn, which has a block editor (and I believe @jonne mentioned having used it once) ,
or Squirrel, which is dynamic but designed to be lightweight (and was used in Left 4 Dead 2 and Portal 2).

Or perhaps, look at some of the old languages like BASIC and Pascal,
since they were designed for lower spec hardware, and then perhaps just tweak them a bit.

2 Likes

I’ve heard the criticism as well and the lack of features is actually what I liked, provided it would be used as an entry language. It’s not good for the heavylifting of course.

Anyway I haven’t found a crosscompiler – there is a gcc frontend (gccgo) and given there is an arm-none-eabi backend I’m currently using with gcc I supposed I could automatically just switch the frontend and happily start compiling it. But there’s no gccgo-arm-none-eabi package or binary anywhere. Maybe I could compile it myself but that’s already a more difficult setup that would put a lot of people off. So putting this aside now. I could get back to it later.

I’ll take more look into transpiling, which could support multiple languages (possibly also esolangs :smile:) , and could be nicely integrated into my Makefile.