À propos du projet
Perry est un compilateur ahead-of-time pour TypeScript et JavaScript, implémenté en Rust. Il utilise SWC pour l'analyse syntaxique et LLVM pour la génération de code, produisant des binaires machine autonomes au lieu d'embarquer un moteur JavaScript. Le README le positionne face à Node.js, Bun et Electron, en soulignant l'absence d'installation de runtime, des binaires de petite taille (hello world autour de 330 Ko) et des démarrages à froid instantanés.
Les cibles incluent macOS, Windows, Linux, iOS, iPadOS, visionOS, tvOS, watchOS, Android, Wear OS, ainsi que la sortie web et WebAssembly. Une API UI de type SwiftUI compile en widgets natifs de plateforme (AppKit, UIKit, Android Views, Win32, GTK4) plutôt qu'en WebView, et le projet mentionne le support des widgets d'écran d'accueil.
Le README revendique environ 97 % de taux de réussite sur la suite de tests de Node lui-même à travers 53 modules node:*, avec des implémentations de fs, http/http2, net/tls, crypto, stream, child_process, worker_threads, fetch et les globals web, plus une compatibilité avec environ 50 paquets npm tels que Fastify, Express, mysql2, pg, ioredis, ws, bcrypt et jsonwebtoken. Le JavaScript pur est également pris en charge.
La concurrence est exposée via parallelMap, parallelFilter et spawn sur de vrais threads OS ; le compilateur rejette l'état mutable partagé, donc les courses de données échouent à la compilation. La bibliothèque standard couvre les bases de données, WebSockets, conteneurs, i18n, trousseau, notifications, mise à jour automatique et un framework TUI.
Les chiffres de performance sont publiés à partir de harnais de benchmark ouverts (Apple M1 Max, médianes de runs répétés), couvrant la convolution d'images, Fibonacci récursif, pipelines JSON, allocation d'objets et écritures de tableaux, avec des comparaisons à Node.js, Bun et Rust. Le README note explicitement les charges de travail où le JIT de V8 gagne encore et lie au harnais et à la méthodologie pour que les résultats soient reproductibles.
L'installation est disponible via npm (@perryts/perry), Homebrew, winget, APT, Scoop, un script d'installation ou des builds source. L'utilisation typique est `perry init`, `perry run`, et `perry compile src/main.ts -o myapp`, avec `perry doctor` pour la vérification de configuration. La télémétrie est optionnelle et peut être désactivée via la configuration ou les variables d'environnement.
Les projets listés comme construits avec Perry incluent Bloom Engine (un moteur de jeu natif TypeScript), Mango (une GUI native MongoDB), Hone (un éditeur de code propulsé par IA) et dB Meter (un sonomètre). Le projet est sous licence MIT et développé en open source avec une communauté Discord et un suivi de problèmes public.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.