this post was submitted on 09 Sep 2024
3 points (100.0% liked)

Programming

23877 readers
399 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
 

Google recently rewrote the firmware for protected virtual machines in its Android Virtualization Framework using the Rust programming language and wants you to do the same, assuming you deal with firmware.

In a write-up on Thursday, Android engineers Ivan Lozano and Dominik Maier dig into the technical details of replacing legacy C and C++ code with Rust.

"You'll see how easy it is to boost security with drop-in Rust replacements, and we'll even demonstrate how the Rust toolchain can handle specialized bare-metal targets," said Lozano and Maier.

Easy is not a term commonly heard with regard to a programming language known for its steep learning curve.

Nor is it easy to get C and C++ developers to see the world with Rust-tinted lenses. Just last week, one of the maintainers of the Rust for Linux project - created to work Rust code into the C-based Linux kernel - stepped down, citing resistance from Linux kernel developers.

"Here's the thing, you're not going to force all of us to learn Rust," said a Linux kernel contributor during a lively discussion earlier this year at a conference.

top 12 comments
sorted by: hot top controversial new old
[–] eronth@lemmy.world 0 points 1 year ago (1 children)

Rust is one of those things that every time I look into it, I don't really follow what makes it so good. What's a good starter project to learn the language and get a sense of what makes it worthwhile over the established stuff?

[–] FizzyOrange@programming.dev 0 points 1 year ago (1 children)
  1. If your alternative is C++ then it removes the enormous burden of manually tracking lifetimes and doing manual memory management. C++ does have RAII which helps with that enormously but even then there are a gazillion footguns that Rust just doesn't have - especially with the newer stuff like rvalue references, std::move, coroutines etc. It also saves you from C++'s dreaded undefined behaviour which is everywhere.

  2. It has a very strong (and nicely designed) type system which gives an "if it compiles it works" kind of feel, similar to FP languages like Haskell (so they say anyway; I've not used it enough to know). The borrow checker strongly pushes you to write code in a style that somehow leads to less buggy code. More compiler errors, but much less debugging and fixing bugs.

  3. The libraries and APIs are generally very well designed and nice to use. If you've ever used Dart or Go think how nice the standard library is compared to JavaScript or PHP. It took C++ like 2 decades to get string::starts_with but Rust started with it (and much more!).

  4. Fast by default.

  5. Modern tooling. No project setup hassle.

  6. It's a value based language, not reference based. References are explicit unlike JavaScript, Java, C#, etc. This is much nicer and makes things like e.g. copying values a lot easier. JavaScript's answer for ages was "serialise to JSON and back" which is crazy.

Downsides:

  1. Slow compilation sometimes. I'd say it's on par with C++ these days.

  2. Async Rust is kind of a mess. They shipped an MVP and it's still kind of hard to use and has unexpected footguns, which is a shame because sync Rust avoids footguns so well. Avoid async Rust if you can. Unfortunately sometimes you can't.

  3. Interop with C++ is somewhat painful because Rust doesn't have move constructors.

Great language overall. Probably the best at the moment.

[–] JustEnoughDucks@feddit.nl 1 points 1 year ago

I disagree with 5.

I am an electronics engineer, so admittedly only ever worked with C and Python scripting (and not a programmer by any means) but I literally stopped learning rust for embedded because every single tooling setup step was wrong or failed for both chips I was testing out (NRF chip and an esp32-C3). Maybe only embedded rust was still a mess tooling-wise, but I have no use case for learning userspace rust first. It would just be a waste of my limited free time 😅

[–] raker@lemmy.world 0 points 1 year ago* (last edited 1 year ago) (1 children)

2024: Google says replacing C/C++ with Rust is easy

2025: Google buys Rust

2026: Google shuts down Rust

[–] newcockroach@lemmy.world 0 points 1 year ago* (last edited 1 year ago) (1 children)

😆🙄🤔Wait, Isn't rust a community made project?

[–] PlexSheep@infosec.pub 1 points 1 year ago

It is. Do not worry

[–] 0x0@programming.dev 0 points 1 year ago (1 children)

One of the deep-pocketed founding members of the Rust Foundation says it's easy. I'm surprised.

[–] lolcatnip@reddthat.com 0 points 1 year ago (1 children)

Clearly Rust is a conspiracy.

[–] lysdexic@programming.dev 0 points 1 year ago (1 children)

Clearly Rust is a conspiracy.

Anyone in software development who was not born yesterday is already well aware of the whole FOMO cycle:

  1. hey there's a shiny new tool,
  2. it's so fantastic only morons don't use it,
  3. oh god what a huge mistake I did,
  4. hey, there's a shiny new tool,
[–] Spore@lemmy.ml 0 points 1 year ago (1 children)

I assume that you do know that tools improve objectively in the cycle and are making a joke on purpose.

[–] lysdexic@programming.dev 0 points 1 year ago

If you had a grasp on the subject you'd understand that it takes more than mindlessly chanting "tools" to actually get tangible improvements, and even I'm that scenario often they come with critical tradeoff.

It takes more than peer pressure to make a case for a tool.

[–] GetOffMyLan@programming.dev 0 points 1 year ago

Here's the thing, you're not going to force all of us to learn Rust

That seems like a poor attitude imo.