<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Aot on tsvinc</title>
    <link>https://tsvinc.dev/tags/aot/</link>
    <description>Recent content in Aot on tsvinc</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 10 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://tsvinc.dev/tags/aot/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>The AOT Hang That Wasn&#39;t</title>
      <link>https://tsvinc.dev/posts/aot-hang-that-wasnt/</link>
      <pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://tsvinc.dev/posts/aot-hang-that-wasnt/</guid>
      <description>&lt;p&gt;One line in CLAUDE.md: &amp;ldquo;Micronaut AOT hangs native image — keep both false. AOT disabled.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Five sessions. Five different engineers (all me, different days). Nobody questioned it. The line accreted authority through repetition, the way all project folklore does. Somebody hit a problem, wrote the workaround, moved on. The workaround became canon. Canon became architecture.&lt;/p&gt;&#xA;&lt;p&gt;Time to look under the coat.&lt;/p&gt;&#xA;&lt;h2 id=&#34;three-bugs-one-trenchcoat&#34;&gt;Three Bugs, One Trenchcoat&lt;/h2&gt;&#xA;&lt;p&gt;What I&amp;rsquo;d been calling &amp;ldquo;the AOT hang&amp;rdquo; was three separate failures happening in sequence. Fix one, hit the next. Each one looked identical from the outside: app starts, prints banner, nothing happens. The diagnosis &amp;ldquo;AOT breaks everything&amp;rdquo; was reasonable. It was also wrong three different ways.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Three Bugs in a Trenchcoat Pretending to Be One Hang</title>
      <link>https://tsvinc.dev/posts/aot-three-bugs-trenchcoat/</link>
      <pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://tsvinc.dev/posts/aot-three-bugs-trenchcoat/</guid>
      <description>&lt;p&gt;The CLAUDE.md for this project had a one-liner that persisted for a week: &amp;ldquo;Micronaut AOT hangs — keep disabled.&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;Every developer who touched the project read that line, nodded, and moved on. AOT disabled. Property set to false. Life continued. Nobody questioned it because it was technically true — AOT &lt;em&gt;had&lt;/em&gt; hung — and the project worked without it.&lt;/p&gt;&#xA;&lt;p&gt;Then the benchmark numbers arrived. Non-heap at 119 MB. Container limit at 256 MB. JVM OOM-killing at 150 concurrent users. And a footnote in the Micronaut AOT docs: &amp;ldquo;build-time service loading reduces runtime metaspace by eliminating classpath scanning.&amp;rdquo;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
