Perry vs Electron
Electron permette di costruire app desktop multipiattaforma usando tecnologie web (HTML/CSS/JS) raggruppando Chromium e Node.js con la tua app. Perry compila TypeScript direttamente in codice macchina nativo e renderizza l'UI tramite widget reali della piattaforma — AppKit, UIKit, GTK4, Win32, JNI. La proposta di Electron è il riuso delle web-tech; la proposta di Perry sono piccoli binari nativi con UI nativa da TypeScript.
Cos'è Electron?
Electron è un framework open-source per costruire applicazioni desktop multipiattaforma usando Chromium per il rendering e Node.js per l'accesso al sistema. Ogni app Electron viene distribuita con la propria copia di Chromium e Node, motivo per cui gli installer delle app Electron sono tipicamente di 80–150 MB anche per un hello world. Electron ha alimentato app ampiamente utilizzate tra cui VS Code, Slack, Discord e il client desktop di Figma. Supporta desktop Linux, macOS e Windows; non c'è alcuna proposta first-party per mobile, watch o TV.
Cos'è Perry?
Perry compila TypeScript direttamente in codice macchina nativo senza motore browser, senza Chromium e senza runtime Node. Il layer UI (perry/ui) è un sistema dichiarativo in stile SwiftUI che mappa su widget nativi della piattaforma tramite AppKit su macOS, UIKit su iOS/iPadOS/tvOS, GTK4 su Linux, Win32 su Windows e JNI su Android. I binari hello-world sono ~330 KB; le app complete con stdlib (Fastify, mysql2, ecc.) sono di circa 48 MB.
Fianco a fianco
| Caratteristica | Perry | Electron |
|---|---|---|
| Rendering | Widget nativi della piattaforma (AppKit, UIKit, GTK4, Win32, JNI) | Chromium raggruppato (HTML/CSS/JS) |
| Motori raggruppati | Nessuno (V8 opzionale solo con --enable-js-runtime) | Chromium + Node.js |
| Dimensione installer hello-world | ~330 KB | ~80–150 MB |
| Installer app completa (stdlib + framework) | ~48 MB | 100–200+ MB tipici |
| Utilizzo RAM | Nativo (tipico: decine di MB) | Più processi Chromium (tipico: centinaia di MB) |
| Mobile / watch / TV | Sì — iOS, iPadOS, Android, watchOS, tvOS, Wear OS | No (solo desktop) |
| Linguaggio UI | TypeScript con API dichiarativa in stile SwiftUI | HTML/CSS/JS (stack web) |
| Auto-update / pacchettizzazione | perry publish (Homebrew, APT, App Store, Play Store) | electron-builder, electron-updater (ecosistema maturo) |
| Maturità | Pre-1.0 | Stabile, oltre un decennio in produzione |
Dove vince Perry
- +Dimensione del binario. Un hello world Perry è ~330 KB; un hello world Electron è tipicamente di 80–150 MB perché ogni app distribuisce il proprio Chromium.
- +Footprint di memoria. Le app Perry girano come un singolo processo nativo; le app Electron girano più processi Chromium (renderer, GPU, utility, ecc.) e consumano centinaia di MB di RAM a riposo.
- +Look and feel nativo. Perry renderizza tramite widget reali della piattaforma, quindi le app ereditano automaticamente le convenzioni dell'OS (focus rings, accessibilità, IME, fisica dello scrolling).
- +Mobile, watch, TV. Un unico codice Perry compila per iOS/iPadOS/Android/watchOS/tvOS/Wear OS. Electron è solo desktop.
- +Avvio a freddo. I binari nativi non pagano il costo di avvio di Chromium e Node.
- +Vere prestazioni CPU su codice stretto. Perry guida i microbenchmark di calcolo contro Node (che Electron usa) di multipli sulla maggior parte dei kernel (vedi perry/benchmarks).
Dove vince Electron
- +Maturità. Electron è in produzione da oltre un decennio e alimenta VS Code, Slack, Discord e molte altre app con tooling collaudato.
- +Riuso dello stack web. Se il tuo team costruisce già UI web, Electron permette di distribuirle come app desktop senza riscrittura.
- +La coerenza dell'UI tra le piattaforme è facile — Chromium renderizza allo stesso modo su ogni OS, che è esattamente ciò che alcuni prodotti vogliono.
- +Vasto ecosistema di librerie npm funziona a runtime; Perry esegue un sottoinsieme nativamente e il V8 opt-in copre il resto.
- +Tooling di pacchettizzazione maturo (electron-builder, electron-updater, helper per la firma del codice) con ampio supporto della community.
- +Funzionalità native del web come devtools, hot reload e velocità fluida di iterazione CSS/HTML sono ineguagliabili.
Quando scegliere Perry
Scegli Perry se vuoi piccoli binari nativi, basso utilizzo di memoria, look-and-feel nativo per piattaforma, o un unico codice TypeScript che si distribuisce su mobile/watch/TV oltre al desktop.
Quando scegliere Electron
Scegli Electron se hai un'UI web esistente e vuoi distribuirla come app desktop con minima riscrittura, se hai bisogno della massima coerenza UI multipiattaforma su desktop, o se dipendi da una vasta gamma di librerie pure-JS a runtime.
Verdetto
Electron e Perry si trovano agli estremi opposti dello spettro multipiattaforma. Electron baratta dimensione del binario e memoria per il riuso delle web-tech; Perry baratta lo stack web per binari nativi e UI nativa. Se hai visto l'installer della tua app Electron gonfiarsi oltre i 150 MB o la sua RAM a riposo oltre il mezzo gigabyte, Perry è la risposta a quello specifico problema — al costo di un modello UI diverso, di stile nativo.