ひとつのコードベース。すべてのプラットフォーム。
ネイティブパフォーマンス。
PerryはTypeScriptをmacOS、iPadOS、iOS、Android、Linux、Windows、watchOS、tvOS、WebAssembly、Web向けのネイティブGUI・CLIアプリにコンパイルします。ランタイム不要。Electron不要。ネイティブバイナリのみ。
$ perry compile main.ts
main.tsをコンパイル中...
✓ コンパイル済み実行ファイル: main (2.3 MB)
$ ./main
Hello, World!なぜPerryなのか?
TypeScriptをネイティブアプリケーションにコンパイルするために必要なすべてが揃っています
みんなが作っているもの
TypeScriptからコンパイルされた本物のネイティブアプリ。Electronなし、WebViewなし — すべてのプラットフォームでネイティブUI。
Mango
ネイティブMongoDB GUI — TypeScriptで完全構築


Hone
ネイティブAIコードエディタ — TypeScriptからネイティブバイナリへ

すべてのプラットフォームでネイティブ
PerryはTypeScriptをネイティブUIフレームワーク、WebAssembly、JavaScriptにコンパイルします——Webビューでもなく、Electronでもありません。すべてのプラットフォームで本物のネイティブウィジェットを、そしてWebも。
コードからApp Storeへ
Perryはアプリをコンパイルするだけでなく、ユーザーの手に届けます。
ビルドと署名
ひとつのコマンドでクロスプラットフォームビルド。macOS、iOS、Android、Windowsのコード署名を自動処理。XcodeプロビジョニングプロファイルやAndroidキーストアとの格闘は不要です。
配布
App Store、Play Storeへのプッシュ、または直接ダウンロードとして配布。Perry Publishがパッケージング、公証、提出を処理します。
検証
Geisterhandによる自動UIテスト。6つのプラットフォームすべてでテスト。ユーザーから指摘される前に、アプリがどこでも動作することを確認できます。
オープンソースプロジェクトは無料。 チーム向けプラン → /publish
すべての要件を満たす唯一のフレームワーク
TypeScriptをネイティブコードにコンパイル。本物のプラットフォームウィジェット。ランタイムオーバーヘッドゼロ。
| フレームワーク | 言語 | ネイティブコード | ネイティブウィジェット | ランタイムオーバーヘッド |
|---|---|---|---|---|
| Perry | TypeScript | ✓ ネイティブコンパイル | ✓ 本物のプラットフォームウィジェット | ✓ ランタイムオーバーヘッドゼロ |
| React Native | JS / TS | JS bridge | 部分的 | JS engine + bridge |
| Flutter | Dart | AOT | 共通UIなし | Dart VM |
| Electron | JS / TS | Chromium runtime | HTML mimics | Chromium + Node |
TypeScriptを書いて、ネイティブで出荷
おなじみのTypeScript構文とAPIを使用。Perryが残りを処理します。
// hello.ts
const greeting = "Hello, World!";
console.log(greeting);
// Compiles to ~2MB native executable
// No runtime needed!パフォーマンス比較
ネイティブコンパイルが圧倒的な効率性を実現
はじめる
Perryをインストールして、TypeScriptをネイティブ実行ファイルにコンパイルしましょう
Homebrew (macOS)
brew install perry-ts/perryAPT (Debian/Ubuntu)
apt-get install perryWindows (winget)
scoop install perry-ts/perry機能サポート
TypeScriptおよびNode.js APIの包括的なカバレッジ
Core Language
- Numbers64-bit floating point (f64)
- StringsUTF-8, all common methods
- Booleanstrue/false, logical operators
- ArraysTyped and mixed-type arrays
- ObjectsObject literals and field access
- BigInt256-bit integer support
- EnumsNumeric and string enums
Functions
- Function DeclarationNamed functions
- Arrow Functions() => {} syntax
- Default ParametersParameters with defaults
- Rest Parameters...args syntax
- ClosuresIncluding mutable captures
- Higher-OrderFunctions as arguments/returns
- Async/AwaitAsync function support
Classes
- Class DeclarationBasic class syntax
- ConstructorsWith parameters
- Private Fields (#)ES2022 #privateField syntax
- Static Methods/FieldsClass-level members
- Getters/Settersget/set accessors
- Inheritanceextends keyword
- Super Callssuper() constructor calls
Type System
- Type AnnotationsExplicit type declarations
- Type InferenceAutomatic type detection
- GenericsMonomorphization (like Rust)
- InterfacesInterface declarations
- Union Typesstring | number support
- Type Guardstypeof operator
- Type Aliasestype X = ... declarations
Standard Library
- fsreadFileSync, writeFileSync, existsSync, etc.
- pathjoin, dirname, basename, extname, resolve
- cryptorandomBytes, randomUUID, sha256, md5
- osplatform, arch, hostname, memory info
- Bufferfrom, alloc, toString, slice, copy
- child_processexecSync, spawnSync
- JSON/Math/DateFull implementations
30以上のネイティブnpmパッケージ
人気のnpmパッケージをネイティブRustで再実装。npm installもnode_modulesも不要、高速なネイティブコードだけ。
データベース
セキュリティ
HTTP
データ処理
日付と時刻
ユーティリティ
仕組み
TypeScriptソースからネイティブ実行ファイルまで、わずか数秒
コンパイラの内部の仕組みを知りたいですか? コンパイラ内部構造
ブログ
16 ブログ
Auto-Update, a Live Inspector, and the Compiler That Halved Itself
前回の投稿は v0.5.306 で締めくくり、ストーリーは gen-GC + JSON + ベンチマーク でした。4 日後、Perry は v0.5.359 に到達 — つまり 53 のパッチリリース — そして、ストーリーはまた違うものになっています。これらのリリースに、ベンチマーク数値を見出しにしたものはありません。ほぼすべてが トラッカーで Issue…
tvOS, Cross-Compile iOS from Linux, and Perry Login
5日間、120コミット、Perry は v0.4.0 から v0.4.24 に跳躍しました。ハイライト:tvOS が10番目のコンパイルターゲットに、iOS と macOS のアプリが Linux から完全にビルド可能に、perry login で従量課金制に、Windows UI が完全刷新。リリースされた全内容を紹介します。…
True Multi-Threading, Compile-Time i18n, and watchOS
Perry v0.4.0 はプロジェクト開始以来最大のリリースです。1サイクルで3つのバージョンジャンプ — v0.3.0(i18n)、v0.3.2(watchOS)、v0.4.0(マルチスレッド)— そしてコンパイラ自体も並列化されました。リリースされた全内容を紹介します。…
The Full Pipeline: Docs, Distribution, and WidgetKit
7日間で82コミット。49ページのドキュメントサイト。App StoreとPlay Storeへの自動公開。 HomebrewとAPTパッケージ。TypeScriptからコンパイルされたネイティブWidgetKit拡張。 セルフホスティングLLVMコンパイラ。そしてすべてのプラットフォームにわたる数十のバグ修正。…
Plugin Systems Are a Performance Tax
VS Code をインストールします。速いです。15個の拡張機能を追加します。すると起動に4秒かかるようになり、 Extension Host が 800 MB の RAM を消費します。何が起きたのでしょうか?…