<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Simple and Effective Type Check Removal through Lazy Basic Block Versioning · HackerPapers discussions</title><link>https://hackerpaper.kaipfister.de/p/1411.0352/</link><description>Collected HN comments and submissions linking this paper.</description><language>en</language><lastBuildDate>Mon, 02 Nov 2026 11:16:22 GMT</lastBuildDate><atom:link href="https://hackerpaper.kaipfister.de/p/1411.0352/feed.xml" rel="self" type="application/rss+xml" /><item><title>Simple and Effective Type Check Removal through Lazy Basic Block Versioning — mentioned by kenhwang</title><link>https://news.ycombinator.com/item?id=43032348</link><guid isPermaLink="false">urn:hackerpapers:mention:1411.0352:43032348</guid><pubDate>Thu, 13 Feb 2025 03:23:35 GMT</pubDate><description>&lt;p&gt;I believe this is the paper that started it all (there are a couple of follow up papers): https://arxiv.org/pdf/1411.0352v1 The author was eventually hired to develop YJIT.&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1411.0352/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Simple and Effective Type Check Removal through Lazy Basic Block Versioning — mentioned by jacques_chester</title><link>https://news.ycombinator.com/item?id=39455398</link><guid isPermaLink="false">urn:hackerpapers:mention:1411.0352:39455398</guid><pubDate>Wed, 21 Feb 2024 15:57:19 GMT</pubDate><description>&lt;p&gt;For those wondering why an interview with Maxime is interesting: Maxime coinvented the Basic Block Versioning approach to JITs[0] during her studies. It&amp;#x27;s the basis for YJIT, which has landed big speedups for the C Ruby implementation over the past few years. Disclosure: I used to work in a team adjacent to Maxime&amp;#x27;s. [0] https://arxiv.org/abs/1411.0352&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1411.0352/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Simple and Effective Type Check Removal through Lazy Basic Block Versioning — mentioned by whizzter</title><link>https://news.ycombinator.com/item?id=29972860</link><guid isPermaLink="false">urn:hackerpapers:mention:1411.0352:29972860</guid><pubDate>Mon, 17 Jan 2022 23:21:40 GMT</pubDate><description>&lt;p&gt;Afaik the only ones that&amp;#x27;s somewhat successfully used LLVM for a dynlang JIT is the Safari guys, and iirc that one was only for the highest optimization level (and that is an important hint on their direction and one that most dynlang JIT&amp;#x27;s should head). The goals and constraints of practical dynlang JITs often differ a bit from those for statically typed languages. The JITs for statically typed languages are often fairly &amp;quot;straightforward&amp;quot; since the basic/primitive types are often known, and with the exception for dispatch optimizations, many large wins comes from register allocation,etc. A…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1411.0352/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Simple and Effective Type Check Removal through Lazy Basic Block Versioning — mentioned by PeCaN</title><link>https://news.ycombinator.com/item?id=11298310</link><guid isPermaLink="false">urn:hackerpapers:mention:1411.0352:11298310</guid><pubDate>Wed, 16 Mar 2016 16:01:41 GMT</pubDate><description>&lt;p&gt;Because with 80%+ unused code, your instruction cache is gonna choke. Also JITs can remove many more type checks, because it knows when a check would be redundant. See e.g. Lazy Basic Block Versioning[1], but existing tracing JITs do quite well also. 1. http://arxiv.org/abs/1411.0352&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1411.0352/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Simple and Effective Type Check Removal through Lazy Basic Block Versioning — mentioned by PeCaN</title><link>https://news.ycombinator.com/item?id=10779151</link><guid isPermaLink="false">urn:hackerpapers:mention:1411.0352:10779151</guid><pubDate>Tue, 22 Dec 2015 17:52:59 GMT</pubDate><description>&lt;p&gt;Dart&amp;#x27;s performance is pretty good; its authors are VM geniuses. If it doesn&amp;#x27;t already[1], it could leverage the optional typing for block versioning on initial compilation, and assume that version is correct most of the time (generating the most-optimized version initially because you expect to not bail out of this block version). This way you wouldn&amp;#x27;t have to warm up for type inference. If the program type-checks you can get almost static type performance. Dart also has an advantage in app startup time since you can just load your snapshot. -- 1: I&amp;#x27;m not familiar with the internals of the…&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1411.0352/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item><item><title>Simple and Effective Type Check Removal through Lazy Basic Block Versioning — mentioned by Veedrac</title><link>https://news.ycombinator.com/item?id=9055580</link><guid isPermaLink="false">urn:hackerpapers:mention:1411.0352:9055580</guid><pubDate>Mon, 16 Feb 2015 06:15:25 GMT</pubDate><description>&lt;p&gt;&amp;gt; I wonder if there aren&amp;#x27;t code size explosion problems, though. The paper (http://arxiv.org/abs/1411.0352) covers this on page 8. You&amp;#x27;re likely looking at tiny code-size increases overall.&lt;/p&gt;&lt;p&gt;&lt;a href="https://hackerpaper.kaipfister.de/p/1411.0352/"&gt;Paper and discussion history&lt;/a&gt;. A mention is not an endorsement.&lt;/p&gt;</description><category>cs.PL</category></item></channel></rss>
