I hate the "rewrite it in Rust" mentality, however, I think that in this particular case, Rust is the right tool for the job.
The Rust specialty is memory safety and performance in an relatively unconstrained environment (usually a PC), with multithreading. Unsurprisingly, because that's how it started, that's what a web browser is.
But Tor is also this. Security is extremely important as Tor will be under attack by the most resourceful hackers (state actors, ...), and the typical platform for Tor is a linux multicore PC, not some tiny embedded system or some weird platform, and because it may involve a lot of data and it is latency-sensitive, performance matters.
I don't know enough of these projects but I think it could also take another approach and use Zig in the same way Tigerbeetle uses it. But Zig may lack maturity, and it would be a big change. I think it is relevant because Tigerbeetle is all about determinism: do the same thing twice and the memory image should be exactly the same. I think it has value when it comes to security but also fingerprinting resistance, plus, it could open the way for dedicated Tor machines, maybe running some RTOS for even more determinism.
From the looks of it, Rust is usable un a tiny embedded system but it is not "great". I think that out of the recent, trendy languages, Zig is the best suited for this task, but in practice C is still king.
The big thing is memory allocation, sometimes, on tiny systems, you can't malloc() at all, you also have to be careful about your stack, which is often no more than a few kB. Rust, like modern C++ tend to abstract away these things, which is perfectly fine on Linux and a good thing when you have a lot of dynamic structures, but one a tiny system, you usually want full control. Rust can do that, I think, like C++, it is just not what it does best. C works well because it does nothing unless you explicitly ask for it, and Zig took that philosophy and ran away with it, making memory allocation even more explicit.
Rust has no malloc in the language whatsoever. In embedded, you don't even include the libraries for dynamic allocation in the first place, unless you want to. And it's very normal not to.
It probably depends how tiny you mean. If the reason you can't allocate memory is because the only 1024 bytes of static RAM is all stack, then, yeah, Rust won't be very comfortable on that hardware. On the other hand C isn't exactly a barrel of laughs either. In my mind if I can sensibly chart what each byte of RAM is used for on a whiteboard then we should write machine code by hand and skip "high level" languages entirely.
I don't know where I've lied about this, supposedly. Unless you say that, because of this implementation exception (which is based on target, not std vs no_std by the way) as meaning that "there's no UB in safe Rust" to be a lie.
I would still stand by that statement generally. Implementation issues on specific platforms are generally not considered to be what's being discussed when talking about things like this. It's similar to how cvs-rs doesn't make this a lie; a bug isn't in scope to what we're talking about 99% of the time.
In context, I'd have no reason to deny that this is something you'd want to watch out for.
> For an example, if a function in no_std overflows, it can result in undefined behavior, no unsafe required. And stack overflows are easy in Rust, like they are easy in most other systems languages.
This is true, no_std has no Rust runtime so it doesn't provide stack protection. I am aware of efforts to address this for embedded, but they're not available at the moment.
> Steve Klabnik has lied about that in the past, as he is wont to do.
1) I don't know what Steve has to do with anything I asked so it is bizarre to bring up and 2) I find this is to be a ridiculous statement.
While the "required piece of technology" aspect is debatable, there is certainly enough demand for it that it is going to happen in one way or another.
So I agree that instead of fighting some change that I think is inevitable, they should make it so that it works in the most privacy-conscious way possible. And I mean with real technical solutions, like an open-source app or browser extension you can download, a proof-of-concept server for age verification, etc... using the best crypto has to offer.
Hacker News is almost indistinguishable in spirit from a well-run subreddit. Reddit is not centered on user profiles and followers and yet, Reddit is included in the Australia's social media ban.
It is clear from the ruling that by including YouTube, Reddit and Facebook, they take a broad definition of what social media is, essentially anything with user interaction and Hacker News definitely fits the bill.
And if your criteria includes "social aspects like user profiles and followers", then GitHub would fit too: it has user profiles, followers / stars, and allows for discussion. It is even included in the "social media" list for ESTA and visa applications for the US. We could even include StackOverflow, I mean, it used to be common practice to build a profile, chasing a reputation score so that you could show off to recruiters.
> How are you supposed to deal with recalcitrant users?
Keep the servers running, but make the recalcitrant users pay for the costs and a then some more. It is actually a common strategy. Big, slow companies often have trouble with deprecation, but they also have deep pockets, and they will gladly pay a premium so that they can keep the API stable at least for some time.
If you ask for money, you will probably get more reactions too.
It is something I noticed when talking to LLMs, if they don't get it right the first time, they probably never will, and if you really insist, the quality starts to degrade.
It is not unlike people, the difference being that if you ask someone the same thing 200 times, he will probably going to tell you to go fuck yourself, or, if unable to, turn to malicious compliance. These AIs will always be diligent. Or, a human may use the opportunity to educate himself, but again, LLMs don't learn by doing, they have a distinct training phase that involves ingesting pretty much everything humanity has produced, your little conversation will not have a significant effect, if at all.
I use a new chat/etc every time that happens. Try to improve my prompt to get a better result. Sometimes works, but that multiple chat rather than laborious long chat approach annoys me less.
You have the point of view that having publicly available queer content and abortion information is a good thing, something I generally agree with.
But not everyone think that way, some think that by limiting access to abortion information, they are actually saving (unborn) lives. Some people think that "sex positive" movements are morally questionable and help spread infection. For them, they are the good guys and they think that Meta is finally doing the right thing.
These are divisive political subjects and political parties with these ideas get elected for a reason. In a democracy, parties will not promote ideas that no one agree with, they need the votes, so if they are promoting them, it means that for a large part of the population, it is the right thing to do. HN is a bubble with mostly liberal ideas, we have to understand it for what it is.
That's in addition to the idea that "It is difficult to get a man to understand something, when his salary depends upon his not understanding it". But it applies more to activities that are almost universally recognized as bad rather than partisan ideas, things like scamming.
I'm not sure I agree with this, though I suppose it depends on what one defines as "liberal."
>In a democracy, parties will not promote ideas that no one agree with, they need the votes, so if they are promoting them, it means that for a large part of the population, it is the right thing to do.
I would say instead that it means that for a large part of the voting population, the ideas are not objectionable enough for them to vote differently or abstain. People are already voting in spite of the disconnect between the policies they support and the policies that actually get implemented [0]
There is "early exit after the first swap", which actually makes his algorithm closer to insertion sort than bubble sort. If the list couldn't change between each pass, it would be a very inefficient insertion sort in O(n^3) as you are constantly scanning the part of the list that is already sorted.
But this is a case where theory doesn't count as much as having an acceptable result. It is typical in video games, if it plays well and looks fine, who cares if it is incorrect. Here I guess that sometimes a sprite appears on top of another sprite when it should have been behind it, because of the early exit, but while playing, it turned out not to be noticeable enough to change the algorithm.
I believe the popularity of diesel car in Europe is actually a tax-related hack.
The idea is that diesel is the "work" fuel, for shipping, construction, etc... While gasoline is the "consumer" fuel, for personal use, motorsports, etc... Make the former expensive and it will affect the entire economy, everything will become more expensive and less competitive. Making gasoline more expensive will not have the same impact.
So, put high taxes on gasoline. The result was an increase in popularity of diesel cars, that cost less to run because of taxes.
Now, the situation is changing. Diesel, at least the one that is legal to use on the road is taxed at a level closer to gasoline. Diesel cars are also becoming less and less welcome with regards to low emission zones and green taxes, so many people are going back to gasoline.
Yes, in France as I pointed out in my other comment, the diesel fuel was always cheaper than regular gasoline. The re-alignment of the tax was (amongst other things) what sparked the massive yellow vest protests in France in 2018.
Linus Torvalds greenlit Rust in the kernel, and as a BDFL, he is the one to decide. He has no reason to be upset with any decision because ultimately, all decisions are his own.
If he didn't want Rust in the kernel, he would have said it, and there would have been no Rust in the kernel. It is also the reason why there is no C++ in the kernel, Linus doesn't like C++. It is that simple.
And I respect that, Linux is hugely successful under Linus direction, so I trust his decisions, whatever opinion I have about them.
I only typed Linus Torvald not realizing the person was asking for a "movie character" quite literally, lol. I thought "you mean the guy famous for (among many things..) his behavior?"
This is the first time I've had a comment hit -3 which, I mean, I get it!!
The Rust specialty is memory safety and performance in an relatively unconstrained environment (usually a PC), with multithreading. Unsurprisingly, because that's how it started, that's what a web browser is.
But Tor is also this. Security is extremely important as Tor will be under attack by the most resourceful hackers (state actors, ...), and the typical platform for Tor is a linux multicore PC, not some tiny embedded system or some weird platform, and because it may involve a lot of data and it is latency-sensitive, performance matters.
I don't know enough of these projects but I think it could also take another approach and use Zig in the same way Tigerbeetle uses it. But Zig may lack maturity, and it would be a big change. I think it is relevant because Tigerbeetle is all about determinism: do the same thing twice and the memory image should be exactly the same. I think it has value when it comes to security but also fingerprinting resistance, plus, it could open the way for dedicated Tor machines, maybe running some RTOS for even more determinism.
reply