<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: gw2</title><link>https://news.ycombinator.com/user?id=gw2</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 17 Apr 2026 09:59:04 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gw2" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by gw2 in "Ask HN: Memory-safe low level languages?"]]></title><description><![CDATA[
<p>> even Rust isn't really memory-safe.<p>Yeah, and this points at a deeper issue: the concept of a language being either (binary) memory safe or not does not really make sense. Memory safety is a spectrum and most GC'd languages are safer than Rust (but you won't see a lot of "memory safety" proponents acknowledge this).<p>Also, there are mitigations that can make "unsafe" languages as secure as something like Rust, but those are deliberately overlooked and hence languages like Zig are constantly bashed using security as the reason.</p>
]]></description><pubDate>Mon, 28 Apr 2025 04:14:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=43817481</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43817481</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43817481</guid></item><item><title><![CDATA[New comment by gw2 in "Crystal 1.16.0"]]></title><description><![CDATA[
<p>Questions to anyone using Crystal in production:<p>* How is the GC latency, considering that Crystal uses the Boehm GC?<p>* Have you encountered any problems in long running programs due to the conservative nature of Boehm?</p>
]]></description><pubDate>Fri, 11 Apr 2025 11:31:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=43652683</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43652683</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43652683</guid></item><item><title><![CDATA[Multi-threading is always the wrong design (2023)]]></title><description><![CDATA[
<p>Article URL: <a href="https://unetworkingab.medium.com/multi-threading-is-always-the-wrong-design-a227be57f107">https://unetworkingab.medium.com/multi-threading-is-always-the-wrong-design-a227be57f107</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43554737">https://news.ycombinator.com/item?id=43554737</a></p>
<p>Points: 33</p>
<p># Comments: 52</p>
]]></description><pubDate>Wed, 02 Apr 2025 08:39:42 +0000</pubDate><link>https://unetworkingab.medium.com/multi-threading-is-always-the-wrong-design-a227be57f107</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43554737</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43554737</guid></item><item><title><![CDATA[New comment by gw2 in "Taming the UB Monsters in C++"]]></title><description><![CDATA[
<p>Have a look at this repo:
<a href="https://github.com/trailofbits/clang-cfi-showcase" rel="nofollow">https://github.com/trailofbits/clang-cfi-showcase</a></p>
]]></description><pubDate>Tue, 01 Apr 2025 03:54:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=43542677</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43542677</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43542677</guid></item><item><title><![CDATA[New comment by gw2 in "Taming the UB Monsters in C++"]]></title><description><![CDATA[
<p>First of all, thanks for your response.<p>> This rarely helps. Most of the nice-to-exploit bugs were in older codes, which weren't using STL containers.<p>While I agree with this, is not modifying those code to use STL containers much cheaper than rewriting into an entirely new language?<p>> Shadow stack is meh.<p>Are you referring to the idea of shadow stacks in general or a particular implementation of them?<p>> For example, for browser renderer without sandbox / site-isolation etc<p>I may be wrong, but I think you are referring to JIT bugs leading to arbitrary script execution in JS engines. I don't think memory safety can do anything about it because those bugs happen in the binding layer between the C++ code and JS scripts. Binding code would have to use unsafe code anyway. (In general, script injection has nothing to do with memory safety, see Log4j)<p>> Uh, I'd guess, half or more of that.<p>I mean, if you are after RCEs, don't CFI and shadow stacks halt the program instead of letting the CPU jumping to the injected code?<p>Now, let me get more specific - can you name one widespread C++ exploit that:<p>* would have happened even if the above mentioned mitigations were employed.<p>* would not have happened in a memory safe language?</p>
]]></description><pubDate>Tue, 01 Apr 2025 03:36:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=43542585</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43542585</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43542585</guid></item><item><title><![CDATA[New comment by gw2 in "Taming the UB Monsters in C++"]]></title><description><![CDATA[
<p>> something like half of the 70% would be prevented<p>Sure, but the other half are use-after-frees and those would not be exploitable anyway because of CFI and shadow stacks.</p>
]]></description><pubDate>Mon, 31 Mar 2025 12:44:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=43534340</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43534340</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43534340</guid></item><item><title><![CDATA[New comment by gw2 in "Taming the UB Monsters in C++"]]></title><description><![CDATA[
<p>A question to security experts reading this thread:<p>What is your opinion on deploying C++ codebases with mitigations like CFI and bounds checking?
Let's say I have a large C++ codebase which I am unwilling to rewrite in Rust. But I:<p>* Enable STL bounds checking using appropriate flags (like `-DGLIBCXX_ASSERTIONS`).<p>* Enable mitigations like CFI and shadow stacks.<p>How much less safe is "C++ w/ mitigations" than Rust? How much of the "70% CVE" statistic is relevant to such a C++ codebase?<p>(I've asked this in an earlier thread and also in other forums, but I never really got a response that does not boil down to "only Rust is safe, suck it up!". It also doesn't help that every other thread about C++ is about its memory unsafety...)</p>
]]></description><pubDate>Mon, 31 Mar 2025 10:37:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=43533347</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43533347</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43533347</guid></item><item><title><![CDATA[New comment by gw2 in "Crabtime: Zig’s Comptime in Rust"]]></title><description><![CDATA[
<p>> Zig is essentially a skin on a subset of C++, one that is in practice less safe than C++<p>Give it a rest please. Given your association with Rust, endlessly attacking competing languages is not a good look, regardless of whether your points are technically correct or not.</p>
]]></description><pubDate>Mon, 24 Mar 2025 03:59:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=43457704</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43457704</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43457704</guid></item><item><title><![CDATA[The Jakt Programming Language]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/SerenityOS/jakt">https://github.com/SerenityOS/jakt</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43437752">https://news.ycombinator.com/item?id=43437752</a></p>
<p>Points: 108</p>
<p># Comments: 48</p>
]]></description><pubDate>Fri, 21 Mar 2025 16:34:26 +0000</pubDate><link>https://github.com/SerenityOS/jakt</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43437752</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43437752</guid></item><item><title><![CDATA[New comment by gw2 in "The internet is killing old PC hardware [video]"]]></title><description><![CDATA[
<p>I find VS Code to be unmanageable for anything beyond a medium sized project. Maybe the LSPs I use are to be blamed, but I find nvim less problematic in this regard.</p>
]]></description><pubDate>Wed, 05 Mar 2025 14:31:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=43266892</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43266892</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43266892</guid></item><item><title><![CDATA[New comment by gw2 in "The internet is killing old PC hardware [video]"]]></title><description><![CDATA[
<p>If the application is free (with no strings attached), I would not really complain. But the main offenders are apps by large companies that have revenues in billions. The problem is that most of the userbase do not complain.</p>
]]></description><pubDate>Wed, 05 Mar 2025 14:25:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=43266807</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43266807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43266807</guid></item><item><title><![CDATA[New comment by gw2 in "The need for memory safety standards"]]></title><description><![CDATA[
<p>Thanks for your reply.<p>> Overwriting function pointers gives code execution under shadow stacks<p>As you are probably aware, there are two kinds of CFI - forward-edge and backward-edge. Forward-edge CFI prevents tampered function pointers, vtables and such from being invoked. Whereas backward-edge CFI protects does the same for return addresses. Clang's and MSVC's (CFG) implementations of CFI only provide forward-edge protection, hence the need for shadow stacks. Without hardware support, shadow stacks can not be prevented from tampered, which is why Intel (CET) and AMD added shadow stacks.<p>> Mobile platforms are very memory sensitive<p>Agreed. I'd guess this applies to embedded too. But all things considered, I do hold the opinion that language-level memory safety is being overplayed a lot.</p>
]]></description><pubDate>Tue, 04 Mar 2025 13:03:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=43253985</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43253985</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43253985</guid></item><item><title><![CDATA[New comment by gw2 in "Ask HN: What less-popular systems programming language are you using?"]]></title><description><![CDATA[
<p>> C# is specifically designed for enterprise-style OOP<p>Then why would they add Span<T>, SIMD types and overhaul ref types in the first place?</p>
]]></description><pubDate>Sun, 02 Mar 2025 11:04:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=43229256</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43229256</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43229256</guid></item><item><title><![CDATA[New comment by gw2 in "Ask HN: What less-popular systems programming language are you using?"]]></title><description><![CDATA[
<p>Sure. Here are some resources:<p>* Span<T>: <a href="https://learn.microsoft.com/en-us/archive/msdn-magazine/2018/january/csharp-all-about-span-exploring-a-new-net-mainstay" rel="nofollow">https://learn.microsoft.com/en-us/archive/msdn-magazine/2018...</a><p>* C# now has a limited borrow checker-like mechanism to safely handle local references: <a href="https://em-tg.github.io/csborrow/" rel="nofollow">https://em-tg.github.io/csborrow/</a><p>* Here is a series of articles on the topic: <a href="https://www.stevejgordon.co.uk/writing-high-performance-csharp-and-dotnet-code" rel="nofollow">https://www.stevejgordon.co.uk/writing-high-performance-csha...</a><p>* In general, avoid enterprise style C# (ie., lots of class and design patterns) and features like LINQ which allocate a lot of temporaries.</p>
]]></description><pubDate>Sun, 02 Mar 2025 10:02:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=43228957</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43228957</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43228957</guid></item><item><title><![CDATA[New comment by gw2 in "Ask HN: What less-popular systems programming language are you using?"]]></title><description><![CDATA[
<p>C#. While a popular language, it is criminally overlooked for high-performance programming. Obviously, you can't use it for embedded or kernel development. For other use cases though, it can almost reach the performance of C/C++/Rust when written with proper care.</p>
]]></description><pubDate>Sun, 02 Mar 2025 05:12:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=43227594</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43227594</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43227594</guid></item><item><title><![CDATA[New comment by gw2 in "The need for memory safety standards"]]></title><description><![CDATA[
<p>I may be wrong, but that issue is specific to PA. Shadow stacks can't be tampered with. Smartphones probably went with PA because shadow stacks require more memory. My use case specifically is targeting desktop/server systems with Clang CFI and Intel CET.<p>Note that I am not very knowledgeable in security, and I am really willing to be educated but it feels like most of the replies to my comments are just trying to prove me wrong.</p>
]]></description><pubDate>Sun, 02 Mar 2025 04:55:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=43227463</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43227463</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43227463</guid></item><item><title><![CDATA[New comment by gw2 in "Ask HN: What less-popular systems programming language are you using?"]]></title><description><![CDATA[
<p>D's "Better C"[1] mode looks like what you describe. Has syntax similar to C with a real module system, metaprogramming, slice types etc.,<p>1 - <a href="https://dlang.org/spec/betterc.html" rel="nofollow">https://dlang.org/spec/betterc.html</a></p>
]]></description><pubDate>Sun, 02 Mar 2025 04:44:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=43227379</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43227379</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43227379</guid></item><item><title><![CDATA[New comment by gw2 in "The need for memory safety standards"]]></title><description><![CDATA[
<p>I am not interested in adhering to some arbitrary purity standard (like "memory safety" in this case). Almost always, purity ideologies are both irrational and harmful. What I am actually interested is to prevent real problems like remote code execution and Heartbleed-esque leakage of private data and for this, mitigations like CFI, shadow stacks and bounds checking are enough.<p>> They prevent but do not entirely mitigate.<p>Ignoring the semantic difference between "prevent" and "mitigate", if at the end of the day, the security provided by the two different approaches are quite similar, I don't get the problem.<p>If you have an example of a successful widespread exploit that would have happened <i>even</i> with these mitigations, please share.</p>
]]></description><pubDate>Thu, 27 Feb 2025 10:52:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=43193190</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43193190</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43193190</guid></item><item><title><![CDATA[New comment by gw2 in "The need for memory safety standards"]]></title><description><![CDATA[
<p>> There are going to be false positives<p>Of course, but compare it with rewriting it to a completely different language.</p>
]]></description><pubDate>Thu, 27 Feb 2025 07:46:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=43192229</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43192229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43192229</guid></item><item><title><![CDATA[New comment by gw2 in "The need for memory safety standards"]]></title><description><![CDATA[
<p>With due respect, the blog you have linked looks like the average Rust marketing material. It does absolutely nothing to address my concerns. I did a `Ctrl-F` and found <i>zero</i> hits of any of the following terms:<p>* CFI<p>* isoheaps or type-stable allocators<p>* Shadow stacks<p>(There is just a single hit of "C++"...)<p>Ignoring the appeal to authority, I have a hard time believing that incrementally rewriting my C++ code in Rust or <i>just</i> writing new code in Rust ("vulnerabilities exponentially decay" and all that) is going to give me more <i>actual security</i> than the mitigations stated above. Most, if not all, high-profile exploits stem from out-of-bounds accesses and type confusions, which these mitigations prevent at very low cost.<p>Thanks for replying, though.</p>
]]></description><pubDate>Thu, 27 Feb 2025 07:44:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=43192218</link><dc:creator>gw2</dc:creator><comments>https://news.ycombinator.com/item?id=43192218</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43192218</guid></item></channel></rss>