<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: destructionator</title><link>https://news.ycombinator.com/user?id=destructionator</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 04 Aug 2026 02:51:52 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=destructionator" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by destructionator in "DConf 2026 in London"]]></title><description><![CDATA[
<p>"custom druntimes" is not helpful for the vast, vast majority of programs.<p>but maybe this is the first step toward something more useful.</p>
]]></description><pubDate>Thu, 30 Jul 2026 00:18:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=49104743</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=49104743</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49104743</guid></item><item><title><![CDATA[New comment by destructionator in "DConf 2026 in London"]]></title><description><![CDATA[
<p>The null check thing is actually really interesting cuz Rikki upstreamed the dmd impl but nobody's touched the ldc impl yet upstream. (I merged dmd and ldc in opend pretty early just because I had to reduce friction to make it all maintainable long term and that has indeed been a big win, I don't think either the null or objec things would have happened without streamlining the dev work like this)<p>My experience was the ldc impl was MUCH easier.... and optimizes much better, no surprise, but also compiled WAY slower. On dmd, the null checks barely affected compile speeds at all, but on ldc, the runtime impact isn't bad... but the compile time hit is ENORMOUS. I didn't even notice it at first, because I mostly use ldc just for cross compiles (another thing opend makes easy, `opend install xpack-win64` for example makes Windows builds just work, and it can do icons built in without third party toolchain as well, something hipreme took to upstream via his redub program that copied my implementation. he then added similar for Mac but I havent' pulled that back to opend yet, i will though) and I misdiagnosed.<p>Went looking for why the compile times were so much worse in opend ldc vs upstream (and btw note my definition of "so much worse" is like 3 seconds instead of 2 seconds, 50% is signifcant) and tried PGO and diffs in codegen and llvm versions...... then realized no, it is the null checks.<p>So the ldc implementation was easy and seems bug free (the bugs rikki fixed were in obscure corners of dmd's backend), and it optimizes well for runtime..... but wow it takes its sweet time to do that optimization. I'd appreciate someone else taking a look at that some day since there might be some better way to do it than I did (i basically copied the RangeError implementation on pointers for null check).<p>But I expect some day it'll come and then hopefully we'll make both of our compilers better.</p>
]]></description><pubDate>Tue, 28 Jul 2026 21:29:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=49090169</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=49090169</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49090169</guid></item><item><title><![CDATA[New comment by destructionator in "DConf 2026 in London"]]></title><description><![CDATA[
<p>> Not to get too personal, but why would you continue to invest so much time in the language if upstream isn't accommodating?<p>Sunk cost fallacy lol. I got on the D train back in 2006 and of those half million lines of code I'm responsible for maintaining, about a quarter million are my own. A lot of work to make that... I have my own, from scratch: gui toolkit, terminal emulator, games, spreadsheet, web apps, shell, scriptable calculator, and more. Mostly mine but using libraries or ported third party code sometimes: music players, web browsers (one is from scratch but not terribly functional, one using chromimum libraries I'm typing this comment on right now), window manager, taskbar, the list goes on.<p>My whole daily work environment is made out of D code. And yeah, sure, there's alternatives, but I like <i>mine</i>. And a lot of it is making the apis cute. For example, I wanted to add a menu option to reset something in one of my programs last week. So I opened the code and wrote<p>```
@menu("&Query") @accelerator("Ctrl+R")
void Load_Default() {
    query.content = readTextFile("default.txt");
    variables.content = "{}";
}
```<p>It recompiled in about a second and a half and just like that, I can press ctrl+r to reload the defaults, or click  Query -> Load Default in the menu (or alt+q and keyboard to it etc). My gui library takes care of a lot of things so I just write some functionality as-needed and use it a few seconds later.<p>Can I do that with Microsoft Excel? excel is a useful program too, but it takes longer to just load than it takes me to change the code, recompile, and relaunch my spreadsheet program lol.<p>Could I port all this stuff to other languages? Maybe. But it is less work to just maintain a stable fork of the compiler lol. (at the risk of getting flagged for being a troll again, I feel the same way about wayland... easier to maintain xorg, a program i haven't even restarted for <i>years</i>, than to rewrite the whole ecosystem.)<p>And that's the key point too, I do generally think the D language is mostly good enough as-is, so if I never committed another line of code to it, I'd still find it good enough. But it is nice if I do hit a language/compiler problem I can just fix it too.</p>
]]></description><pubDate>Tue, 28 Jul 2026 15:16:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=49085210</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=49085210</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49085210</guid></item><item><title><![CDATA[New comment by destructionator in "DConf 2026 in London"]]></title><description><![CDATA[
<p>Upstream has followed several of opend's innovations: we shipped interpolated expressions on day one of the fork (that was the straw that broke the camel's back) and then, after 7 years of procrastination, upstream also merged it a week later. We shipped extern(Objective-C) support, upstream backported it (and actually fixed enough bugs that I replaced my original impl with their's) a few months later. Upstream has talked about "safe by default" for over nine years. We shipped "safer by default" as a compromise (full safe by default is too much of a breaking change) a few months after forking, then a few months after we shipped it, upstream announced their own "safer by default" switch (which you have to opt into, so they kinda missed the point of "by default" but still, they followed the overall concept). For basically ever, Walter has said null checks in the language were a hard no, we implemented them and then.... guess what, a few months later, my implementation was backported (and again, a few bugs fixed so i appreciate the collaboration when we can get it) and walter decided to allow the merge. Opend shipped druntime on webassembly, looks like something similar coming to upstream. We merged the tuple destructuring PR (that was open for years again so the author was happy to get it to land somewhere!)  and upstream followed there too.<p>There's a lot of smaller things that haven't been pulled though, like i merged a bug fix to module naming, which was an upstream PR from like 2018, a fix on library file name generation, a regression from 2019 but has a trivial workaround, a fix to redefined reflection names which everyone finds annoying, the implementation was written in 2017, but they had endless debates about syntax and i just made an executive decision and moved on but they still bikeshed... stuff like that, they're all little things but minor annoyances every time you hit them and the fixes were easy, so just do it!<p>Then the two bigger things I did they have talked about but probably won't do is i made the class monitor opt-in, this is a relatively big breaking change, I had to do fixes on 8 different projects. Each one took a few minutes, so not a huge deal, but still. They talked about this in an upstream meeting but decided against taking it (for now at least).<p>And then I changed the default init of all built in types to zero, including char and float, and this is controversial since float init to nan has legitimate advantages, and the breakage can be subtle if you don't catch it. I was on the fence personally, it more like a 51-49 vote rather than an obvious bug fix, but it is easier to explain to newbies that int and float both init to 0. In theory, you are supposed to explicitly initialize all these all the time, but in practice we know it is different.<p>So I think the competitive edge is pushing them a little. And I'm not anti-collaboration; I write blogs about my implementations with the hope that they'll give a little code review and that's been semi-successful, like the upstream backporters have indeed fixed bugs in my implementations so I'm happy to share back and forth, we both win that way.</p>
]]></description><pubDate>Tue, 28 Jul 2026 14:57:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=49084919</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=49084919</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49084919</guid></item><item><title><![CDATA[New comment by destructionator in "DConf 2026 in London"]]></title><description><![CDATA[
<p>I have no confidence left in the leadership of old D. This is an example: porting druntime to emscripten wasn't actually that hard to do, I did it in about a week of spare time in between kid and day job. Their solution, in so much as they pay attention to it at all, is to just point at betterC which remains half-assed for about a decade now (search my blog archives, here's one with them talking about "A betterC standard library" from December 2016 - <a href="https://arsdnet.net/this-week-in-d/2016-dec-18.html" rel="nofollow">https://arsdnet.net/this-week-in-d/2016-dec-18.html</a> - and none of that has materialized ).<p>You might say if it is so easy, why not do it upstream? It takes <i>years</i> of political arguments and random ghosting to get anything done up there, all while constant (regression inducing) code churn breaks your PRs every other month, so you spend 3x the time rebasing than you ever spent writing the implementation before it is merged...... if it ever gets merged at all. I have several successful contributions to upstream D, it happens, but most the work done there is ignored. You might get some encouraging forum replies, but when it comes time to ship it? Crickets. Several former D contributors jumped ship for Zig many years ago, and it was a real loss for us (and real gain for them).<p>With the opend, I know if it works and delivers real world value, I can ship a release, dmd and ldc together, so minimal duplicated waste work.<p>What should you use? idk, opend is basically my pet project, provided in the hope that it will be useful, but THIS SOFTWARE IS PROVIDED `'AS IS″ AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE so your mileage may vary. Still, I maintain about a half million lines of code, some of which is quite old, so keeping some stability is important to me while moving forward with select common-sense, incremental improvements. Most D code works fine either way though, I've done web programming a long time, in the old school tradition, so words like "progressive enhancement" and "graceful degradation" are meaningful to me, even when being a compiler maintainer.</p>
]]></description><pubDate>Tue, 28 Jul 2026 02:01:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=49078333</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=49078333</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49078333</guid></item><item><title><![CDATA[New comment by destructionator in "DConf 2026 in London"]]></title><description><![CDATA[
<p>we shipped druntime on emscripten on the opend side almost two years ago, supporting everything but threads and exceptions (i tested on emcc 3.1.69, i heard a later version of emscripten broke, im not sure). see my blog post from release time: <a href="https://dpldocs.info/this-week-in-arsd/Blog.Posted_2024_10_25.html" rel="nofollow">https://dpldocs.info/this-week-in-arsd/Blog.Posted_2024_10_2...</a><p>there's a contributor working with both upstream and opend adding wasi support as well, and he also got exception support working, we'll probably ship that next month.<p>so the full d story on wasm is progressing too.</p>
]]></description><pubDate>Tue, 28 Jul 2026 01:17:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=49078046</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=49078046</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49078046</guid></item><item><title><![CDATA[New comment by destructionator in "D Programming Language"]]></title><description><![CDATA[
<p>OpenD added almost-full (you can't catch exceptions or spawn threads, so not really full, but the GC and such work fine) wasm support with like .... i think it was less than one day of work. wasm sucks though, what a miserable platform.</p>
]]></description><pubDate>Thu, 12 Feb 2026 17:16:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=46991624</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=46991624</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46991624</guid></item><item><title><![CDATA[New comment by destructionator in "Features of D That I Love"]]></title><description><![CDATA[
<p>> D2 re-write<p>No such thing happened. D has always been built on the same codebase, and the labels "D1" and "D2" are just arbitrary points on a mostly linear evolution (in fact, the tags D 1.0 and D 2.0 came only 6 months apart; 1.0 was just meant to be a long term support branch, not a different language. It was the addition of `const` that broke most code around release 2.6 but if you update those, old and new compilers generally work.<p>I'd say where D failed was its insistence on chasing every half-baked trend that someone comments on Hacker News. Seriously, look at this very thread, Walter is replying to thing after thing saying "D has this too!!" nevermind if it actually is valuable irl or not.</p>
]]></description><pubDate>Thu, 03 Jul 2025 14:55:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44455699</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=44455699</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44455699</guid></item><item><title><![CDATA[New comment by destructionator in "Features of D That I Love"]]></title><description><![CDATA[
<p>that actually wasn't its intended use; that's a side effect. The original intended use came from Effective C++ by Scott Meyers: "Prefer non-member non-friend functions to member functions.". It was meant to make that as syntactically appealing as the members.</p>
]]></description><pubDate>Thu, 03 Jul 2025 02:42:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=44451127</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=44451127</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44451127</guid></item><item><title><![CDATA[New comment by destructionator in "Features of D That I Love"]]></title><description><![CDATA[
<p>The D parts of the compiler were released under the GPL from almost the beginning, since 2002. By 2004, a full open source compiler - what we now call gdc, officially part of gcc - was released using this GPL code. D was pretty popular in these years.</p>
]]></description><pubDate>Wed, 02 Jul 2025 22:25:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=44449491</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=44449491</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44449491</guid></item><item><title><![CDATA[New comment by destructionator in "Features of D That I Love"]]></title><description><![CDATA[
<p>Just a personal anecdote, Walter Bright's Digital Mars C++ compiler also had the contracts (D started life almost literally as recycled code from Mr. Bright's other compilers - he wrote a native Java compiler, a Javascript 1.3 stdlib, and a C++ compiler with a bunch of extensions.... smash those together and you have the early D releases!).<p>Anyway, I used the DM C++ compiler originally because it was the only one I could download to the high school computers without filling out a form, and pimply-face youth me saw "DESIGN BY CONTRACT" at the top of the website and got kinda excited thinking it was a way to make some easy money coding online.<p>Imagine my disappointment when I saw it was just in/out/invariant/assert features. (I'm pretty sure D had just come out when I saw that, but I saw `import` instead of `#include` and dismissed it as a weenie language. Came back a couple years later and cursed my younger self for being a fool! lol)</p>
]]></description><pubDate>Wed, 02 Jul 2025 22:08:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=44449366</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=44449366</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44449366</guid></item><item><title><![CDATA[New comment by destructionator in "ICANN fee price hike by 11% [pdf]"]]></title><description><![CDATA[
<p>lol "11%" i guess sounds a lot bigger than "two cents".</p>
]]></description><pubDate>Fri, 06 Jun 2025 00:23:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=44196798</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=44196798</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44196798</guid></item><item><title><![CDATA[New comment by destructionator in "Programmers want flow. when programming, light turns RED"]]></title><description><![CDATA[
<p>I work from home with a young child. I think if I put a sign up, it'd just prompt more questions from her lol</p>
]]></description><pubDate>Mon, 16 Dec 2024 00:18:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=42426927</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=42426927</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42426927</guid></item><item><title><![CDATA[New comment by destructionator in "Ask HN: Does anyone use sound effects in their dev environment?"]]></title><description><![CDATA[
<p>Use the ascii bell character "\a" and turn off the "visual bell" or whatever options in the terminal (I hate those things) so you can actually hear it beep and find joy.</p>
]]></description><pubDate>Mon, 16 Sep 2024 15:54:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=41557355</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=41557355</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41557355</guid></item><item><title><![CDATA[New comment by destructionator in "I Hate the Term "Modern""]]></title><description><![CDATA[
<p>so does modern. so the same author who hates the term modern uses neo - synonomous with modern for all practical purposes - vim and mutt. why is that? might those reasons also apply to other "modern" things?</p>
]]></description><pubDate>Thu, 29 Aug 2024 00:42:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=41386031</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=41386031</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41386031</guid></item><item><title><![CDATA[New comment by destructionator in "I Hate the Term "Modern""]]></title><description><![CDATA[
<p>What I find offensive about this post is using "neo"vim and neomutt. what, was original AgentSmithMutt and TrinityVim not good enough? ...Is it because they're old?<p>Well anyway, I mostly agree with this post. Another similar thing I hate to see is things like "Really? In 2024?" and im just like that's the laziest critique of something ever.</p>
]]></description><pubDate>Wed, 28 Aug 2024 21:23:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=41384548</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=41384548</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41384548</guid></item><item><title><![CDATA[New comment by destructionator in "Emotional about X11: I'm creating a pure X11 “emoji keyboard”"]]></title><description><![CDATA[
<p>The recent push to Wayland in 2024 is an interesting choice, given how productive and usable X11 is.</p>
]]></description><pubDate>Wed, 07 Aug 2024 13:25:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=41181234</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=41181234</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41181234</guid></item><item><title><![CDATA[New comment by destructionator in "The hunt for the most efficient heat pump in the world"]]></title><description><![CDATA[
<p>I'd buy that for a dollar!</p>
]]></description><pubDate>Thu, 04 Jul 2024 17:25:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=40876570</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=40876570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40876570</guid></item><item><title><![CDATA[New comment by destructionator in "The hunt for the most efficient heat pump in the world"]]></title><description><![CDATA[
<p>> It only takes a little electricity to power this process, which can raise the refrigerant’s temperature by many degrees Celsius.<p>And the same electricity can raise the temperature by <i>even more</i> degrees Fahrenheit!</p>
]]></description><pubDate>Thu, 04 Jul 2024 13:12:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=40874682</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=40874682</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40874682</guid></item><item><title><![CDATA[New comment by destructionator in "Microfeatures I love in blogs and personal websites"]]></title><description><![CDATA[
<p>> In years of doing this not a single person has ever complained<p>I've never used your website, but if I did and the side arrow changed things, I'd immediately close it and never come back. You wouldn't get a complaint from me; you'd just lose me instantly and permanently.<p>It drives me absolutely nuts when sites do this, it is so disorienting.</p>
]]></description><pubDate>Mon, 24 Jun 2024 12:37:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=40775293</link><dc:creator>destructionator</dc:creator><comments>https://news.ycombinator.com/item?id=40775293</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40775293</guid></item></channel></rss>