Blog

Notizie, tutorial e approfondimenti sulla creazione di app native con Perry.

GCperformanceLLVMdebuggingarchitecture

Costruire un GC per un compilatore TypeScript nativo: decisioni, sorprese e come sta andando

Perry compila TypeScript in codice nativo con LLVM, quindi ha bisogno di un vero garbage collector. Le decisioni prese, i bug che non lasciavano tracce, i gate CI che non potevano fallire e il confronto attuale con Node e con un concorrente AOT basato sul reference counting.

compilerGCdebuggingNode.js paritymilestone

Compiling Claude Code: One Minified Bundle, 160 Compiler Fixes

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.

watchOSApp StoreiOShow-to

Shipping a Watch-Only App to the App Store (When Nothing Else Will)

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.

npmtest262Windowswidgetsmilestone

Veri pacchetti npm ora compilano: axios, zod, express — e una passata di conformance

Le circa 270 release da v0.5.875 a v0.5.1146 non riguardavano un singolo benchmark — riguardavano il far compilare e girare veri pacchetti npm. axios, zod v4, express, fastify e hono ora funzionano; la parità test262 è salita (String 60→79%, Array 61→72%); Windows è diventato Fluent con Mica; e DatePicker + drag & drop sono atterrati su ogni piattaforma.

GCperformancebenchmarkscommunity

Cosa il benchmark di aya_koto ci ha insegnato sul GC di Perry

Un lettore ha fatto il benchmark di Perry su AtCoder ABC451D e l'ha misurato 3,85× più lento di Bun. Una regressione silenziosa aveva nel frattempo allargato il gap a 6,59×. Il fix non era dove ce lo aspettavamo, il trade-off deliberato del GC che ha esposto era reale, e Perry v0.5.875 ora pareggia con Bun sullo stesso bench: 425 ms vs 431 ms.

updaterdevtoolsrefactorcommunitymilestone

Auto-Update, un Inspector Live e il Compilatore che si è Ridotto a Metà

Perry v0.5.306 → v0.5.359 in quattro giorni — 53 patch release, ~30 issue chiuse e tre cose grosse atterrate: perry/updater per l'auto-update desktop, un inspector live a localhost:7676 e un refactor del compilatore che ha ridotto i quattro file più grandi del 33–91%.

GCJSONperformancebenchmarksmilestone

GC generazionale, JSON lazy e benchmark che reggono il controllo

Perry v0.5.174 → v0.5.306 in tre giorni, più il lavoro su GC e JSON atterrato in parallelo. Il GC generazionale diventa il default. La Small String Optimization diventa il default. La pipeline JSON ottiene una tape lazy che atterra a 75 ms di mediana su validate-and-roundtrip — la migliore del gruppo a tipizzazione dinamica. La pagina benchmark è riscritta con mediana RUNS=11 + p95 + σ, simdjson e AssemblyScript+json-as aggiunti come peer, e ogni debolezza di Perry esposta onestamente.

npmdeveloper-experienceperformancewatch-modemilestone

Distribuzione npm, perry dev e vincere ogni benchmark

Perry v0.5.80 → v0.5.174 in sei giorni. @perryts/perry viene distribuito su npm per tutte e sette le piattaforme supportate. perry dev aggiunge la ricompilazione automatica in watch-mode sopra una cache AST in memoria e una cache degli oggetti per-modulo su disco. json_roundtrip chiude la sua ultima lacuna — Perry ora vince ogni benchmark contro Node.js e Bun.

performancellvmJSONGCservermilestone

Ottimizzare tutto: una settimana, 68 release e uno speedup JSON 547x

Perry v0.5.13 → v0.5.80 in sette giorni. JSON.parse chiude un divario 547x con Node. mimalloc diventa l'allocatore globale. Inline cache, transizioni di shape, slot Buffer tipizzati, operazioni bitwise native in i32, scalar replacement e un event loop nativo che tiene vivi i server Fastify e WebSocket.

compilersllvmcraneliftperformancemilestone

Da Cranelift a LLVM: come Perry è diventato 24x più veloce

La migrazione del backend di Perry da Cranelift a LLVM è completata. Il passaggio iniziale ha reso i benchmark 70x più lenti — poi sei ottimizzazioni mirate hanno portato Perry a 14/15 vittorie contro Node.js, con accelerazioni fino a 24,6x.

tvOScross-compilationbillingWindowsmilestone

tvOS, cross-compilazione iOS da Linux e Perry Login

Perry v0.4.24: tvOS come 10° target di compilazione, cross-compilazione iOS e macOS da Linux via ld64.lld, perry login con fatturazione a consumo, rinnovamento dell'UI Windows, notarizzazione macOS e 120 commit in 5 giorni.

threadingi18nwatchOScompilermilestone

Vero multi-threading, i18n a tempo di compilazione e watchOS

Perry v0.4.0: veri thread OS con sicurezza a tempo di compilazione, un sistema di internazionalizzazione senza cerimonie per oltre 30 lingue, watchOS come 9° target di compilazione, API audio e fotocamera e una pipeline di compilazione parallela.

compilercross-compilationinfrastructuremilestone

Cross-compilazione per Windows, game loop iOS e 100% di parità nei test

103 commit in una settimana: cross-compilazione per Windows da Linux via lld-link, supporto game loop iOS, crash reporting, una pipeline di build Hub a due stadi e il compilatore self-hosted raggiunge 68/68 di parità deterministica nei test.

distributiondocumentationWidgetKitmilestone

La pipeline completa: documentazione, distribuzione e WidgetKit

82 commit in una settimana: un sito di documentazione di 49 pagine, pubblicazione automatizzata su App Store e Play Store, pacchetti Homebrew e APT, estensioni WidgetKit native da TypeScript, nuovi widget, moduli http/https e un compilatore LLVM self-hosted.

ecosystemperry/uidatabasesinfrastructuremilestone

Da compilatore a ecosistema: React, database e build cloud

Perry cresce da compilatore a ecosistema completo. perry/ui al centro, ORM compatibili con Prisma per MySQL/PostgreSQL/SQLite, notifiche push universali, build distribuiti con pubblicazione su App Store e un layer di compatibilità React — tutto in una settimana.

UIcross-platformreleasemilestone

Tutte e sei le piattaforme, parità completa delle funzionalità

Oltre 20 widget UI nativi, un widget Canvas, viste tabella, notifiche di sistema, accesso al portachiavi, supporto multi-finestra e parità completa delle funzionalità su macOS, iOS, iPadOS, Android, Linux e Windows — tutto da un unico codice TypeScript.

architectureperformancecompiler

I sistemi di plugin sono una tassa sulle prestazioni

Le architetture a plugin sacrificano le prestazioni per l'estensibilità. Ma se l'estensibilità avvenisse a tempo di compilazione anziché a runtime? La composizione a tempo di compilazione offre entrambe — zero overhead, massima flessibilità.

compilerframeworksprogress

Compilare Hono, tRPC e Strapi in binari nativi

Perry ora compila tre importanti framework TypeScript — Hono, tRPC e Strapi — in eseguibili ARM64 nativi. Si compilano in meno di un secondo, producono binari sotto i 2 MB e funzionano senza crash.

tutorialshowcasePry

Costruire Pry: un visualizzatore JSON nativo in TypeScript

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.

architectureUIcross-platform

UI nativa multipiattaforma da TypeScript

How Perry maps one TypeScript codebase to platform widgets across its documented targets, including the platform-specific limitations and prerequisites.

announcementcompilerTypeScript

Presentazione di Perry

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.