<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Perry Blog</title>
    <link>https://www.perryts.com/en/blog/</link>
    <description>Dated Perry release notes, tutorials, and technical articles. Historical measurements remain tied to their original versions.</description>
    <language>en</language>
    <item>
      <title>Compiling JavaScript AOT is complicated, here is why</title>
      <link>https://www.perryts.com/en/blog/compiling-javascript-aot/</link>
      <guid>https://www.perryts.com/en/blog/compiling-javascript-aot/</guid>
      <pubDate>Fri, 30 Oct 2026 00:00:00 GMT</pubDate>
      <description>An ahead-of-time compiler has to know, before the program runs, whether item.price is one load or a full lookup. How Perry proves whole-program facts about your JavaScript, the design that hit a wall, the per-unit design that replaced it, what failed, and where it stands.</description>
    </item>
    <item>
      <title>Building a GC for a Native TypeScript Compiler: Decisions, Surprises, and How It's Going</title>
      <link>https://www.perryts.com/en/blog/gc-decisions-surprises/</link>
      <guid>https://www.perryts.com/en/blog/gc-decisions-surprises/</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description>Perry compiles TypeScript to native code with LLVM — which means it needs a real garbage collector. The decisions we made, the bugs that left no evidence, the CI gates that couldn't fail, and where the numbers stand against Node and a refcounting AOT competitor.</description>
    </item>
    <item>
      <title>Compiling Claude Code: One Minified Bundle, 160 Compiler Fixes</title>
      <link>https://www.perryts.com/en/blog/compiling-claude-code/</link>
      <guid>https://www.perryts.com/en/blog/compiling-claude-code/</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <description>We pointed Perry at the 13 MB minified cli.js that npm ships for Claude Code and tried to turn it into a native binary. A month later it launches, logs in, streams a real API response, and paints what you type — and 160 pull requests had landed in Perry, from a no-op MessageChannel to a missing GC write barrier on RegExp headers.</description>
    </item>
    <item>
      <title>Shipping a Watch-Only App to the App Store (When Nothing Else Will)</title>
      <link>https://www.perryts.com/en/blog/shipping-a-watch-only-app-to-the-app-store/</link>
      <guid>https://www.perryts.com/en/blog/shipping-a-watch-only-app-to-the-app-store/</guid>
      <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
      <description>Every documented way to upload a standalone watchOS app to the App Store fails — altool, iTMSTransporter, xcodebuild, even Xcode 26's Organizer all refuse the watchOS platform. Here's the undocumented workaround that works and keeps arm64_32 for older watches: an ITSWatchOnlyContainer iOS stub, uploaded with iTMSTransporter.</description>
    </item>
    <item>
      <title>Real npm Packages Now Compile: axios, zod, express — and a Conformance Sweep</title>
      <link>https://www.perryts.com/en/blog/real-npm-packages-and-a-conformance-sweep/</link>
      <guid>https://www.perryts.com/en/blog/real-npm-packages-and-a-conformance-sweep/</guid>
      <pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate>
      <description>The ~270 releases from v0.5.875 to v0.5.1146 weren't about one benchmark — they were about making real npm packages compile and run. axios, zod v4, express, fastify, and hono now work; test262 parity jumped (String 60→79%, Array 61→72%); Windows went Fluent with Mica; and DatePicker + drag &amp; drop landed on every platform.</description>
    </item>
    <item>
      <title>What aya_koto's Benchmark Taught Us About Perry's GC</title>
      <link>https://www.perryts.com/en/blog/closing-the-gc-gap/</link>
      <guid>https://www.perryts.com/en/blog/closing-the-gc-gap/</guid>
      <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
      <description>A reader benchmarked Perry on AtCoder ABC451D and measured it 3.85× slower than Bun. A silent regression had widened the gap to 6.59× since. The fix wasn't where we expected, the deliberate GC trade-off it exposed was real, and Perry v0.5.875 now ties Bun on the same bench: 425 ms vs 431 ms.</description>
    </item>
    <item>
      <title>Auto-Update, a Live Inspector, and the Compiler That Halved Itself</title>
      <link>https://www.perryts.com/en/blog/updater-live-inspector-and-compiler-refactor/</link>
      <guid>https://www.perryts.com/en/blog/updater-live-inspector-and-compiler-refactor/</guid>
      <pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate>
      <description>Perry v0.5.306 → v0.5.359 in four days — 53 patch releases, ~30 issues closed, and three big things landed: perry/updater for desktop auto-update, a live inspector at localhost:7676, and a compiler refactor that shrank the four biggest files by 33–91%.</description>
    </item>
    <item>
      <title>Generational GC, Lazy JSON, and Benchmarks That Hold Up to Scrutiny</title>
      <link>https://www.perryts.com/en/blog/gen-gc-lazy-json-and-defensible-benchmarks/</link>
      <guid>https://www.perryts.com/en/blog/gen-gc-lazy-json-and-defensible-benchmarks/</guid>
      <pubDate>Sun, 26 Apr 2026 00:00:00 GMT</pubDate>
      <description>Perry v0.5.174 → v0.5.306 in three days, plus the GC and JSON work that landed alongside. The generational GC ships as default. The Small String Optimization ships as default. The JSON pipeline gets a lazy tape that lands at 75 ms median on validate-and-roundtrip — best in the dynamic-typing pack. The benchmarks page is rewritten with RUNS=11 median + p95 + σ, simdjson and AssemblyScript+json-as added as peers, and every weakness Perry has surfaced honestly.</description>
    </item>
    <item>
      <title>npm Distribution, perry dev, and Winning Every Benchmark</title>
      <link>https://www.perryts.com/en/blog/npm-perry-dev-and-beating-bun/</link>
      <guid>https://www.perryts.com/en/blog/npm-perry-dev-and-beating-bun/</guid>
      <pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate>
      <description>Perry v0.5.80 → v0.5.174 in six days. @perryts/perry ships on npm for all seven supported platforms. perry dev adds watch-mode auto-recompile on top of an in-memory AST cache and on-disk per-module object cache. json_roundtrip closes its last gap — Perry now wins every benchmark against both Node.js and Bun.</description>
    </item>
    <item>
      <title>Optimizing Everything: One Week, 68 Releases, and a 547x JSON Speedup</title>
      <link>https://www.perryts.com/en/blog/optimizing-everything/</link>
      <guid>https://www.perryts.com/en/blog/optimizing-everything/</guid>
      <pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate>
      <description>Perry v0.5.13 → v0.5.80 in seven days. JSON.parse closes a 547x gap to Node. mimalloc lands as the global allocator. Inline caches, shape transitions, typed buffer slots, i32-native bitwise ops, scalar replacement, and a native event loop that keeps Fastify and WebSocket servers alive.</description>
    </item>
    <item>
      <title>From Cranelift to LLVM: What Broke and How We Fixed It</title>
      <link>https://www.perryts.com/en/blog/cranelift-to-llvm/</link>
      <guid>https://www.perryts.com/en/blog/cranelift-to-llvm/</guid>
      <pubDate>Sun, 12 Apr 2026 00:00:00 GMT</pubDate>
      <description>Perry's backend migration from Cranelift to LLVM is finished. The initial cutover made benchmarks 70x slower — this is what broke, and the six targeted optimizations that fixed it.</description>
    </item>
    <item>
      <title>tvOS, Cross-Compile iOS from Linux, and Perry Login</title>
      <link>https://www.perryts.com/en/blog/tvos-cross-compile-and-perry-login/</link>
      <guid>https://www.perryts.com/en/blog/tvos-cross-compile-and-perry-login/</guid>
      <pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate>
      <description>Perry v0.4.24: tvOS as the 10th compilation target, cross-compile iOS and macOS from Linux via ld64.lld, perry login with usage-based billing, Windows UI overhaul, macOS notarization, and 120 commits in 5 days.</description>
    </item>
    <item>
      <title>True Multi-Threading, Compile-Time i18n, and watchOS</title>
      <link>https://www.perryts.com/en/blog/true-multithreading-i18n-and-watchos/</link>
      <guid>https://www.perryts.com/en/blog/true-multithreading-i18n-and-watchos/</guid>
      <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
      <description>Perry v0.4.0: real OS threads with compile-time safety, a zero-ceremony internationalization system for 30+ locales, watchOS as the 9th compilation target, audio and camera APIs, and a parallel compiler pipeline.</description>
    </item>
    <item>
      <title>Cross-Compile to Windows, iOS Game Loops, and 100% Test Parity</title>
      <link>https://www.perryts.com/en/blog/cross-compile-windows-game-loops-and-parity/</link>
      <guid>https://www.perryts.com/en/blog/cross-compile-windows-game-loops-and-parity/</guid>
      <pubDate>Fri, 20 Mar 2026 00:00:00 GMT</pubDate>
      <description>103 commits in one week: cross-compile to Windows from Linux via lld-link, iOS game loop support, crash reporting, a two-stage Hub build pipeline, and the self-hosting compiler hits 68/68 deterministic test parity.</description>
    </item>
    <item>
      <title>The Full Pipeline: Docs, Distribution, and WidgetKit</title>
      <link>https://www.perryts.com/en/blog/the-full-pipeline/</link>
      <guid>https://www.perryts.com/en/blog/the-full-pipeline/</guid>
      <pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate>
      <description>82 commits in one week: a 49-page documentation site, automated App Store and Play Store publishing, Homebrew and APT packages, native WidgetKit extensions from TypeScript, new widgets, http/https modules, and a self-hosting LLVM compiler.</description>
    </item>
    <item>
      <title>From Compiler to Ecosystem: React, Databases, and Cloud Builds</title>
      <link>https://www.perryts.com/en/blog/from-compiler-to-ecosystem/</link>
      <guid>https://www.perryts.com/en/blog/from-compiler-to-ecosystem/</guid>
      <pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate>
      <description>Perry grows from a compiler into a full ecosystem. perry/ui at the core, Prisma-compatible ORMs for MySQL/PostgreSQL/SQLite, universal push notifications, distributed builds with App Store publishing, and a React compatibility layer — all in one week.</description>
    </item>
    <item>
      <title>All Six Platforms, Full Feature Parity</title>
      <link>https://www.perryts.com/en/blog/all-six-platforms-ui-parity/</link>
      <guid>https://www.perryts.com/en/blog/all-six-platforms-ui-parity/</guid>
      <pubDate>Sat, 28 Feb 2026 00:00:00 GMT</pubDate>
      <description>20+ native UI widgets, a Canvas widget, Table views, system notifications, keychain access, multi-window support, and full feature parity across macOS, iOS, iPadOS, Android, Linux, and Windows — all from a single TypeScript codebase.</description>
    </item>
    <item>
      <title>Plugin Systems Are a Performance Tax</title>
      <link>https://www.perryts.com/en/blog/plugin-systems-are-a-performance-tax/</link>
      <guid>https://www.perryts.com/en/blog/plugin-systems-are-a-performance-tax/</guid>
      <pubDate>Fri, 27 Feb 2026 00:00:00 GMT</pubDate>
      <description>Plugin architectures trade performance for extensibility. But what if extensibility happened at build time instead of runtime? Compile-time composition gives you both — zero overhead, full flexibility.</description>
    </item>
    <item>
      <title>Compiling Hono, tRPC, and Strapi to Native Binaries</title>
      <link>https://www.perryts.com/en/blog/compiling-hono-trpc-strapi/</link>
      <guid>https://www.perryts.com/en/blog/compiling-hono-trpc-strapi/</guid>
      <pubDate>Wed, 25 Feb 2026 00:00:00 GMT</pubDate>
      <description>Perry now compiles three major TypeScript frameworks — Hono, tRPC, and Strapi — into native ARM64 executables. They compile in under a second, produce binaries under 2 MB, and run without crashes.</description>
    </item>
    <item>
      <title>Building Pry: A Native JSON Viewer in TypeScript</title>
      <link>https://www.perryts.com/en/blog/building-pry/</link>
      <guid>https://www.perryts.com/en/blog/building-pry/</guid>
      <pubDate>Thu, 20 Feb 2025 00:00:00 GMT</pubDate>
      <description>A walkthrough of building Pry, a native JSON viewer compiled from TypeScript to machine code with the Perry runtime and GC linked in and no webview.</description>
    </item>
    <item>
      <title>Cross-Platform Native UI from TypeScript</title>
      <link>https://www.perryts.com/en/blog/cross-platform-native-ui/</link>
      <guid>https://www.perryts.com/en/blog/cross-platform-native-ui/</guid>
      <pubDate>Sat, 01 Feb 2025 00:00:00 GMT</pubDate>
      <description>How Perry maps one TypeScript codebase to platform widgets across its documented targets, including the platform-specific limitations and prerequisites.</description>
    </item>
    <item>
      <title>Introducing Perry</title>
      <link>https://www.perryts.com/en/blog/introducing-perry/</link>
      <guid>https://www.perryts.com/en/blog/introducing-perry/</guid>
      <pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate>
      <description>Perry compiles supported TypeScript to standalone native executables with its runtime and GC linked in, without requiring an external Node.js installation or JavaScript engine.</description>
    </item>
  </channel>
</rss>
