Perry
th
v0.5.306 — generational GC + lazy JSON tape เป็นค่าเริ่มต้น เร็วกว่า Node และ Bun ในเบนช์มาร์กส่วนใหญ่

โค้ดเดียว ทุกแพลตฟอร์ม
ประสิทธิภาพระดับเนทีฟ

Perry คอมไพล์ TypeScript เป็นแอป GUI และ CLI เนทีฟบน macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly และเว็บ ไม่ต้องมี runtime ไม่ต้องมี Electron เป็นไบนารีเนทีฟล้วน ๆ

terminal
$ perry compile main.ts
กำลังคอมไพล์ main.ts...
✓ คอมไพล์ไฟล์สำเร็จ: main (2.3 MB)

$ ./main
Hello, World!
10
เป้าหมาย
25+
วิดเจ็ต UI เนทีฟ
<50 ms
เวลาเริ่มต้น
App Store
พร้อม

ทำไมต้อง Perry?

ทุกอย่างที่คุณต้องการเพื่อคอมไพล์ TypeScript เป็นแอปพลิเคชันเนทีฟ

noRuntime
fastCompilation
smallBinaries
deterministicBuilds
stdLib
v8Runtime
widgets
plugins
threading
i18n

ดูสิ่งที่ผู้คนสร้าง

แอปเนทีฟจริง คอมไพล์จาก TypeScript ไม่มี Electron ไม่มี Web View — แค่ UI เนทีฟบนทุกแพลตฟอร์ม

Mango

Mango

GUI MongoDB เนทีฟ — สร้างด้วย TypeScript ทั้งหมด

macOSLinuxWindows
Mango — document editor
Mango — query explorer
Hone

Hone

โค้ดเอดิเตอร์เนทีฟขับเคลื่อนด้วย AI — TypeScript สู่ไบนารีเนทีฟ

macOSiOSWeb
Hone — native AI code editor

เนทีฟบนทุกแพลตฟอร์ม

Perry คอมไพล์ TypeScript ของคุณเป็นเฟรมเวิร์ก UI เนทีฟ, WebAssembly และ JavaScript — ไม่ใช่ web view, ไม่ใช่ Electron วิดเจ็ตเนทีฟจริงบนทุกแพลตฟอร์ม รวมถึงเว็บ

🍎
macOS
เสถียร
📱
iOS
เสถียร
📲
iPadOS
เสถียร
watchOS
เสถียร
📺
tvOS
เสถียร
🤖
Android
เสถียร
🐧
Linux
เสถียร
🪟
Windows
เสถียร
🌐
Wasm
เสถียร
💻
Web
เสถียร

จากโค้ดสู่ App Store

Perry ไม่แค่คอมไพล์แอปของคุณ — แต่ส่งมอบถึงมือผู้ใช้

perry compileคอมไพล์และลงนาม
perry publishแพ็กเกจและส่ง
สโตร์และดาวน์โหลดApp Store, Play Store, ดาวน์โหลดตรง
perry verifyทดสอบทุกแพลตฟอร์ม

บิลด์และลงนาม

บิลด์ข้ามแพลตฟอร์มด้วยคำสั่งเดียว การลงนามโค้ดสำหรับ macOS, iOS, Android และ Windows จัดการให้คุณ ไม่ต้องต่อสู้กับ provisioning profile ของ Xcode หรือ keystore ของ Android

แจกจ่าย

ส่งไปยัง App Store, Play Store หรือให้ดาวน์โหลดโดยตรง Perry Publish จัดการการแพ็กเกจ, การรับรอง และการส่ง

ตรวจสอบ

ขับเคลื่อนโดย Geisterhand ทดสอบ UI อัตโนมัติบนทั้ง 6 แพลตฟอร์ม รู้ว่าแอปของคุณทำงานได้ทุกที่ก่อนที่ผู้ใช้จะบอกคุณว่ามันใช้ไม่ได้

ฟรีสำหรับโปรเจกต์โอเพนซอร์ส แพลนสำหรับทีม → /publish

