News for hackers. Stuff that matters.
Re:Modern C for C++ Peeps by tialaramex on Saturday January 07, 2023 @02:54PM (#34291953)
Your theory is that Rust programmers "make all their variables shared pointers" ?

Even if I generously assume you're thinking of C++ "shared pointers", and so you've concluded that Rust's Rc<T> (a reference counted T) is basically the same thing, I don't see where you'd come to the conclusion that Rust programmers do this for "all their variables" as this seems wildly unlikely.

Re:Modern C for C++ Peeps by mgaunard on Saturday January 07, 2023 @03:05PM (#34292089)
Just look at the code in cargo. (A)rc is all over the place.

It's essentially a cop out to not have to think about ownership and lifetime, and not have to worry about the borrow checker.

The fact that this is so pervasive throughout Rust code is for me a sign that Rust failed to deliver on its initial promise. The borrow checker was meant to be its main value added. But heh, people still find value added to Rust otherwise.

Re:Modern C for C++ Peeps by tialaramex on Saturday January 07, 2023 @03:33PM (#34292433)
Hmm. So the code I happened to have open was Aria's "Cargo mommy" which has neither Arc nor Rc anywhere, but is only a toy.

So I did go look at Cargo itself, but unlike you although I do see some use of Rc and fewer of Arc it was scarcely "all over the place" when I looked and in the cases I spent any time actually thinking about it's a shared value, so, yeah, that makes sense.

I randomly looked at cargo/core/profiles.rs and cargo/core/registry.rs and cargo/core/compiler/compilation.rs without finding either Rc or Arc used in those files at all. Searching across the whole repository I found some places which do use Rc, and fewer using Arc (implying this data is shared between threads) -- but this doesn't really support your original claim does it?

Re:Modern C for C++ Peeps by mgaunard on Saturday January 07, 2023 @03:43PM (#34292554)
I never meant cargo itself.
Re:Modern C for C++ Peeps by zozbot234 on Saturday January 07, 2023 @07:26PM (#34294647)
> It's essentially a cop out to not have to think about ownership and lifetime

Not a cop out. Something very much like Rc<> is needed whenever an object's lifecycle might be independently extended by multiple referencing "owners", none of which is subsumed by the others. That's a matter of broad high-level design that can't generally be avoided, least of all in a multi-threaded context (as shown by the use of Arc<>).