Об этом проекте
Perry — это ahead-of-time компилятор для TypeScript и JavaScript, реализованный на Rust. Он использует SWC для парсинга и LLVM для генерации кода, создавая автономные машинные бинарники вместо поставки движка JavaScript. В README проект позиционируется как альтернатива Node.js, Bun и Electron, с акцентом на отсутствие необходимости установки рантайма, небольшие бинарники (hello world около 330 КБ) и мгновенный холодный старт.
Целевые платформы включают macOS, Windows, Linux, iOS, iPadOS, visionOS, tvOS, watchOS, Android, Wear OS, а также вывод для веба и WebAssembly. UI-API в стиле SwiftUI компилируется в нативные виджеты платформы (AppKit, UIKit, Android Views, Win32, GTK4), а не в WebView; проект также упоминает поддержку виджетов главного экрана.
В README заявлено примерно 97% прохождение собственного тестового набора Node по 53 модулям node:*, с реализациями fs, http/http2, net/tls, crypto, stream, child_process, worker_threads, fetch и веб-глобалов, а также совместимость с примерно 50 npm-пакетами, такими как Fastify, Express, mysql2, pg, ioredis, ws, bcrypt и jsonwebtoken. Обычный JavaScript также поддерживается.
Конкурентность реализована через parallelMap, parallelFilter и spawn на реальных потоках ОС; компилятор отклоняет общее изменяемое состояние, поэтому гонки данных приводят к ошибкам на этапе компиляции. Стандартная библиотека охватывает базы данных, WebSockets, контейнеры, i18n, связку ключей, уведомления, автообновление и TUI-фреймворк.
Показатели производительности публикуются из открытых бенчмарк-харнессов (Apple M1 Max, медианы повторных запусков), охватывающих свертку изображений, рекурсивный Фибоначчи, JSON-конвейеры, выделение объектов и запись массивов, со сравнением с Node.js, Bun и Rust. В README явно указаны рабочие нагрузки, где JIT V8 всё ещё выигрывает, и приведены ссылки на харнесс и методологию для воспроизводимости результатов.
Установка доступна через npm (@perryts/perry), Homebrew, winget, APT, Scoop, установочный скрипт или сборку из исходников. Типичное использование: `perry init`, `perry run` и `perry compile src/main.ts -o myapp`, с `perry doctor` для проверки настройки. Телеметрия включается по желанию и может быть отключена через конфигурацию или переменные окружения.
Среди проектов, созданных с помощью Perry, указаны Bloom Engine (нативный игровой движок на TypeScript), Mango (нативный GUI для MongoDB), Hone (редактор кода с ИИ) и dB Meter (измеритель уровня звука). Проект распространяется под лицензией MIT и разрабатывается открыто, с сообществом в Discord и публичным трекером проблем.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.