<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: 0xjnml</title><link>https://news.ycombinator.com/user?id=0xjnml</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 01 May 2026 21:12:21 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=0xjnml" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by 0xjnml in "Show HN: Gova – The declarative GUI framework for Go"]]></title><description><![CDATA[
<p>Shameless plug: <a href="https://pkg.go.dev/modernc.org/tk9.0" rel="nofollow">https://pkg.go.dev/modernc.org/tk9.0</a></p>
]]></description><pubDate>Sat, 25 Apr 2026 13:52:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47901570</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=47901570</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47901570</guid></item><item><title><![CDATA[New comment by 0xjnml in "[dead]"]]></title><description><![CDATA[
<p>The results for the 26.03 benchmark run are in. (golang)<p>With the recent release of ncruces' drive switching from wazero to wasm2go, there have been expectations of possibly substantial improvements. Our numbers confirm this: the wasm2go-based driver (ncruces) has recovered significant ground compared to the February results, narrowing the gap with its competitors. The driver erased its worse performance on targets not natively supported by wazero. Well done, u/ncruces!</p>
]]></description><pubDate>Fri, 27 Mar 2026 09:06:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=47540456</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=47540456</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47540456</guid></item><item><title><![CDATA[New comment by 0xjnml in "[dead]"]]></title><description><![CDATA[
<p>CGo-free as always. See CHANGELOG.md for details.<p><a href="https://gitlab.com/cznic/sqlite/-/blob/master/CHANGELOG.md" rel="nofollow">https://gitlab.com/cznic/sqlite/-/blob/master/CHANGELOG.md</a></p>
]]></description><pubDate>Tue, 17 Mar 2026 13:55:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47412745</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=47412745</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47412745</guid></item><item><title><![CDATA[New comment by 0xjnml in "Defer available in gcc and clang"]]></title><description><![CDATA[
<p>> I wonder what the thought process of the Go designers was when coming up with that approach.<p>Sometimes we need block scoped cleanup, other times we need the function one.<p>You can turn the function scoped defer into a block scoped defer in a function literal.<p>AFAICT, you cannot turn a block scoped defer into the function one.<p>So I think the choice was obvious - go with the more general(izable) variant. Picking the alternative, which can do only half of the job, would be IMO a mistake.</p>
]]></description><pubDate>Fri, 20 Feb 2026 12:17:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=47087094</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=47087094</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47087094</guid></item><item><title><![CDATA[New comment by 0xjnml in "[dead]"]]></title><description><![CDATA[
<p>I wrote a post exploring egg, a new tool that generates recursive descent parsers from Go-style EBNF. The most interesting feature is that it doesn't generate struct nodes; it encodes the AST into a flat []int32 slice for cache locality and reduced GC pressure. I included a walkthrough of generating a JSON parser with it.</p>
]]></description><pubDate>Fri, 30 Jan 2026 19:16:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=46828617</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=46828617</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46828617</guid></item><item><title><![CDATA[New comment by 0xjnml in "The coming industrialisation of exploit generation with LLMs"]]></title><description><![CDATA[
<p>See <a href="https://pkg.go.dev/modernc.org/quickjs" rel="nofollow">https://pkg.go.dev/modernc.org/quickjs</a></p>
]]></description><pubDate>Wed, 21 Jan 2026 11:41:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=46704282</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=46704282</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46704282</guid></item><item><title><![CDATA[New comment by 0xjnml in "Golang's big miss on memory arenas"]]></title><description><![CDATA[
<p>> If you really want an arena like behavior you could allocate a byte slice and use unsafe to cast it to literally any type.<p>Only if the type is not a pointer per se or does not contain any inner pointers.<p>Otherwise the garbage collector will bite you hard.</p>
]]></description><pubDate>Thu, 11 Dec 2025 12:18:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46230458</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=46230458</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46230458</guid></item><item><title><![CDATA[New comment by 0xjnml in "The Green Tea Garbage Collector"]]></title><description><![CDATA[
<p>YouTube is one such.</p>
]]></description><pubDate>Thu, 30 Oct 2025 16:31:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=45761890</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=45761890</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45761890</guid></item><item><title><![CDATA[New comment by 0xjnml in "Qbecc – QBE based C compiler"]]></title><description><![CDATA[
<p>Documentation for the QBE IL is here: <a href="https://c9x.me/compile/doc/il.html" rel="nofollow">https://c9x.me/compile/doc/il.html</a><p>I find it quite usable.</p>
]]></description><pubDate>Tue, 21 Oct 2025 09:46:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45654067</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=45654067</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45654067</guid></item><item><title><![CDATA[New comment by 0xjnml in "Qbecc – QBE based C compiler"]]></title><description><![CDATA[
<p>Maintainer here, AMA.</p>
]]></description><pubDate>Fri, 03 Oct 2025 14:06:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=45463181</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=45463181</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45463181</guid></item><item><title><![CDATA[Show HN: Qbecc is a C compiler producing Go(Golang) ABI0 assembler]]></title><description><![CDATA[
<p>The resulting assembler code runs on standard Go movable stacks. This is another way how to avoid the cost of CGo Go<->C context switch. However, as no silver bullets exist, the cost of running on movable stacks is not gone in full. It have shifted to the additional handling of goroutine-local allocations for addressable local variables.<p>The purpose of this experiment is to compare the modernc.org/ccgo/v4 and qbecc approaches with respect to resulting performance differences, if any.<p>The proof of concept has reached v0.1.0.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45451531">https://news.ycombinator.com/item?id=45451531</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 02 Oct 2025 16:06:30 +0000</pubDate><link>https://pkg.go.dev/modernc.org/qbecc</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=45451531</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45451531</guid></item><item><title><![CDATA[New comment by 0xjnml in "New email protocol for user-triggered email forwarding (anti-SCAM)"]]></title><description><![CDATA[
<p>You took the wrong exit, sir. This is the right way: <a href="https://en.wikipedia.org/wiki/Request_for_Comments" rel="nofollow">https://en.wikipedia.org/wiki/Request_for_Comments</a></p>
]]></description><pubDate>Sat, 30 Aug 2025 14:12:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=45074856</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=45074856</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45074856</guid></item><item><title><![CDATA[New comment by 0xjnml in "Comparing Golang SQLite to C SQLite"]]></title><description><![CDATA[
<p>> The page you linked compares golang bindings against each other, not C against golang like my test did<p>No one disputed that. But it follows that your benchmarks are comparing C to [some very] outdated versions of Go packages. Which is what I tried to point out.</p>
]]></description><pubDate>Sat, 21 Jun 2025 13:52:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44337623</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=44337623</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44337623</guid></item><item><title><![CDATA[New comment by 0xjnml in "Comparing Golang SQLite to C SQLite"]]></title><description><![CDATA[
<p>It seems you're using some old Go package versions for your benchmarks.<p>See <a href="https://pkg.go.dev/modernc.org/sqlite-bench#readme-tl-dr-scorecard" rel="nofollow">https://pkg.go.dev/modernc.org/sqlite-bench#readme-tl-dr-sco...</a> for the numbers using the more recent versions.</p>
]]></description><pubDate>Fri, 20 Jun 2025 10:49:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=44326500</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=44326500</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44326500</guid></item><item><title><![CDATA[New comment by 0xjnml in "Show HN: Pure Go QuickJS JavaScript engine (Golang)"]]></title><description><![CDATA[
<p>It is transpiled from C to Go, meaning 90+% of the effort is mechanized.<p>Ad performance. In some micro benchmarks the Go version is ~4x slower: <a href="https://gitlab.com/cznic/libquickjs/-/blob/675ee343753c42341572a006a09fca6fbb4b003c/benchmark_test.go#L19" rel="nofollow">https://gitlab.com/cznic/libquickjs/-/blob/675ee343753c42341...</a><p>However, it's already ~25% faster, in a different benchmark, than another Go JS VM written from scratch: <a href="https://pkg.go.dev/modernc.org/quickjs@v0.14.0#hdr-Performance" rel="nofollow">https://pkg.go.dev/modernc.org/quickjs@v0.14.0#hdr-Performan...</a><p>I am currently looking around if it can be improved more and there are some ideas to try out.</p>
]]></description><pubDate>Tue, 13 May 2025 08:23:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=43970734</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=43970734</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43970734</guid></item><item><title><![CDATA[Show HN: Pure Go QuickJS JavaScript engine (Golang)]]></title><description><![CDATA[
<p>Package quickjs is a pure Go embeddable Javascript engine. It supports the ECMA script 14 (ES2023) specification including modules, asynchronous generators, proxies and BigInt.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43962304">https://news.ycombinator.com/item?id=43962304</a></p>
<p>Points: 5</p>
<p># Comments: 3</p>
]]></description><pubDate>Mon, 12 May 2025 12:43:42 +0000</pubDate><link>https://pkg.go.dev/modernc.org/quickjs</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=43962304</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43962304</guid></item><item><title><![CDATA[New comment by 0xjnml in "Layered Design in Go"]]></title><description><![CDATA[
<p>go.mod files have no dependencies, so neither they can have circular dependencies.<p>go.mod files just list the dependencies of their respective package.</p>
]]></description><pubDate>Tue, 22 Apr 2025 11:34:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=43760927</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=43760927</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43760927</guid></item><item><title><![CDATA[Show HN: The SQLite Drivers 25.04 Benchmarks Game (Golang)]]></title><description><![CDATA[
<p>Changes since 25.03 (<a href="https://pkg.go.dev/modernc.org/sqlite-bench@v1.0.0#readme-tl-dr-scorecard" rel="nofollow">https://pkg.go.dev/modernc.org/sqlite-bench@v1.0.0#readme-tl...</a>)<p>- No changes in ranking.<p>- Scorecard changes:<p><pre><code>    - modernc: -3 points
    - mattn: -7 points
    - ncruces: +10 points</code></pre></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43580893">https://news.ycombinator.com/item?id=43580893</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 04 Apr 2025 11:49:22 +0000</pubDate><link>https://pkg.go.dev/modernc.org/sqlite-bench</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=43580893</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43580893</guid></item><item><title><![CDATA[The SQLite Drivers 25.03 Benchmarks Game (Golang)]]></title><description><![CDATA[
<p>Article URL: <a href="https://pkg.go.dev/modernc.org/sqlite-bench">https://pkg.go.dev/modernc.org/sqlite-bench</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43533022">https://news.ycombinator.com/item?id=43533022</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 31 Mar 2025 09:43:14 +0000</pubDate><link>https://pkg.go.dev/modernc.org/sqlite-bench</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=43533022</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43533022</guid></item><item><title><![CDATA[Go Is DOOMed]]></title><description><![CDATA[
<p>Article URL: <a href="https://pkg.go.dev/modernc.org/doomgeneric">https://pkg.go.dev/modernc.org/doomgeneric</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43379930">https://news.ycombinator.com/item?id=43379930</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 16 Mar 2025 15:47:59 +0000</pubDate><link>https://pkg.go.dev/modernc.org/doomgeneric</link><dc:creator>0xjnml</dc:creator><comments>https://news.ycombinator.com/item?id=43379930</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43379930</guid></item></channel></rss>