Hacker News new | past | comments | ask | show | jobs | submit | jedisct1's comments login

The problem with Rust is that almost everything is still at an alpha stage. The vast majority of crates are at version 0.x and are eventually abandoned, replaced, or subject to constant breaking changes

While the language itself is great and stable, the ecosystem is not, and reverting to more conservative options is often the most reasonable choice, especially for long-term projects.


I really don’t think Rust is a good match for game dev. Both because of the borrow checker which requires a lot of handles instead of pointers and because compile times are just not great.

But outside of games the situation looks very different. “Almost everything” is just not at all accurate. There are tons of very stable and productive ecosystems in Rust.


Borrow checker is mostly a strawman for this discussion, the post is about using Bevy as an engine and Bevy uses an ECS than manages the lifetime of objects for you automatically. You will never have an issue with the borrow checker when using Bevy, not even once.

Everything in every ECS system is done with handles, but the parent comment is correct that many games use hairballs of pointers all over the place (and they are handles with ECS). There is never a borrow checker issue with handles since they divorce the concept of a pointer from the concept of ownership.

I wouldn't say 'almost everything', but there are some areas which require a huge amount of time and effort to build a mature solution for, UI and game engines being one, where there are still big gaps.

It's still true for game dev indeed, but for back-end or CLI tools it hasn't been true in like 7 years or so.

> The problem with Rust is that almost everything is still at an alpha stage.

Replace Rust with Bevy and language with framework, you might have a point. Bevy is still in alpha, it's lacking plenty of things, mainly UI and an easy way to have mods.

As for almost everything is at an alpha stage, yeah. Welcome to OSS + SemVer. Moving to 1.x makes a critical statement. It's ready for wider use, and now we take backwards compatibility seriously.

But hurray! Commercial interest won again, and now you have to change engines again, once the Unity Overlords decide to go full Shittification on your poorly paying ass.


Unfortunately, it is a failing of many projects in the Rust sphere that they spend quite a lot longer in 0.x than other projects. Rust language and library features themselves often spend years in nightly before making it to a release build.

You can also always go from 1.0 to 2.0 if you want to make breaking changes.


> Unfortunately, it is a failing of many projects in the Rust sphere that they spend quite a lot longer in 0.x than other projects

Yes. Because it makes a promise about backwards compatibility.

> Rust language and library features themselves often spend years in nightly before making it to a release build.

So did Java's. And I Rust probably has a fraction of its budget.

In defense of long nightly feature more than once, stabilizing some feature like negative impl and never types early would have caused huge backwards breaking changes.

> You can also always go from 1.0 to 2.0 if you want to make breaking changes.

Yeah, just like Python!

And split the community and double your maintenance burden. Or just pretend 2.0 is 1.1 and have the downstream enjoy the pain of migration.


> And split the community and double your maintenance burden.

If you choose to support 1.0 sure. But you don't have to. Overall I find that the Rust community is way too leery of going to 1.0. It doesn't have to be as big a burden as they make it out to be, that is something that comes down to how you handle it.


> If you choose to support 1.0 sure.

If you choose not to, then people wait for x.0 where x approaches infinity. I.e. they lose confidence in your crates/modules/libraries.

I mean, a big part of why I don't 1.x my OSS projects (not just Rust) is that I don't consider them finished yet.


I have totally disagree here.

I don't even look at crate versions but the stuff works, very well. The resulting code is stable, robust and the crates save an inordinate amount of development time. It's like lego for high end, high performance code.

With Rust and the crates you can build actual, useful stuff very quickly. Hit a bug in a crate or have missing functionality? contribute.

Software is something that is almost always a work in progress and almost never perfect, and done. It's something you live with. Try any of this in C or C++.


They might be unsafe, but there is enough tooling to pick from 60 and 50 years of industrial use, approximately.

Well, on the flip side with C++ some of it hasn't been updated beyond very basic maintenance and you can't even understand the code if you are just familiar with more modern C++…

Well it is upon each one to be good with their craft.

If not, the language they pick doesn't really make a difference in the end.

It is like complaining playing a music instrument to be in band or orchestra requires too much effort, naturally.


Except here you are a trained pianist and the tour manager gave you a pipe organ or a harpsichord.

Speaking as someone with musical background, that is where we discover those that actually understand music, from those that kind of get by.

Great musicians make a symphony out of what they can get their hands on.


>”reverting to more conservative options”

From what I’ve heard about the Rust community, you may have made an unintentionally witty pun.


I'm switching all my C projects over to the Zig toolchain, and honestly, I'm not looking back.

You’re switching to the build system of a different, pre 1.0 programming language that has frequent breaking changes?

Zig has a built-in C compiler, arguably one of the just-worksiest C compilers out there.

The Zig build system is basically cmake except worse but in Zig.

rust still doesn't even support OpenBSD on x86_64...


Do you mean x86 (as in 32bit)? Because I'm fairly sure that there's a Rust package available on x86_64 ( and aarch64, riscv64, sparc64 and powerpc64).


Rust has Tier 3 support for OpenBSD on x86_64


Nim to C compiler, 100% test pass rate.


Depends. When a new camera is out, it often takes time before Lightroom, Capture One, etc. support it. While I don't care about how the raw format works, being able to keep using my usual software even with a brand new camera is something I care a lot about.


To quickly build something with signatures, key exchange and encryption, I'd recommend starting with libhydrogen: https://github.com/jedisct1/libhydrogen


Good job! This is really cool!


How to download and install the app? There are no instructions.


It's nothing like Zig's comptime.


That can be done at DNS level in dnscrypt-proxy: https://github.com/DNSCrypt/dnscrypt-proxy/wiki/Filters#time...

At DNS level, not just websites will be blocked, but also apps.


Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: