<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: obl</title><link>https://news.ycombinator.com/user?id=obl</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 30 Apr 2026 20:50:31 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=obl" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by obl in "Borrow Checking, RC, GC, and Eleven Other Memory Safety Approaches"]]></title><description><![CDATA[
<p>It is not ridiculous at all. Those things have pretty precise definitions and type segregation absolutely does remove a bunch of soundness issues related to type confusion.<p>You can think of it as the rather classic "Vec of struct + numeric IDs" that is used a lot e.g. in Rust to represent complex graph-like structures.<p>This combined with bound checking is absolutely memory safe. It has a bunch of correctness issue that can arise due to index confusion but those are not safety issues. When combined with some kind of generational counters those correctness issue also go away but are only caught at runtime not at compile time (and they incur a runtime cost).<p>Rust's memory safety is about avoiding liveness issues (that become type confusions since all memory allocators will reuse memory for different types), nothing more, nothing less.</p>
]]></description><pubDate>Thu, 19 Dec 2024 11:33:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=42460485</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=42460485</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42460485</guid></item><item><title><![CDATA[The Elusive Frame Timing]]></title><description><![CDATA[
<p>Article URL: <a href="https://medium.com/@alen.ladavac/the-elusive-frame-timing-168f899aec92">https://medium.com/@alen.ladavac/the-elusive-frame-timing-168f899aec92</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41769458">https://news.ycombinator.com/item?id=41769458</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 07 Oct 2024 18:42:54 +0000</pubDate><link>https://medium.com/@alen.ladavac/the-elusive-frame-timing-168f899aec92</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=41769458</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41769458</guid></item><item><title><![CDATA[2024 EuroLLVM – How Slow Is MLIR [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=7qvVMUSxqz4">https://www.youtube.com/watch?v=7qvVMUSxqz4</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40970404">https://news.ycombinator.com/item?id=40970404</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 15 Jul 2024 18:49:05 +0000</pubDate><link>https://www.youtube.com/watch?v=7qvVMUSxqz4</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=40970404</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40970404</guid></item><item><title><![CDATA[Maya as Editor: The game development approach of Santa Monica Studio [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=G5VeATrOST4">https://www.youtube.com/watch?v=G5VeATrOST4</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40859131">https://news.ycombinator.com/item?id=40859131</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 02 Jul 2024 18:18:51 +0000</pubDate><link>https://www.youtube.com/watch?v=G5VeATrOST4</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=40859131</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40859131</guid></item><item><title><![CDATA[New comment by obl in "The C bounded model checker: criminally underused"]]></title><description><![CDATA[
<p>Weird that this treats uninitialized variables as unknown values. For example in ex3.c, the program<p><pre><code>  int main(){
      int x;
      if (x <= 42){
              assert(x != 12345);
      }
  }
</code></pre>
is of course UB in C, even though under a "uninitialized is random" model the program is valid and does not assert (as the model checker concludes).<p>(even in O1 clang gets rid of the whole function, including even the ret instruction, I'm surprised it does not at least leave an ud2 for an empty function to help debugging since it would not cost anything <a href="https://godbolt.org/z/eK8cz3EPe" rel="nofollow">https://godbolt.org/z/eK8cz3EPe</a> )</p>
]]></description><pubDate>Tue, 30 Jan 2024 20:05:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=39194973</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=39194973</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39194973</guid></item><item><title><![CDATA[Parallel Query Systems: Demand-Driven Incremental Compilers [pdf]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.diva-portal.org/smash/get/diva2:1783240/FULLTEXT01.pdf">https://www.diva-portal.org/smash/get/diva2:1783240/FULLTEXT01.pdf</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=39170699">https://news.ycombinator.com/item?id=39170699</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 28 Jan 2024 22:52:23 +0000</pubDate><link>https://www.diva-portal.org/smash/get/diva2:1783240/FULLTEXT01.pdf</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=39170699</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39170699</guid></item><item><title><![CDATA[2023 LLVM Dev Meetingg – Mojo: A system programming language [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=SEwTjZvy8vw">https://www.youtube.com/watch?v=SEwTjZvy8vw</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38414441">https://news.ycombinator.com/item?id=38414441</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 25 Nov 2023 16:21:27 +0000</pubDate><link>https://www.youtube.com/watch?v=SEwTjZvy8vw</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=38414441</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38414441</guid></item><item><title><![CDATA[eBPF: Unlocking the Kernel [Official Documentary] [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=Wb_vD3XZYOA">https://www.youtube.com/watch?v=Wb_vD3XZYOA</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38229695">https://news.ycombinator.com/item?id=38229695</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 11 Nov 2023 12:20:30 +0000</pubDate><link>https://www.youtube.com/watch?v=Wb_vD3XZYOA</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=38229695</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38229695</guid></item><item><title><![CDATA[LLVM: Scalar Evolution (SCEV)]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.npopov.com/2023/10/03/LLVM-Scalar-evolution.html">https://www.npopov.com/2023/10/03/LLVM-Scalar-evolution.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37810158">https://news.ycombinator.com/item?id=37810158</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 08 Oct 2023 13:12:37 +0000</pubDate><link>https://www.npopov.com/2023/10/03/LLVM-Scalar-evolution.html</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=37810158</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37810158</guid></item><item><title><![CDATA[Unreal Engine 5: Nanite deep dive [pdf]]]></title><description><![CDATA[
<p>Article URL: <a href="https://advances.realtimerendering.com/s2021/Karis_Nanite_SIGGRAPH_Advances_2021_final.pdf">https://advances.realtimerendering.com/s2021/Karis_Nanite_SIGGRAPH_Advances_2021_final.pdf</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36736239">https://news.ycombinator.com/item?id=36736239</a></p>
<p>Points: 5</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 15 Jul 2023 12:56:38 +0000</pubDate><link>https://advances.realtimerendering.com/s2021/Karis_Nanite_SIGGRAPH_Advances_2021_final.pdf</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=36736239</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36736239</guid></item><item><title><![CDATA[Chasing the Myth of Zero-Overhead Memory Safety]]></title><description><![CDATA[
<p>Article URL: <a href="https://verdagon.dev/blog/myth-zero-overhead-memory-safety">https://verdagon.dev/blog/myth-zero-overhead-memory-safety</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36404080">https://news.ycombinator.com/item?id=36404080</a></p>
<p>Points: 4</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 20 Jun 2023 14:00:17 +0000</pubDate><link>https://verdagon.dev/blog/myth-zero-overhead-memory-safety</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=36404080</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36404080</guid></item><item><title><![CDATA[A CPU research kernel for cycle-by-cycle micro-architectural introspection]]></title><description><![CDATA[
<p>Article URL: <a href="https://gamozolabs.github.io/metrology/2019/08/19/sushi_roll.html">https://gamozolabs.github.io/metrology/2019/08/19/sushi_roll.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36382441">https://news.ycombinator.com/item?id=36382441</a></p>
<p>Points: 5</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 18 Jun 2023 17:42:42 +0000</pubDate><link>https://gamozolabs.github.io/metrology/2019/08/19/sushi_roll.html</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=36382441</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36382441</guid></item><item><title><![CDATA[New comment by obl in "Memory safety without borrow checking, reference counting, or garbage collection"]]></title><description><![CDATA[
<p>This is memory safe if you never re-use a (generational index, address) pair.<p>They seem to use 64 bit ones so this means that to overflow a single memory cell you would have to allocate and free it every cycle (!) at 4 ghz for about 150 years.<p>Basically as long as you accept this incredibly small "memory leak" you're fine.</p>
]]></description><pubDate>Fri, 16 Jun 2023 15:35:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=36358399</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=36358399</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36358399</guid></item><item><title><![CDATA[From Stacks to Trees: A new aliasing model for Rust]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.ralfj.de/blog/2023/06/02/tree-borrows.html">https://www.ralfj.de/blog/2023/06/02/tree-borrows.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36268671">https://news.ycombinator.com/item?id=36268671</a></p>
<p>Points: 191</p>
<p># Comments: 42</p>
]]></description><pubDate>Sat, 10 Jun 2023 08:12:48 +0000</pubDate><link>https://www.ralfj.de/blog/2023/06/02/tree-borrows.html</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=36268671</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36268671</guid></item><item><title><![CDATA[V8 Maglev: compiler design doc]]></title><description><![CDATA[
<p>Article URL: <a href="https://docs.google.com/document/d/13CwgSL4yawxuYg3iNlM-4ZPCB8RgJya6b8H_E2F-Aek/edit?usp=sharing">https://docs.google.com/document/d/13CwgSL4yawxuYg3iNlM-4ZPCB8RgJya6b8H_E2F-Aek/edit?usp=sharing</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36184428">https://news.ycombinator.com/item?id=36184428</a></p>
<p>Points: 49</p>
<p># Comments: 17</p>
]]></description><pubDate>Sun, 04 Jun 2023 10:14:07 +0000</pubDate><link>https://docs.google.com/document/d/13CwgSL4yawxuYg3iNlM-4ZPCB8RgJya6b8H_E2F-Aek/edit?usp=sharing</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=36184428</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36184428</guid></item><item><title><![CDATA[New comment by obl in "Full screen triangle optimization"]]></title><description><![CDATA[
<p>Actual clipping is expensive so indeed a "guard band" is used : inside the region allowed by the internal precision of the rasterizer, outside pixels are simply "ignored".<p>See e.g. <a href="https://fgiesen.wordpress.com/2011/07/05/a-trip-through-the-graphics-pipeline-2011-part-5/" rel="nofollow">https://fgiesen.wordpress.com/2011/07/05/a-trip-through-the-...</a> for a nice detailed explanation.</p>
]]></description><pubDate>Thu, 09 Mar 2023 00:35:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=35076792</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=35076792</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35076792</guid></item><item><title><![CDATA[New comment by obl in "Full screen triangle optimization"]]></title><description><![CDATA[
<p>It would be interesting to see how you were testing for that, because at least on AMD it's fairly certain that a single thread can be shading multiple primitives.<p>For example, from the ISA docs [1], pixel waves are preloaded with an SGPR containing a bit mask indicating just that :<p>> The new_prim_mask is a 15-bit mask with one bit per quad; a one in this mask indicates that this quad begins a new primitive, a zero indicates it uses the same primitive as the previous quad. The mask is 15 bits, not 16, since the first quad in a wavefront begins a new primitive and
so it is not included in the mask<p>The mask is used by the interp instructions to load the correct interpolants from local memory.<p>In fact, in the (older) GCN3 docs [2] there is a diagram showing the memory layout of attributes from multiple primitives for a single wavefront (page 99).<p>That being said, of course I expect this process to be "lazy" : you would not want to buffer execution of a partially filled thread forever, so depending on the workload you might measure different things.<p>[1] <a href="https://developer.amd.com/wp-content/resources/RDNA2_Shader_ISA_November2020.pdf" rel="nofollow">https://developer.amd.com/wp-content/resources/RDNA2_Shader_...</a><p>[2] <a href="http://developer.amd.com/wordpress/media/2013/12/AMD_GCN3_Instruction_Set_Architecture_rev1.1.pdf" rel="nofollow">http://developer.amd.com/wordpress/media/2013/12/AMD_GCN3_In...</a></p>
]]></description><pubDate>Thu, 09 Mar 2023 00:07:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=35076551</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=35076551</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35076551</guid></item><item><title><![CDATA[New comment by obl in "Full screen triangle optimization"]]></title><description><![CDATA[
<p><p><pre><code>  In actual hardware shading is done 32 or 64 pixels at a time, not four. The problem above just got worse.
</code></pre>
While it's true that there are "wasted" execution in 2x2 quads for derivative computation, it's absolutely not the case that all lanes of a hardware thread (warp / wavefront) have to come from the same triangle. That would be insanely inefficient.<p>I dont think that it's publicly documented how the "packing" of quads into lanes is done in the rasterizer for modern GPUs. I'd guess something opportunistic (maybe per tile) taking advantage of the general spatial coherency of triangles in mesh order.</p>
]]></description><pubDate>Wed, 08 Mar 2023 21:39:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=35075116</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=35075116</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35075116</guid></item><item><title><![CDATA[Ownership You Can Count on [pdf]]]></title><description><![CDATA[
<p>Article URL: <a href="https://inko-lang.org/papers/ownership.pdf">https://inko-lang.org/papers/ownership.pdf</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=34332413">https://news.ycombinator.com/item?id=34332413</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 10 Jan 2023 22:26:03 +0000</pubDate><link>https://inko-lang.org/papers/ownership.pdf</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=34332413</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34332413</guid></item><item><title><![CDATA[A new runtime for Nim (2019)]]></title><description><![CDATA[
<p>Article URL: <a href="https://nim-lang.org/araq/ownedrefs.html">https://nim-lang.org/araq/ownedrefs.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=34331627">https://news.ycombinator.com/item?id=34331627</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 10 Jan 2023 21:16:52 +0000</pubDate><link>https://nim-lang.org/araq/ownedrefs.html</link><dc:creator>obl</dc:creator><comments>https://news.ycombinator.com/item?id=34331627</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34331627</guid></item></channel></rss>