Hacker Newsnew | past | comments | ask | show | jobs | submit | more sesm's commentslogin

React-router is it's own separate project not affiliated with Meta. React library doesn't ship a router.


Yet at the time it seemed to need one. Glad I never looked back at that fragmented mess.

I also don’t ‘KTH-Trust’ Meta of all corporations to have a compile step for a web technology.


LLMs, by design, are making plausible guesses.


If the value proposition is internet drama, then it certainly does.


Ubuntu is built on top of Debian


Sure. But Ubuntu and Debian are distributed by different organizations. Canonical does not distribute Debian.


The effort should rather be invested into learning how underlying hardware works and introducing redundancy and observability into the system.


That's non-sequitur.

The problem here is that C is too basic, dated, with inadequate higher-level abstractions, which makes writing robust and secure software extra difficult and laborious. "Learning underlying hardware" doesn't solve that at all.

Debian supports dozens of architectures, so it needs to abstract away architecture-specific details.

Rust gives you as much control as C for optimizing software, but at the same time neither Rust nor C really expose actual underlying hardware (on purpose). They target an abstract machine with Undefined Behaviors that don't behave like the hardware. Their optimisers will stab you in the back if you assume you can just do what the hardware does. And even if you could write directly for every logic gate in your hardware, that still wouldn't help with the fragility and tedium of writing secure parsers and correct package validation logic.


To be fair, the same problem existed before AI tools, with people spitting out a ton of changes without explaining what problem are they trying to solve and what's the idea behind the solution. AI tools just made it worse.


> AI tools just made it worse.

That's why it isn't necessary to add the "to be fair" comment i see crop up every time someone complains about the low quality of AI.

Dealing with low effort people is bad enough without encouraging more people to be the same. We don't need tools to make life worse.


There is one way in which AI has made it easier: instead of maintainers trying to figure out how to talk someone into being a productive contributor, now "just reach for the banhammer" is a reasonable response.


This comment seems to not appreciate how changing the scope of impact is itself a gigantic problem (and the one that needs to be immediately solved for).

It's as if someone created a device that made cancer airborne and contagious and you come in to say "to be fair, cancer existed before this device, the device just made it way worse". Yes? And? Do you have a solution to solving the cancer? Then pointing it out really isn't doing anything. Focus on getting people to stop using the contagious aerosol first.


If my neighbors let their dog poop in my yard and leave it I have a problem.

If a company builds an industrial poop delivery system that lets anyone with dog poop deliver it directly into my yard with the push of a button I have a much different and much bigger problem


I'm also using gitea, running on RPI5. Setup took like 15 mins, highly recommend.


mine is running on an rpi zero w (v1). super low power consumption.


Why make this a behind-the-scene optimization instead of just introducing `new`? That would make things much more clear for everyone.


Because constructors are really weird. Usually in Rust, when a struct is constructed, it already upholds all its invariants because construction is the "last" step in the initialization function. But with a C++-like constructor, it starts with a struct where all fields are in an invalid state, and then the struct's invariants are slowly established field by field. This is kinda impossible to square with Rust's safety promise. Even in safe languages like Java, there are often bugs when one calls other function from the constructor, that now observes the instance under construction violating its usual invariants. And this is also something Rust wants to avoid.


> But with a C++-like constructor, it starts with a struct where all fields are in an invalid state, and then the struct's invariants are slowly established field by field.

AIUI, that's why MaybeUninit<T> exists. But even if you address the issue of it being unsafe to assert that a MaybeUninit has been initialized (which &out references could in principle solve) there are real problems with this; for example, MaybeUninit<T> has no niches or free-for-use padding even when T does, so you can't just "project" MaybeUninit to individual fields except in special cases. My understanding is that C++ partial initialization has the exact same issues in principle, they just don't come up as often because the standard for code correctness is a lot less rigorous.


It wad easy to teach to Java devs just by using one mnemonic: PECS = Producer Extends, Consumer Super


That's one of major problems I have with Rust docs and community. The best way to explain most things in Rust to experienced dev, is by comparison to C++. But all the docs and blog posts explicitly target newbies and avoid comparison with C++ at all cost.


I disagree, Rust and C++ are very different languages with significant impedance mismatches once you go beyond the common C-like subset. Referencing C++ as a matter of course in docs and blog posts would just cause confusion. If you want a modern language that really is a lot closer to C++ you may want to check out Carbon.


Rust was created as a C++ replacement, borrows the 'zero cost abstractions' motto from C++, relies on RAII for resource management like C++ (not many languages do it), has the same approach to concurrency (in-place mutation guarded by locks), uses the codegen backend that was created for C++. It's mostly a C++ subset with more guardrails.

Edit: RAII


It's nowhere near a C++ subset. The way it works under the hood is quite different, and even trying to add some of the underlying mechanisms to C++ (such as what they call "trivially relocatable types", or "destructing moves") has been quite difficult.


Actually, we already discussed Rust move semantics on this website some time ago: https://news.ycombinator.com/item?id=43059293

And again, the best way to explain this is by comparison to C++


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

Search: