Remix.run Logo
lionkor 3 hours ago

Zig is a modern C,

Rust is a modern C++/OCaml

So if you enjoy C++, Rust is for you. If you enjoy C and wish it was more verbose and more modern, try Zig.

geon an hour ago | parent | next [-]

Comparing Rust to C++ feels strange to me.

It’s like people do it just because Zig is very comparable to C. So the more complex Rust must be like something else that is also complex, right? And C++ is complex, so…

But that is a bit nonsensical. Rust isn’t very close to C++ at all.

lionkor 7 minutes ago | parent [-]

I wrote lots of C++ before learning Rust, and I enjoyed it. Since learning Rust, I write no more C++. I found no place in which C++ is a better fit than Rust, and so it's my "new C++".

For example, high performance servers (voltlane.net), programming languages (https://github.com/HF-Foundation, https://github.com/lionkor/mcl-rs, and one private one), webservers (beampaint.com) and lots of other domains.

Rust is close to C++ in that it is a systems language that allows a reasonable level of zero-cost abstractions.

microtonal an hour ago | parent | prev | next [-]

It is kind of interesting that the Linux kernel is slowly adopting Rust, whereas Zig seems like it would be a more natural fit?

I know, timelines not matching up, etc.

nasretdinov an hour ago | parent | next [-]

Memory safety by default in kernel sounds like a good idea :). However I don't think that C is being _replaced_ by Rust code, it's rather that more independent parts that don't need to deeply integrate with the existing C constructs can be written in a memory safe language, and IMO that's a fine tradeoff

andrepd an hour ago | parent | prev | next [-]

Definitely not. Rust gives you a tangible benefit in terms of correctness. It's such a valuable benefit that it outweighs the burden of incorporating a new language in the kernel, with all that comes with it.

Zig offers no such thing. It would be a like-for-like replacement of an unsafe old language with an unsafe new one. May even be a better language, but that's not enough reason to overcome the burden.

keybored an hour ago | parent | prev [-]

And “if you enjoy C++/if you enjoy C” are gross oversimplifications.

api 41 minutes ago | parent | prev | next [-]

My take, unfortunately, is that Zig might be a more modern C but that gives us little we don’t already have.

Rust gives us memory safety by default and some awesome ML-ish type system features among other things, which are things we didn’t already have. Memory safety and almost totally automatic memory management with no runtime are big things too.

Go, meanwhile, is like a cleaner more modern Java with less baggage. You might also compare it to Python, but compiled.

bayindirh 2 hours ago | parent | prev | next [-]

Seriously asking, where Go sits in this categorization?

gf000 an hour ago | parent | next [-]

Nowhere, or wherever C# would sit. Go is a high level managed language.

andrewl-hn 2 hours ago | parent | prev | next [-]

Go is modern Java, at least based on the main area of usage: server infrastructure and backend services.

KronisLV 35 minutes ago | parent | next [-]

Tbh Go is also really nice for various local tools where you don’t want something as complex as C++ but also don’t want to depend on the full C# runtime (or large bundles when self-contained), or the same with Java.

With Wails it’s also a low friction way to build desktop software (using the heretical web tech that people often reach for, even for this use case), though there are a few GUI frameworks as well.

Either way, self contained executables that are easy to make and during development give you a rich standard library and not too hard of a language to use go a long way!

bsaul 2 hours ago | parent | prev [-]

i wonder what makes go more modern than java, in terms of features.

cultab an hour ago | parent [-]

The tooling and dependency management probably

shilgapira 2 hours ago | parent | prev [-]

It's also a modern C.

If you enjoy C and wish it was less verbose and more modern, try Go.

VorpalWay 37 minutes ago | parent | next [-]

Go has a garbage collector though. This makes it unsuitable for many use cases where you could have used C or C++ in the past. Rust and Zig don't have a GC, so they are able to fill this role.

GC is a showstopper for my day job (hard realtime industrial machine control/robotics), but would also be unwanted for other use cases where worst case latency is important, such as realtime audio/video processing, games (where you don't want stutter, remember Minecraft in Java?), servers where tail latency matters a lot, etc.

bboozzoo 3 minutes ago | parent [-]

> GC is a showstopper for my day job (hard realtime industrial machine control/robotics)

Which is a very niche use case to begin with, isn't it? It doesn't really contradict what the parent comment stated about Go feeling like modern C (with a boehm gc included if you will). We're using it this way and it feels just fine. I'd be happy to see parts of our C codebase rewritten in Go, but since that code is security sensitive and has already been through a number of security reviews there's little motivation to do so.

bayindirh 2 hours ago | parent | prev [-]

Thanks. I write some Go, and feel the same about it. I really enjoy it actually.

Maybe I'll jump to Zig as a side-gig (ha, it rhymes), but I still can't motivate myself to play with Rust. I'm happy with C++ on that regard.

Maybe gccrs will change that, IDK, yet.

7bit 36 minutes ago | parent | prev | next [-]

C++ added OOP to C.

Rust is not object-oriented.

That makes your statement wrong.

benob 2 hours ago | parent | prev [-]

Time to start zig++