<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: mlugg</title><link>https://news.ycombinator.com/user?id=mlugg</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 26 Jun 2026 22:25:29 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mlugg" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mlugg in "Zig's new bitCast semantics and LLVM back end improvements"]]></title><description><![CDATA[
<p>`u3` would be base 8, i.e. octal---I think you meant to use `[400]u6`?<p>Aside from that: I'm not familiar with how standard base64 deals with endianness, so I'm not sure if it would match that, but this `@bitCast` would certainly give you <i>a</i> base64 encoding. But it would probably emit pretty terrible code to do that---our lowering of `@bitCast` isn't really optimized for moving around huge amounts of data in one operation! (But maybe LLVM would surprise me.)</p>
]]></description><pubDate>Fri, 26 Jun 2026 08:07:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48683774</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=48683774</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48683774</guid></item><item><title><![CDATA[New comment by mlugg in "Zig's new bitCast semantics and LLVM back end improvements"]]></title><description><![CDATA[
<p>Uh, no? My writing style just happens to include a lot of em-dashes, as is very common. And it's not like I'm pasting a weird Unicode codepoint all over the place, that's just (rightly) how my Markdown gets rendered...</p>
]]></description><pubDate>Thu, 25 Jun 2026 18:02:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48677068</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=48677068</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48677068</guid></item><item><title><![CDATA[New comment by mlugg in "Zig's new bitCast semantics and LLVM back end improvements"]]></title><description><![CDATA[
<p>I appreciate the kind words :)</p>
]]></description><pubDate>Thu, 25 Jun 2026 16:27:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=48675789</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=48675789</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48675789</guid></item><item><title><![CDATA[Fix Your Asserts]]></title><description><![CDATA[
<p>Article URL: <a href="https://kristoff.it/blog/fix-your-asserts/">https://kristoff.it/blog/fix-your-asserts/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48345525">https://news.ycombinator.com/item?id=48345525</a></p>
<p>Points: 8</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 31 May 2026 13:27:29 +0000</pubDate><link>https://kristoff.it/blog/fix-your-asserts/</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=48345525</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48345525</guid></item><item><title><![CDATA[New comment by mlugg in "Writing a C Compiler, in Zig (2025)"]]></title><description><![CDATA[
<p>> The current interim plan...<p>What do you mean by "interim"? As I explicitly stated in the comment you quoted, it has <i>never</i>, and likely will never, been planned for the Zig compiler to become incapable of using LLVM. The LLVM backend still sees plenty of active development by the core team [0]---that's perfectly compatible with improving the experience of users (including ourselves) by avoiding <i>unnecessary</i> uses of LLVM [1].<p>> ...is for Zig to generate LLVM binary files that can be passed to a separate LLVM instance as part of the build process. Is that "a first-class supported backend target for compilation"? I suppose it's a matter of semantics, but that certainly won't be the current LLVM backend that does LLVM API calls.<p>I think you are incorrectly assuming that we currently make heavy use of the LLVM API. As indicated by #13265 being closed, that is not true. The Zig compiler <i>already</i> generates bitcode by itself, without touching the LLVM API. The only thing we actually use the LLVM API for is feeding that bitcode to LLVM, which can easily be done by invoking a CLI instead. Users quite literally would not be able to tell if, for instance, we changed the compiler to pass the bitcode to Zig's embedded build of Clang over CLI.<p>[0]: <a href="https://ziglang.org/devlog/2026/#2026-04-08" rel="nofollow">https://ziglang.org/devlog/2026/#2026-04-08</a><p>[1]: <a href="https://ziglang.org/download/0.15.1/release-notes.html#x86-Backend" rel="nofollow">https://ziglang.org/download/0.15.1/release-notes.html#x86-B...</a></p>
]]></description><pubDate>Sat, 25 Apr 2026 21:03:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=47904525</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=47904525</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47904525</guid></item><item><title><![CDATA[New comment by mlugg in "Zig 0.16 Milestone Completed"]]></title><description><![CDATA[
<p>> the build for x86_64 Linux failed.<p>Hm, are you referring to the CI failure on the x86_64-linux-release CI job on the current tip of master on the main Zig repository? That one's a flaky test, not indicative of a serious problem. (We usually just disable flaky tests, but this particular one I'm leaving on for the moment to try and gather a little more information about it.)<p>The tarball builds for the 0.16.0 release are still moving along okay: <a href="https://codeberg.org/ziglang/www.ziglang.org/actions/runs/205/jobs/0/attempt/1" rel="nofollow">https://codeberg.org/ziglang/www.ziglang.org/actions/runs/20...</a></p>
]]></description><pubDate>Tue, 14 Apr 2026 07:33:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47762455</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=47762455</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47762455</guid></item><item><title><![CDATA[Incremental Compilation with LLVM]]></title><description><![CDATA[
<p>Article URL: <a href="https://ziglang.org/devlog/2026/#2026-04-08">https://ziglang.org/devlog/2026/#2026-04-08</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47683229">https://news.ycombinator.com/item?id=47683229</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 08 Apr 2026 00:42:08 +0000</pubDate><link>https://ziglang.org/devlog/2026/#2026-04-08</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=47683229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47683229</guid></item><item><title><![CDATA[New comment by mlugg in "Type resolution redesign, with language changes to taste"]]></title><description><![CDATA[
<p>It is indeed (somewhat) related, and in fact that was fixed by this PR: <a href="https://github.com/ziglang/zig/issues/25771" rel="nofollow">https://github.com/ziglang/zig/issues/25771</a></p>
]]></description><pubDate>Wed, 11 Mar 2026 13:45:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47335501</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=47335501</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47335501</guid></item><item><title><![CDATA[New comment by mlugg in "Type resolution redesign, with language changes to taste"]]></title><description><![CDATA[
<p>Oh, no problem at all & no shade of any kind intended! I just wanted to clarify this point since it seems like a good few people got that misconception. That doesn't mean you can't discuss breakage anyway, or ask questions of the development / language design process :)</p>
]]></description><pubDate>Wed, 11 Mar 2026 13:37:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47335421</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=47335421</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47335421</guid></item><item><title><![CDATA[New comment by mlugg in "Type resolution redesign, with language changes to taste"]]></title><description><![CDATA[
<p>Hi, author of this devlog here! Not to dismiss concerns about breaking language changes, but there seems to be a bit of a misconception here that this compiler change was highly breaking and will require significant effort from Zig users to update for. Perhaps I unintentionally gave that impression in the devlog or the PR writeup, apologies if so---but it's not the case! Although there <i>were</i> breaking changes in this patch, they were quite minor: most users are unlikely to hit them, and if they do then they're straightforward to deal with.<p>For a concrete example, while testing this branch, I tried building ZLS (<a href="https://github.com/zigtools/zls/" rel="nofollow">https://github.com/zigtools/zls/</a>). To do that, the only change I had to make was changing `.{}` to `.empty` in a couple of its dependencies (i.e. not even in ZLS itself!). This was needed because I removed some default values from `std.ArrayList` (so the change was in standard library code rather than the language). Those default values had actually already been deprecated (with intent to remove) for around a year, so this wasn't exactly a <i>new</i> change either.<p>As another example, Andrew has updated Awebo (<a href="https://codeberg.org/awebo-chat/awebo" rel="nofollow">https://codeberg.org/awebo-chat/awebo</a>), a text and voice chat application, to the new version of Zig. Across Awebo's <i>entire dependency tree</i> (which includes various packages for graphics, audio, and probably some other stuff), the full set of necessary changes was:<p>* Same as above, change `.{}` to `.empty` in a few places, due to removal of deprecated defaults<p>* Add one extra `comptime` annotation to logic which was constructing an array at comptime<p>* Append `orelse @alignOf(T)` onto an expression to deal with a newly-possible `null` case<p>These are all trivial fixes which Zig developers would be able to do pretty much on autopilot upon seeing the compile errors.<p>So, while there were a handful of small breaking changes, they don't seem to me like a particularly big deal (for a language where some level of breakage is still allowed). The main thing this PR achieved was instead a combination of bugfixes, and enhancements to existing features (particularly incremental compilation).</p>
]]></description><pubDate>Wed, 11 Mar 2026 13:25:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47335273</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=47335273</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47335273</guid></item><item><title><![CDATA[New comment by mlugg in "Ask YN: What CI do you use instead of GitHub Actions?"]]></title><description><![CDATA[
<p>Zig team member here: we've migrated to Forgejo Actions [0], which is a system built into Forgejo (the Git forge used by Codeberg) which is very similar to GitHub Actions. In fact, while 1-to-1 compatibility is a non-goal, it's <i>almost</i> compatible---many GHA workflows will run with minimal (or no!) changes, and most Actions written for GHA will work fine (e.g. my setup-zig Action [1] worked without changes). I don't necessarily love the design of GitHub Actions, and obviously that's all inherited in Forgejo Actions, but the issues I have with GitHub's <i>implementation</i> are pretty much all solved in Forgejo (plus they're receptive to PRs if you do need to improve something!). Codeberg offer a couple of free hosted runners (x86_64-linux), though they have quite aggressive usage limits (understandably, since Codeberg can't just throw money at free compute for everyone!) so self-hosting is probably kind of necessary for big-ish projects. That's pretty easy though: the runner [2] is trivial to build (including cross-compiling) and run, and is on the whole just a much more solid piece of software, so it's already been very painless compared to what it was like to self-host GitHub's runner. On the whole, Forgejo Actions has really just felt like a much more refined and cared-for version of GitHub Actions; I'm quite happy with it so far.<p>[0]: <a href="https://forgejo.org/docs/latest/user/actions/reference/" rel="nofollow">https://forgejo.org/docs/latest/user/actions/reference/</a>
[1]: <a href="https://codeberg.org/mlugg/setup-zig/" rel="nofollow">https://codeberg.org/mlugg/setup-zig/</a>
[2]: <a href="https://code.forgejo.org/forgejo/runner/" rel="nofollow">https://code.forgejo.org/forgejo/runner/</a></p>
]]></description><pubDate>Mon, 01 Dec 2025 12:00:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46106350</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=46106350</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46106350</guid></item><item><title><![CDATA[New comment by mlugg in "Migrating the main Zig repository from GitHub to Codeberg"]]></title><description><![CDATA[
<p>I think this thread caused a bit of a hug of death; I too was seeing pretty bad page loads earlier today, but that seems to have sorted itself out. Understandable imo, because Codeberg simply haven't had to deal with this level of traffic so far. I'm optimistic that they'll be able to scale as (thanks to projects like Zig making the switch) their needs grow.</p>
]]></description><pubDate>Thu, 27 Nov 2025 18:41:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=46072038</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=46072038</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46072038</guid></item><item><title><![CDATA[New comment by mlugg in "Migrating the main Zig repository from GitHub to Codeberg"]]></title><description><![CDATA[
<p>GitHub's API has extremely aggressive rate limits which make migrating large numbers of existing issues and PRs off of the platform borderline impossible. AIUI, this is why Gitea's main repo is on GitHub: they couldn't figure out a way to cleanly migrate! The tinfoil hat in me absolutely sees this as an attempt at vendor lock-in on GitHub's end.</p>
]]></description><pubDate>Thu, 27 Nov 2025 15:29:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=46070123</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=46070123</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46070123</guid></item><item><title><![CDATA[New comment by mlugg in "Migrating the main Zig repository from GitHub to Codeberg"]]></title><description><![CDATA[
<p>Forgejo Actions is what Zig has migrated to. It's very similar to GitHub Actions; the downside of that is that you inherit questionable design choices, but the big upside is that migration is super easy. While they don't target 1:1 compatibility, things are similar enough that you basically only need to tweak workflow files very slightly. Our experience so far is that it fixes most of our serious problems with GitHub Actions; in particular, their runner software is significantly easier to deploy and configure, has much better target support (GitHub's runner is essentially impossible to use outside of x86_64/aarch64 linux/windows/macos; we tried to patch it to support riscv64-linux and got stuck on some nonsensical problems on GitHub's side!), and actually accepts contributions & responds to issues. My issues with the GitHub Actions' backend & web interface (of which I have <i>many</i>) are pretty much all gone, too, with no new issues taking their place.</p>
]]></description><pubDate>Thu, 27 Nov 2025 08:17:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=46066985</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=46066985</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46066985</guid></item><item><title><![CDATA[New comment by mlugg in "Migrating the main Zig repository from GitHub to Codeberg"]]></title><description><![CDATA[
<p>This is extremely misleading. "Membership" is about direct contribution to and influence over the non-profit; it'd be somewhat analagous to being a GitHub shareholder. The very first question on Codeberg's FAQ [0] makes this abundantly clear, as does the "Join" page [1]. I don't see any part of the website you could go to to get any other impression.<p>[0]: <a href="https://docs.codeberg.org/getting-started/faq/#what-do-i-need-to-use-codeberg%3F" rel="nofollow">https://docs.codeberg.org/getting-started/faq/#what-do-i-nee...</a><p>[1]: <a href="https://join.codeberg.org/" rel="nofollow">https://join.codeberg.org/</a></p>
]]></description><pubDate>Thu, 27 Nov 2025 03:43:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46065349</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=46065349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46065349</guid></item><item><title><![CDATA[New comment by mlugg in "Migrating the main Zig repository from GitHub to Codeberg"]]></title><description><![CDATA[
<p>This was the very first thing I noticed when we (the Zig team) started seriously trialing Codeberg. Honestly, the transition was worth it just for the ability to navigate the website without a 3-5 second wait every time I click a link.</p>
]]></description><pubDate>Thu, 27 Nov 2025 03:20:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46065206</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=46065206</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46065206</guid></item><item><title><![CDATA[New comment by mlugg in "Migrating the main Zig repository from GitHub to Codeberg"]]></title><description><![CDATA[
<p>> This has been pointed out to them many times, and it's seemingly not something they're willing to fix.<p>On the exact page you're on is a link to an issue [0] acknowledging that the CAPTCHA is inaccessible and expressing that they plan to drop it (albeit with no concrete time-frame). I don't at all understand your argument that Codeberg must be slow at replying to emails (the "manual fallback path") because Wikimedia are; these are two completely unrelated entities and I don't see why you would make inferences about one from the other.<p>[0]: <a href="https://codeberg.org/Codeberg/Community/issues/1797" rel="nofollow">https://codeberg.org/Codeberg/Community/issues/1797</a></p>
]]></description><pubDate>Thu, 27 Nov 2025 03:17:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=46065186</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=46065186</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46065186</guid></item><item><title><![CDATA[New comment by mlugg in "Migrating the main Zig repository from GitHub to Codeberg"]]></title><description><![CDATA[
<p>Yeah, that's actually what we've done on the Zig GitHub repository. However, it doesn't stop pushes to existing PRs, which isn't ideal; and, yes, it's quite hard to escape the conclusion that there being no "until I turn it back on" option is intentional.</p>
]]></description><pubDate>Thu, 27 Nov 2025 03:08:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=46065129</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=46065129</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46065129</guid></item><item><title><![CDATA[New comment by mlugg in "Migrating the main Zig repository from GitHub to Codeberg"]]></title><description><![CDATA[
<p>PRs are not optional: there is no way to disable them on GitHub. I can't be sure that this is intentional, but it certainly works out well for them that this is one of many properties which make it quite difficult to migrate away from the platform.</p>
]]></description><pubDate>Thu, 27 Nov 2025 02:45:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=46064980</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=46064980</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46064980</guid></item><item><title><![CDATA[Actions/runner: safe_sleep.sh rarely hangs indefinitely]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/actions/runner/issues/3792">https://github.com/actions/runner/issues/3792</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44925731">https://news.ycombinator.com/item?id=44925731</a></p>
<p>Points: 5</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 16 Aug 2025 18:20:11 +0000</pubDate><link>https://github.com/actions/runner/issues/3792</link><dc:creator>mlugg</dc:creator><comments>https://news.ycombinator.com/item?id=44925731</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44925731</guid></item></channel></rss>