<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: wren6991</title><link>https://news.ycombinator.com/user?id=wren6991</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 03 May 2026 17:50:30 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=wren6991" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by wren6991 in "VS Code inserting 'Co-Authored-by Copilot' into commits regardless of usage"]]></title><description><![CDATA[
<p>> There was no ill intent by evil corporation<p>I simply do not believe you</p>
]]></description><pubDate>Sun, 03 May 2026 06:28:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47993983</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47993983</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47993983</guid></item><item><title><![CDATA[New comment by wren6991 in "A Dumb Introduction to Z3 (2025)"]]></title><description><![CDATA[
<p>One of two cases: pushing Verilog through yosys-smtbmc to check design assertions/properties, or writing a lil Python model of some optimisation trick and checking it's equivalent to a more direct implementation.<p>For the former it's useful when there's already a well-defined contract at some interface, like "this bus interface follows these basic AHB5 manager rules" or "if x_valid is asserted, it remains asserted until x_ready is asserted, and the other x_foobar are stable during that time" or "a FIFO is never both empty and full".<p>Simple properties + exhaustive checking is good bang-for-buck because it often teases out subtle tangential issues without having to write checks for implementation details. This isn't "formal verification" per se but using formal checks in a lightweight way to help find bugs and inconsistencies in your design.</p>
]]></description><pubDate>Sat, 18 Apr 2026 19:54:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47818996</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47818996</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47818996</guid></item><item><title><![CDATA[New comment by wren6991 in "A Dumb Introduction to Z3 (2025)"]]></title><description><![CDATA[
<p>Z3 struggles with larger problems. CVC5 or Bitwuzla do a lot better once you get into anything complex.<p>If you're familiar with the Z3 Python API, you'll find the CVC5 one familiar.<p>Caveat: I mostly do logic design, maybe there are some software verification tasks where Z3 comes out ahead. I've never seen one though.</p>
]]></description><pubDate>Sat, 18 Apr 2026 12:51:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=47815522</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47815522</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47815522</guid></item><item><title><![CDATA[New comment by wren6991 in "A simplified model of Fil-C"]]></title><description><![CDATA[
<p>You need to distinguish safety properties from liveness properties.</p>
]]></description><pubDate>Sat, 18 Apr 2026 02:36:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47812682</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47812682</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47812682</guid></item><item><title><![CDATA[New comment by wren6991 in "A Git helper tool that breaks large merges into parallelizable tasks"]]></title><description><![CDATA[
<p>Brought to you by classics like "how do I join all of these pthreads that I've detached?"</p>
]]></description><pubDate>Fri, 17 Apr 2026 11:24:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=47804721</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47804721</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47804721</guid></item><item><title><![CDATA[New comment by wren6991 in "中文 Literacy Speedrun II: Character Cyclotron"]]></title><description><![CDATA[
<p>> I decided to go against the grain of the near-universal advice to "learn to read by reading".<p>...Why? That advice is universal for a reason. The side adventure with Claude Code strikes me as a distraction from the fact that there is a hard thing you want to do but are avoiding because it's hard.</p>
]]></description><pubDate>Fri, 17 Apr 2026 11:20:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47804690</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47804690</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47804690</guid></item><item><title><![CDATA[New comment by wren6991 in "Qwen3.6-35B-A3B: Agentic coding power, now open to all"]]></title><description><![CDATA[
<p>On M5 Pro/Max the memory is actually just attached straight to the GPU die. CPU accesses memory through the die-to-die bridge. I don't see the difference between that and a pure GPU from a memory connectivity point of view.<p>Wrt inference servers: sure, it's not cost-effective to have such a huge CPU die and a bunch of media accelerators on the GPU die if you just care about raw compute for inference and training. Apple SoCs are not tuned for that market, nor do they sell into it. I'm not building a datacentre, I'm trying to run inference on my home hardware that I also want to use for other things.</p>
]]></description><pubDate>Fri, 17 Apr 2026 03:25:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=47802169</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47802169</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47802169</guid></item><item><title><![CDATA[New comment by wren6991 in "Mark's Magic Multiply"]]></title><description><![CDATA[
<p>Yeah, it feels intuitively like it should work, but even with full 64-bit modular multiply the bounds don't overlap. I should probably delete that sentence, but on the other hand maybe the wild goose chase will lead to someone finding a better trick. For now my double-precision multiply is just direct expansion.</p>
]]></description><pubDate>Mon, 13 Apr 2026 18:16:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=47755898</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47755898</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47755898</guid></item><item><title><![CDATA[New comment by wren6991 in "Show HN: A game where you build a GPU"]]></title><description><![CDATA[
<p>Please put the connector on the top of GND. GND goes on the bottom of a schematic.</p>
]]></description><pubDate>Sun, 05 Apr 2026 18:28:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47652382</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47652382</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47652382</guid></item><item><title><![CDATA[New comment by wren6991 in "RISC-V Is Sloooow"]]></title><description><![CDATA[
<p>> MCU cores don't though<p>v6-M doesn't (e.g. Cortex-M0+). v7-M and v8-M do allow unaligned access on Normal memory but not on Device memory.</p>
]]></description><pubDate>Sat, 14 Mar 2026 19:00:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47379936</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47379936</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47379936</guid></item><item><title><![CDATA[New comment by wren6991 in "RISC-V Is Sloooow"]]></title><description><![CDATA[
<p>Yep, RISC-V also has these megapages. 4k is the <i>last-level</i> page size. You get larger pages (4M on 32-bit and 2M/1G on 64-bit) by terminating the walk at higher levels of the page table.</p>
]]></description><pubDate>Sat, 14 Mar 2026 18:58:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=47379924</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47379924</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47379924</guid></item><item><title><![CDATA[New comment by wren6991 in "RISC-V Is Sloooow"]]></title><description><![CDATA[
<p>This extension wasn't strictly necessary but it makes decode of Arm instructions faster in the bootrom's Arm emulator.</p>
]]></description><pubDate>Sat, 14 Mar 2026 18:51:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=47379843</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=47379843</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47379843</guid></item><item><title><![CDATA[New comment by wren6991 in "16-Bit Data Pointers on RV32"]]></title><description><![CDATA[
<p>ELF patching is a last resort! We do have some really awful Python ELF patching in the RP2350 ROM build to implement a missing relocation for 16-bit pointers in `movw` instructions, which also saves a ton of space.</p>
]]></description><pubDate>Sun, 09 Nov 2025 20:22:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=45868829</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=45868829</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45868829</guid></item><item><title><![CDATA[New comment by wren6991 in "Comparing a RISC and a CISC with similar hardware organization (1991)"]]></title><description><![CDATA[
<p>...although you could certainly implement a Jazelle-style "branch to x86" instruction if you really wanted. It's fine as long as you come up in RVI mode.<p>Unfortunately you would not be able to repurpose the LSB of jalr targets as an "x86 bit" à la Thumb because the standard requires you to ignore that bit, though of course you could enable that behaviour with a custom CSR.</p>
]]></description><pubDate>Sun, 05 Oct 2025 15:19:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45482163</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=45482163</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45482163</guid></item><item><title><![CDATA[New comment by wren6991 in "RISC-V Conditional Moves"]]></title><description><![CDATA[
<p>RISC-V code density is pretty good these days with Zcmp (push, pop, compressed double move) and Zcb (compressed mul, sign/zero-extend, byte load/store). There is also Zcmt but it's kind of cursed. Hopefully density will keep improving once mainstream compilers have full support for Zilsd/Zclsd (load/store pair for RV32).<p>T32 is a pretty good encoding but far from perfect. If they had the chance to redo it I doubt they would spend a full 1/32nd of the encoding space on asrs, for example.</p>
]]></description><pubDate>Fri, 03 Oct 2025 10:35:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=45461281</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=45461281</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45461281</guid></item><item><title><![CDATA[New comment by wren6991 in "RISC-V Conditional Moves"]]></title><description><![CDATA[
<p>You still have the overhead of a function call. If you just use / % operators then you'll get a call inserted to the libgcc or compiler-rt routine if you don't have the M extension, and those routines are div or mod only. Using stdlib for integer division seems like an odd choice.<p>If stdlib div() were promoted to a builtin one day (it currently is not in GCC afaict), and its implementation were inlined, then the compiler would recognise the common case of one side of the struct being dead, and you'd still end up with a single div/rem instruction.</p>
]]></description><pubDate>Fri, 03 Oct 2025 10:27:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=45461230</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=45461230</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45461230</guid></item><item><title><![CDATA[New comment by wren6991 in "RISC-V Conditional Moves"]]></title><description><![CDATA[
<p>> publish properly what will end up "standard instruction fusion patterns" (like the div/rem one).<p>The div/rem one is odd because I saw it suggested in the ISA manual, but I have yet to ever see that pattern crop up in compiled code. Usually it's just in library functions like C stdlib `div()` which returns a quotient and remainder, but why on earth are you calling that library function on a processor that has a divide instruction?</p>
]]></description><pubDate>Thu, 02 Oct 2025 22:56:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=45456564</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=45456564</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45456564</guid></item><item><title><![CDATA[New comment by wren6991 in "RISC-V Conditional Moves"]]></title><description><![CDATA[
<p>I feel like the author might be slightly missing the point here:<p>> The whole premise of fusion is predicated on the idea that it is valid for a core to transform code similar to the branchy code on the left into code similar to the branch-free code on the right.<p>The idea of Zicond afaict is that the <i>compiler</i> transforms select sequences into (usually multiple) Zicond instructions, and cores with more register ports available can fuse Zicond compounds into more complex select macro-ops. It's a 2R1W vocabulary for describing selects which require more than 2 read ports.<p>As an aside I evaluated Zicond on my scalar 3-stage implementation and found that at 1 CPI for ALU ops and 2-cycle taken branch cost, the branchless sequences GCC produced for Zicond were never better and sometimes worse than the equivalent branching sequence. It really does seem to be targeting bigger cores, or constant-time execution</p>
]]></description><pubDate>Thu, 02 Oct 2025 22:52:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=45456535</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=45456535</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45456535</guid></item><item><title><![CDATA[New comment by wren6991 in "RISC-V Conditional Moves"]]></title><description><![CDATA[
<p>Surprised an article published on September 28, 2025 does not include any mention of the P (packed integer SIMD) extension.<p>P adds instructions like integer multiply-accumulate, which have a third register read (for rd). So, they're taking the opportunity to add a few forms of 3-register select instructions:<p><pre><code>   MVM     Move Masked
           for each bit i:  X(rd)[i] = X(rs2)[i] ? X(rs1)[i] : X(rd)[i]

   MVMN    Move Masked Not
           for each bit i:  X(rd)[i] = X(rs2)[i] ? X(rd)[i]  : X(rs1)[i]

   MERGE   Merge
           for each bit i:  X(rd)[i] = X(rd)[i]  ? X(rs2)[i] : X(rs1)[i]
</code></pre>
Actually I say I'm surprised but given the way the spec is currently spread around different parts of the internet, it's easy to miss if you're not following the mailing lists!</p>
]]></description><pubDate>Thu, 02 Oct 2025 22:47:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=45456504</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=45456504</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45456504</guid></item><item><title><![CDATA[New comment by wren6991 in "How to make the Framework Desktop run even quieter"]]></title><description><![CDATA[
<p>> It must be noted that customer safety and EMC requirements for the mini PC, a standalone electrical item, differ from those for hardware components (such as the PSU) designed to be inside a PC case. The safety standard suggests that ventilation openings on case side panels need to be less than 5mm in diameter.<p>...but it's a plastic panel? I don't understand how this helps with EMC.</p>
]]></description><pubDate>Tue, 16 Sep 2025 21:10:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=45268091</link><dc:creator>wren6991</dc:creator><comments>https://news.ycombinator.com/item?id=45268091</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45268091</guid></item></channel></rss>