Torna ai confronti
UI multipiattaforma

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

CaratteristicaPerryElectron
RenderingWidget nativi della piattaforma (AppKit, UIKit, GTK4, Win32, JNI)Chromium raggruppato (HTML/CSS/JS)
Motori raggruppatiNessuno (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 MB100–200+ MB tipici
Utilizzo RAMNativo (tipico: decine di MB)Più processi Chromium (tipico: centinaia di MB)
Mobile / watch / TVSì — iOS, iPadOS, Android, watchOS, tvOS, Wear OSNo (solo desktop)
Linguaggio UITypeScript con API dichiarativa in stile SwiftUIHTML/CSS/JS (stack web)
Auto-update / pacchettizzazioneperry publish (Homebrew, APT, App Store, Play Store)electron-builder, electron-updater (ecosistema maturo)
MaturitàPre-1.0Stabile, 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.

Prova Perry

Compila il tuo TypeScript in nativo oggi.

Inizia