เปรียบเทียบเฟรมเวิร์ก

เฟรมเวิร์กเดียวที่ตรงตามทุกข้อกำหนด

TypeScript คอมไพล์เป็นโค้ดเนทีฟ วิดเจ็ตแพลตฟอร์มจริง ไม่มี overhead ที่รันไทม์

เฟรมเวิร์กภาษาโค้ดเนทีฟวิดเจ็ตเนทีฟOverhead ที่รันไทม์
PerryTypeScript✓ คอมไพล์เนทีฟ✓ วิดเจ็ตแพลตฟอร์มจริง✓ ไม่มี overhead ที่รันไทม์
React NativeJS / TSJS bridgeบางส่วนJS engine + bridge
FlutterDartAOTไม่มี UI ที่ใช้ร่วมกันDart VM
ElectronJS / TSChromium runtimeHTML mimicsChromium + Node

เขียน TypeScript ส่งมอบแบบเนทีฟ

ใช้ syntax และ API ของ TypeScript ที่คุ้นเคย Perry จัดการส่วนที่เหลือ

hello.ts
// hello.ts
const greeting = "Hello, World!";
console.log(greeting);

// Compiles to ~2MB native executable
// No runtime needed!
$ perry build hello.ts
ไบนารีเนทีฟ

การเปรียบเทียบประสิทธิภาพ

การคอมไพล์เนทีฟให้ประสิทธิภาพที่ไม่มีใครเทียบได้

ขนาดไบนารี
1.8 MB
Bun 96 MB · Node 110 MB
เวลาเริ่มต้น
<50 ms
Bun ~200 ms · Node ~800 ms
Dependencies ที่รันไทม์
ไม่มี
Bun + Node need runtimes
Overhead หน่วยความจำ
น้อยมาก
Bun ~80 MB · Node ~120 MB

เริ่มต้น

ติดตั้ง Perry และเริ่มคอมไพล์ TypeScript เป็นไฟล์ปฏิบัติการเนทีฟ

Homebrew (macOS)

brew install perry-ts/perry
ต้องมี Homebrew รองรับ macOS arm64 และ x86_64

APT (Debian/Ubuntu)

apt-get install perry
รองรับ Linux x86_64 และ arm64

Windows (winget)

scoop install perry-ts/perry
ต้องมี Windows Package Manager รองรับ Windows x86_64 และ arm64

การรองรับฟีเจอร์

ครอบคลุม API ของ TypeScript และ Node.js อย่างครบถ้วน

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
รองรับเต็มรูปแบบ
บางส่วน

แพ็กเกจ npm เนทีฟ 30+ ตัว

แพ็กเกจ npm ยอดนิยมที่ implement ใหม่ในเนทีฟ Rust ไม่ต้อง npm install ไม่ต้อง node_modules แค่โค้ดเนทีฟที่เร็ว

ฐานข้อมูล

mysql2pgmongodbbetter-sqlite3ioredis

ความปลอดภัย

bcryptargon2jsonwebtokencrypto

HTTP

httphttpsaxiosnode-fetchwsnodemailer

การประมวลผลข้อมูล

cheeriosharpzliblodash

วันที่และเวลา

dayjsmomentdate-fnsnode-cron

ยูทิลิตี้

uuidnanoidslugifyvalidatordotenvrate-limiter-flexible
แค่ import และใช้งาน — Perry จะใช้ implementation เนทีฟโดยอัตโนมัติ

มันทำงานอย่างไร

จากซอร์สโค้ด TypeScript เป็นไฟล์ปฏิบัติการเนทีฟในไม่กี่วินาที

TypeScriptไฟล์ .ts
SWC
Parserแยกวิเคราะห์เร็ว
HIR
แปลงMonomorphization
LLVM
สร้างโค้ดโค้ดเครื่อง
ไฟล์ปฏิบัติการไบนารี 2-5 MB

อยากรู้ว่าคอมไพเลอร์ทำงานภายในอย่างไร? โครงสร้างภายในคอมไพเลอร์

บล็อก

16 บล็อก