The Tor Project is switching to Rust

(itsfoss.com)

196 points | by giuliomagnifico 3 hours ago

15 comments

  • ekjhgkejhgk 1 hour ago
    OT on Tor:

    Recently this link was on HN[1]. It ranks your browser on regular tracking and fingerprinting separately. "Tor without JS" was the only option I found to be completely fingerprint resistant. Even Tor "with JS on strict settings" ranked it as only "partly fingerprint resistant". (Interestingly firefox without JS never returns)

    Scary stuff.

    I'd like to hear other people's experiences/experiments here.

    [1] https://coveryourtracks.eff.org/

    • 47282847 35 minutes ago
      Tor Browser tries to widen the fingerprint buckets you can get put into by eg rounding off canvas sizes. The widest bucket and unavoidable is “Tor (browser) user”.
    • mawadev 15 minutes ago
      You can even track people by favicon which bypasses incognito mode. Another part is hiding font urls in css with more tracking...
  • epolanski 3 hours ago
    If Rust helps with their pains and they like Rust this seems very sensible.

    That's exactly why we have different languages and tools, because they adapt differently to different projects, teams and problems.

    But as soon as you get into the silly "tool X is better period" arguments, then all the nuance of choosing the right tool for the job is lost.

    • letmetweakit 52 minutes ago
      Why do you even bring this up, the blog post does not contain this message, they rewrote it to eliminate a class of bugs. They don’t bash C, so refrain yourself from mentioning what hypothetically could have been written…
    • dingdingdang 2 hours ago
      Sensible take, thank you. When HN get these "our project: from x to y language" frontpage stories I am always thinking that it would be far more exciting with "our project: 38.2% smaller code base by optimizing our dependency use", "our project: performance optimized by 16.4% by basic profiler use" or similar!
      • bluGill 1 hour ago
        Sometimes language is a limiting factor and so you need to change languages before getting better. However this is rare.
      • morkalork 1 hour ago
        Is the trade off here having more secure code in exchange for added complexity/difficulty? This is a real question, has the Tor code itself been exploited by bad actors before? All the incedences I've seen in the news were some other software running over tor that would be exploited to phone home or give up user data.
      • staticassertion 1 hour ago
        Isn't this just the same value judgment mistake? You're just presupposing that things like "smaller code base" are better in virtue of themselves the same way that "rewritten in Rust" might be as well.

        The parent poster's point is seemingly to reject "this is simply the better thing" (ie: "small code is better") and instead to focus on "for what we are doing it is the better thing". Why would "basic" profiler use be better than "niche" or "advanced" profiler use if for that context basic would actually have been inferior (for whatever value of basic we choose to go with)?

        It seems to me that the reality we're often confronted with is that "better" is contextual, and I would say that "basic" or "smaller" are contextual too.

      • classicasp 1 hour ago
        I think the chance that your Rust application is going to be more performant or efficient than C, is whether you are focused on writing performant and efficient code. Out-of-the-box, I’m guessing people will use too many cargo packages, each that are over-engineered or written by less-experienced developers, so it will be less efficient and less performant.

        In addition, you could more easily inadvertently introduce security problems.

        Is Rust the right choice for Tor? Sure. Is Tor the right choice for security? If they moved to Rust, they increased security risks to make it easier to manage and find help from younger less-experienced developers, so no.

        • gldrk 1 hour ago
          Given how heavily most C programs lean on type erasure vs. monomorphization and how often they reimplement basic data structures, it's kind of a miracle they hold up against Rust/C++.
    • GuB-42 29 minutes ago
      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.

    • guywithahat 5 minutes ago
      I had that thought too; the author claims tor suffers from user free bugs but like, really? A 20 year old code base with a massive supportive following suffers from basic memory issues that can often be caught with linters or dynamic analysis? Surely there are development issues I'm not aware of but I wasn't really sold by the article
    • YetAnotherNick 1 hour ago
      What are the project specific nuance you are talking about? Anything in this and linked post could be applied to any performant application which values memory safety.

      So unless they provide some Tor specific nuance, it's more or less applicable to wide range of applications.

  • giancarlostoro 1 hour ago
    I still wish Mozilla had kept oxidizing Firefox. It would have been a net positive for Rust itself.
    • elevation 1 hour ago
      At least the Chrome team is still oxidizing.
    • anonnon 1 hour ago
      Clearly, the fact that Servo failed must be indicative of shortcomings in Mozilla itself, and not Rust the language, its ecosystem, or its users.
      • psychoslave 46 minutes ago
        The language surely has many cons, like any language out there. And maybe it wasn't a good fit for Mozilla products. But Mozilla the organisation doesn't really looks that great in term of governance. Given Rust is now even integrated officially in Linux kernel, I have strong doubt that the technical caveats are the main factor of misalignment with Mozilla priorities.
      • WD-42 38 minutes ago
        Did it fail? The servo project seems alive and well, just not under Mozilla. They decided CEO pay packages were more important.
      • johncolanduoni 50 minutes ago
        Mozilla was the primary steward of Rust for most of the time that the Servo project was active. So if you want to lay Servo’s failure at the feet of the Rust language, it’s pretty hard to cast Mozilla as the blameless victims of… whatever it is that Rust users as a whole did to make Servo fail.
  • linsomniac 14 minutes ago
    Is there any way to run a Tor exit node without expecting to get a knock on the door from the FBI/DHS? Like advertising as an exit node but only to a whitelist of sites? For ~20 years I ran a dozen cabinet at a colo but never felt I could donate bandwidth to Tor because of that (did a big mirror server instead), and now I have gigabit (could be 10gig) at home, but still just don't want to deal with the issues.
  • buildbuildbuild 1 hour ago
    This was mostly funded by Zcash Community Grants. Good things can come from crypto R&D.
  • shevy-java 2 hours ago
    Hmmmm.

    My biggest gripe with the Tor project is that it is so slow.

    I don't think merely moving to Rust makes Tor faster either. And I am also not entirely convinced that Rust is really better than C.

    • ericpauley 2 hours ago
      There’s a fundamental trade-off between performance and privacy for onion routing. Much of the slowness you’re experiencing is likely network latency, and no software optimization will improve that.
    • xedrac 9 minutes ago
      I agree it probably won't make it faster. But there is absolutely no comparison when it comes to safety/stability. I've written a ton of C code, and it's just not even close. Rust really outshines C and C++ in this regard, and by a very large margin too.
    • dodomodo 2 hours ago
      I believe that the slowness is a matter of the amount nodes in the tor network, not something that can be fixed solely by code changes.

      No one is claiming the new version is faster, only that it is safer.

      • agumonkey 2 hours ago
        completely agree but it could be added that a new language can sometimes help explore new ideas faster, in which case maybe the routing layer and protocol can see new optimizations
      • wat10000 2 hours ago
        It’s important to remember that safety is the whole purpose of the thing. If Tor is slow, it’s annoying. If Tor is compromised, people get imprisoned or killed.
    • John23832 1 hour ago
      I think this shows a misunderstanding of the purpose of TOR. It’s for privacy, not optimal latency for your video stream.
    • GoblinSlayer 2 hours ago
      With 3 proxies traffic circles around the planet 2 times, which takes light 1/4 second to travel. Response does it again, so 1/2 second in total. Light is slow.
      • mapt 52 minutes ago
        Plus TLS handshakes.

        5 proxies does it even slower but would make attacks much more difficult.

      • brnt 1 hour ago
        Nature just hasn't switched to Rust (and Arch) yet. Maybe it'll also get rid of those pesky black holes.
    • Aurornis 1 hour ago
      > My biggest gripe with the Tor project is that it is so slow.

      It’s not supposed to be a primary browsing outlet nor a replacement for a VPN. It’s for specific use cases that need high protection. The tradeoff between speed and privacy for someone whistleblowing to a journalist, as an example, is completely reasonable.

      Having too much bandwidth available to each participant would incentivize too much abuse. In my past experience, a Tor associated IP was already highly correlated with abuse (users trying to evade bans, create alternate accounts to break rules, and then of course the actual attacks on security).

      • jfindper 1 hour ago
        >It’s not supposed to be a primary browsing outlet nor a replacement for a VPN.

        Tor wants people to use the network for primary browsing because it helps mask the people that need the protection. The more people using the network, the better for everyone's anonymity.

        They even have a whole "Outreach" section at https://community.torproject.org/outreach/

    • flipped 1 hour ago
      You meant Tor network, right? Sadly, making very fast anonymous overlay networks is extremely difficult. You either make it fast or don't sacrifice anonymity. I personally noticed that Tor network has significantly improved and is way faster since a few years. It's also not recommended to exit and if you religiously stay over onions, you increase your anonymity.
      • mhitza 12 minutes ago
        And significantly faster to access onion websites than go through exit nodes, which are probably saturated most of the time.

        Reddit over their onion website is very snappy, and compared to accessing reddit over VPN it shows fewer issues with loading images/videos and less likely to be blocked off.

        It would be nice if more websites were available as onion addresses (and I2P as well).

        edit: also if the Tor browser (desktop and mobile) would ship with ublock origin bundled, that would further improve the experience (Brave browser Tor window compared to the Tor browser is a night and day difference)

    • rpigab 2 hours ago
      I had that problem too, very slow on network requests, just change the setting "num_relays_proxied" from 3 to 1 to make it blazingly fast.
      • willvarfar 2 hours ago
        Then the single relay knows both who you are (your IP) and where you are going. This offers no anonymity against the relay itself.

        3 relays is the goldilocks number for speed vs privacy. Using less is not a tradeoff the usual user of Tor should make.

        • 1313ed01 2 hours ago
          How is 3 so much better than 2, but 4 not so much better than 3?
          • nostrademons 2 hours ago
            Knowing not so much about Tor but some about math: the number of nodes you need to compromise in order to de-anonymize a Tor user is exponential in the number of hops. Google says there are roughly 7000 Tor nodes, including 2000 guards (entry) and 1000 exit nodes. If you have a single hop, there's roughly a 1/1000 chance that you will connect to a single malicious node that can de-anonymize you, going up linearly with the number of nodes an attacker controls. If you have 3 hops, you have a 1 in 1000 * 7000 * 2000 = roughly 14 billion chance. 2 hops would give you 1 in 2 million, 4 hops would give you 1 in 1000 * 7000 * 7000 * 2000 = 98 trillion. In practical terms 1:14B is about the same as 1:98T (i.e. both are effectively zero), but 1:2M is a lot higher.
            • flipped 2 hours ago
              There are currently ~9000 relays if you look at https://metrics.torproject.org/networksize.html. The current problem is the fact that majority of relays are in Germany and if you rotate your circuits enough, you'll also notice the same path. German govt has been very hostile towards Tor for a long time, they were also behind KAX17. We need more relays obviously but also in different regions.
          • willvarfar 2 hours ago
            1 = no privacy from relay

            2 = risk of collusion between relays

            3 = goldilocks default

            4 = ... actually, you have more attack surface and you are more susceptible to fingerprinting because everybody else is using 3, so you're timings etc help identify you

            So the default is 3 and nobody ought change it! Use 3 like everybody else.

            The exception is .onion sites. TOR actually deliberately defaults to 6 hops when accessing .oninon sites - 3 to protect you and 3 to project the site.

            • flipped 2 hours ago
              There's no exit nodes for onions because there's nothing to exit to. Nothing beats anonymity of onions and it's design is well created.
            • mapt 50 minutes ago
              The right number for you to use is the default. But the right default is not necessarily 3.
            • Surac 2 hours ago
              That reminds me of the holy Handgranate of the Monty pythons
          • throawayonthe 1 hour ago
            because then there is at least one node that knows neither the source nor the destination of a request
          • sph 1 hour ago
            The law of diminishing returns
      • Aurornis 1 hour ago
        This is a joke, for those who didn’t notice.

        Tor is slow because traffic is routed through multiple layers. The design priority is anonymity, not speed.

      • kaoD 2 hours ago
        If this is sarcastic you should probably add /s or someone might actually follow your "advice".
        • fragmede 55 minutes ago
          Or people should not be idiots and think for themselves just a smidge, and not use /s.
      • deafpolygon 2 hours ago
        You should preface this with some important information about what that does.

        There are some trade-offs!

        Changing that setting to 1 gives you weaker anonymity guarantees. Using multiple guards spreads your traffic across different IP addresses, making it harder for an adversary who controls a subset of the network to correlate your activity.

        Reducing to a single guard concentrates all traffic through one point, increasing the chance that a hostile relay could observe a larger fraction of your streams...

      • flipped 2 hours ago
        What's the point of having one relay? You're better off using a reputable VPN like mullvad or ivpn. Tor is the best you're gonna get for low latency anonymous overlay network. It's been studied and refined over the years.
        • mapt 48 minutes ago
          It's very difficult for me to contemplate how anybody could run a VPN, however reputable, that isn't compromised by one intelligence agency at least. Their incentive structures and their costs to participate in this space just make it a no-brainer.

          If you're starting a brand new VPN company with ironclad ideals about privacy - are you going to be able to compete with state-run enterprises that can subsidize their own competing "businesses", on top of whatever coercive authority they possess to intervene in local small businesses?

        • raxxorraxor 1 hour ago
          It would shifts part of the data route info from your provider toward that particular relay.

          But I wouldn't recommend it of course.

          • flipped 1 hour ago
            Of course it would hence you should stick with mullvad, a reputable VPN. Tor is not made for single relay paths, you're just wasting it's potential.
    • MangoToupe 1 hour ago
      > And I am also not entirely convinced that Rust is really better than C.

      Well it's certainly not worse than c, and it's hard to argue it's as bad, so...

      > I don't think merely moving to Rust makes Tor faster either.

      It would be crazy to think switching languages would make a network protocol faster without some evidence of this.

    • sandworm101 1 hour ago
      Hey, if you want a fast anonymity netowrk, there are commercial providers. Companies doing research on thier competition use these to hide thier true idents from targets. They are not cheap (not free but cheaper than AWS imho) but have much greater functionality than tor.

      https://voodootomato.medium.com/managed-attribution-the-key-...

      https://www.authentic8.com/blog/non-attribution-misattributi...

      • jfindper 51 minutes ago
        >Hey, if you want a fast anonymity netowrk, there are commercial providers.

        For most people seeking anonymity via Tor network (whistleblowers, journalists, activists, etc.), paying a company who can then subsequently be compelled to hand over your information is a bad choice.

        And in most other scenarios, Authentic8 is probably still a bad choice. If you require a FedRAMP-authorized service, then sure, look at Authentic8.

  • N_Lens 2 hours ago
    Rust - "I am inevitable"
    • pdimitar 1 hour ago
      "And I... am the Oxidized Man."

      [snaps fingers]

    • fuzzfactor 2 hours ago
      Rust never sleeps.

      N. Young

  • testdelacc1 2 hours ago
    This isn’t a recent decision, which the title implies. This rewrite started in 2020, and they released Arti 1.0 in 2022. Check out the release post (https://blog.torproject.org/arti_100_released/) where they explain their rationale for the rewrite. They were unhappy with the state of the C codebase and couldn’t see a way to slowly refactor it. Their experience with Rust was positive for all the commonly cited reasons - if it compiles it works, good ecosystem leading to development velocity, better portability across operating systems, and attracting more contributors. They did say they weren’t happy at the time with binary sizes.

    The change log in the arti repo (https://gitlab.torproject.org/tpo/core/arti/-/blob/main/CHAN...) shows a lot of recent development too- versions 1.6, 1.7 and 1.8 were released in the last 3 months and they talk about setting the foundations for larger features to come. All in all it seems like the decision worked out for the team.

    • iamnothere 2 hours ago
      Arti is also designed to be embedded as a library in other apps, so messaging clients (for example) will be able to leverage the network without needing a correctly configured Tor daemon on the host.

      The extra safety in the code base is nice, but this seems like a bigger deal.

    • jfindper 11 minutes ago
      >better portability across operating systems

      Does Rust have better portability than C?

      • binaryturtle 6 minutes ago
        Doubtful. I can't even get Rust to work here on my slightly older Mac system. So with TOR switching away from a well supported language like C it's simple another project lost to me (unlikely you can stick with an older version for long in this case as they regularly break backwards compatibility in their network.)
    • pityJuke 2 hours ago
      Yes, this is a complete exaggeration of a headline and should be flagged for that alone.

      This has been a long running project, and the Tor team clearly took their time to make it, as opposed to being a spur-of-the-moment change.

      • jfindper 4 minutes ago
        You're reading way to much into the title. "[...] is switching to [...]" does not have any implication of being a "spur-of-the-moment" thing
  • fithisux 1 hour ago
    Rust is one of the natural choices for this kind of migration.

    There are others like Go.

    I think they made the choice based on ecosystem, performance and prior experience with C.

  • hnthrow82926 48 minutes ago
    [dead]
  • bbcismyfriend 2 hours ago
    [flagged]
    • tw1901375 2 hours ago
      It did look like that ever since an NSA critical Tor developer got canceled using the same methods as against Assange.

      I suppose soon we'll get nsa-leftpad from cargo as a dependency among 347 other packages.

  • anthk 2 hours ago
    Why not Go? It's more portable.
    • pezezin 1 hour ago
      Portable to what? Rust works fine on all of today's popular platforms.

      I see people complaining about Rust's lack of portability, and it is always some obsolete platform that has been dead for 20 years. Let's be serious, nobody is gonna run Tor on an old SGI workstation or Itanium server.

      • edm0nd 1 minute ago
        >Let's be serious, nobody is gonna run Tor on an old SGI workstation or Itanium server.

        dont temp me with a good time and awesome weekend project!

      • vablings 42 minutes ago
        It is still possible to build for targets such as Itanium. There is nothing stopping you from writing your own targets too in LLVM and its not obscenely difficult

        https://github.com/llvm/llvm-project/tree/main/llvm/lib/Targ...

    • lynndotpy 2 hours ago
      Don't Rust and Go build to mostly-statically-compiled binaries? (With the exception of a link to libc.) (This isn't a rhetorical question, this is something I don't know a lot about

      I'd imagine the biggest cultural reason is that many Rust developers were C developers who had a reason to find something better, but still scoff at garbage collection, large runtimes, etc. They probably have a lot more Rust expertise in their circle.

      Another technical reason is that they were trying to replace their C code with Rust in bits and pieces before they went with a full rewrite. I don't know about Go, but this is something ergonomically doable in Rust.

      • johncolanduoni 35 minutes ago
        Rust can create statically-compiled binaries on Linux by using musl instead of glibc, but it’s not the default like it is in Go and is as a result not quite as effortless. There are a lot of crates with native dependencies that require slight environment tweaks to work on a musl build. Go on the other hand goes to great lengths to not need to link to any C code at all, to the point of shipping its own default TLS library and cryptographic primitives.
      • atq2119 1 hour ago
        Plus, Rust has a more expressive type system.

        I like loose type systems for some quick scripting, but I started to adopt Rust for many of my personal projects because I find it's so much easier to get back into a project after a year when there are good type system guard rails.

    • preisschild 2 hours ago
      What do you mean? Rust supports far more platforms.

      Also Rust has a lot more inherent safety features than go.

      (I think Go is great and its my primary language)

      • superkuh 2 hours ago
        In terms of compilation of programs Go is far, far easier than Rust. For Rust to compile a random Rust program on the internet one almost always has to have the absolutely latest out of repo compiler toolchain from curl rustup.whatever | sh. The normal 4 year release cycle is incompatible with rust development. For commercial use cases this doesn't matter. But for open source like the tor project it does.

        That said, since they use Firefox this bridge has already been burned.

    • hu3 2 hours ago
      and easier to learn.

      and better funded.

      and easier to find devs.

      • ramon156 2 hours ago
        They both suck getting new devs for

        Also, just because it's part of Google doesn't make go better funded. Theyd probably be fine killing go.

        Definitely easier to learn though :P

        • hu3 1 hour ago
          > They both suck getting new devs for

          I'm willing to be Rust suck a ton more to hire devs. Since, as we both agree, Go is easy to learn. Any C#, PHP or Java dev can get going with Go in not time.

        • FieryMechanic 1 hour ago
          Go been around for quite a while now. It isn't going anywhere.
          • vablings 41 minutes ago
            Rust has been around for over 10 years now. In the last five years the language hasn't changed much and has gotten better and better
      • tjpnz 17 minutes ago
        Rust is going to feel more familiar to Tor contributors than Go. Based on the list of platinum members (which includes Google and Tor btw) there's some serious money going into the Rust Foundation, assuming it's managed properly I can't see funding as an issue.

        https://rustfoundation.org/members/

      • agumonkey 2 hours ago
        i have no dog in the fight, but based on tor release schedule it seems to me that the team is very very talented and rust complexity is not a challenge for them
  • nurettin 2 hours ago
    I think we will see more Rust adoption as code generation gets better.

    Machines will generate all the code, test that it works according to spec, you only need a vague notion of what is succint (do you just implement some existing trait?), what is typical (do you use index based data structures? do you simply use a Box, do you need Rc? Where should you use Optional?, do you want to use RefCell to make it mutable and so on), what is concise (just macro expand?), what is the correct type to use so you can warn the machine to re-adjust itself.

    Personally I don't use Rust, I don't want to learn everything about Rust. It is the new enterprise Java boilerplate BS of our time.

    So instead of running people through that ordeal, let them write the specs and machines should write the verbose boilerplate so the code is so called "safe" and concise without giving up too much.

  • jjgreen 2 hours ago
    Complete rewrites are always a bad idea ... [mutters of agreement] ... except in Rust! [cheering]
    • lynndotpy 2 hours ago
      Complete rewrites have been done before. They're not impossible tasks. C to C++ (like with fish), C++ to Rust (fish again, Tor, etc), Java to C# (something I've seen), C# to C++ (evernote), Blender Game Engine to Godot (many small cases), Godot to Lumberyard (something I've seen), Unity to Godot (many small cases), etc. And there are all the myriad rewrites within the same language, or across major breaking changes (like Python 2 to Python 3).

      I think "you should never do a full rewrite" is something of a reactionary response to the juvenile idea new devs and interns get every now and then. But sometimes, a rewrite really is a good idea.

      But in this case, per the announcement ( https://blog.torproject.org/announcing-arti/ ), the reasons are pretty convincing. The major reasons are, unsurprisingly, all around memory safety.

      • mynameajeff 1 hour ago
        > Godot to Lumberyard Do you remember what project(s) this was? I'd be super curious on the motivations of the developers. I guess I could see it when it first went open source and Godot wasn't all it was today.
      • FieryMechanic 1 hour ago
        The issue is that every other week there is a rewrite of something in Rust. I just do an eyeroll whenever I see that yet another thing is being rewritten in Rust.

        I've tried compiling large projects in Rust in a VM (8GB) and I've run out of memory whereas I am sure a C/C++ large project of a similar size wouldn't run out of memory. A lot of this tooling I had to compile myself because it wasn't available for my Linux distro (Debian 12 at the time).

        A lot of the tooling reminds me of NPM, and after spending a huge amount of my time fighting with NPM, I actually prefer the way C/C++/CMake handles stuff.

        I also don't like the language. I do personal stuff in C++ and I found Rust really irritating when learning the language (the return rules are weird) and just gave up with it.

        • hypeatei 1 hour ago
          > whereas I am sure a C/C++ large project of a similar size wouldn't run out of memory

          This is a common issue on large C++ projects for users with limited resources. You typically have to tinker with build settings and use a different linker etc.. to get the project building without OOMing.

          > A lot of the tooling reminds me of NPM

          My feeling is that you'd have the same criticism about a lot of other modern ecosystems because they allow you to pull dependencies easily. With things like vcpkg, that's also possible in C++ but even without it: nothing stops the same behavior of importing "random" code from the internet.

        • tempest_ 49 minutes ago
          > A lot of the tooling reminds me of NPM, and after spending a huge amount of my time fighting with NPM, I actually prefer the way C/C++/CMake handles stuff.

          I guess you and me live different lives because I have spent far more time messing with ancient C/C++/CMake/Automake/Autoconf/configure/just have this particular .so file in this particular spot/copy some guys entire machine because this project only builds there/learn and entirely different language just to write build files (CMake sucks and 5 other alternatives are just lipstick on a pig) etc. etc.

          I am of the opinion that half of Rusts success is based on that fact that C/C++'s tooling is annoying and ancient. People want to write code not mess with build envs.

        • g947o 56 minutes ago
          Sure. That doesn't matter. Of course you can keep writing your C/C++ or using CMake, nobody is going to stop that. But other people's project are not going to stop adopt new tech stack because how you feel about it.
        • pdimitar 54 minutes ago
          RE: memory, any self-respecting CI/CD system will allow you to compile any Rust project without out-of-memory halts.

          RE: NPM, you have a right to a preference of course. I certainly don't miss the times 20 years ago when pulling in a library into a C++ project was a two-week project in itself. make and CMake work perfect right up until they don't and the last 2% cost you 98% of the time. Strategically speaking, using make/CMake is simply unjustified risk. But this is of course always written off as "skill issue!" which I gave up arguing against because the arguers apparently have never hit the dark corners. I have. I am better with Just and Cargo. And Elixir's mix / hex.

          What you like as a language (or syntax) and what you roll your eyes at are obviously not technological or merit-based arguments. "Weird" I can't quite place as an argument either.

          Use what you like. We all do the same. The original article lists good arguments in favor of Rust. Seems like a good case of "use the right tool for the job" to me.

    • dodomodo 2 hours ago
      Comelete rewrite are not always bad, they are _just_ very costly. You just need to do cost benefit analsys and compare it with the cost and benefit of other actions.
    • robin_reala 1 hour ago
      Fish did a complete rewrite in Rust, but they did it in the right way.

      1. Rewrite each C file in Rust as a 1:1 mapping.

      2. Rewrite the Rust to make it idiomatic.

      3. Start making structural changes.

    • norman784 2 hours ago
      Well, an underrated aspect of the Rust rewrites, is that it's easy to publish and share official libraries from the projects that the community can use, something that is too hard in C land.
      • anonnon 1 hour ago
        If anything, from a security standpoint, this is one of the bigger issues with a rewrite in Rust. Besides the "MIT EVERYTHING" mindset, Rust people are also similar to JS devs in having projects with huge supply chain attack surfaces, from their eagerness to rely on so many crates.
        • tempest_ 43 minutes ago
          On the flip side C/C++ devs like to let ancient libs hang around because updating them can be such a pain in the ass.

          You can choose to write Rust with fewer external crates or vendor them like you would with c++ that is a dev choice.

          Having more choices is better.

        • pdimitar 51 minutes ago
          I agree this is problematic, sure, and is not unique to Rust or JS. Feel free to propose and work on something better, I'd be your enthusiastic supporter.

          It's simply a way to be able to move at a reasonable speed is how I see it.

    • g947o 58 minutes ago
      Nobody ever said rewrites are always a bad idea. You just made that up. It has been done successfully many times, with many more happening (e.g. TypeScript compiler rewrite).

      What matters is how the project is planned and implemented.

      Typically, complete rewrites that halt all feature development and fail to achieve feature parity is a recipe for disaster. On the other hand, balancing the work for feature/regular maintenance and rewrite and gradually achieving feature parity before rolling things out has worked well.

    • littlestymaar 2 hours ago
      Opinions with “always” in them are always a bad idea.
    • billy99k 1 hour ago
      I worked at a startup where the original code base was outsourced to cheap developers and was riddled with security vulnerabilities.

      A complete rewrite made sense.

  • throwaway613745 34 minutes ago
    I'm kindof a rust hater - more to do with rust programmers than rust itself - but this makes perfect sense to me.