Quay lại các so sánh
Runtime TypeScript

Perry vs Deno

Deno là một runtime JavaScript và TypeScript hiện đại được xây dựng trên V8, với hỗ trợ TypeScript hạng nhất, mô hình bảo mật dựa trên quyền và lệnh `deno compile` tạo ra một tệp thực thi duy nhất bằng cách đóng gói V8 với ứng dụng của bạn. Perry biên dịch TypeScript trực tiếp thành mã máy gốc — không có V8 trong đầu ra, không có lớp runtime, chỉ là một binary gốc nhỏ.

Deno là gì?

Deno là một runtime TypeScript và JavaScript được xây dựng bằng Rust trên V8 và Tokio. Nó thực thi trực tiếp mã nguồn `.ts`, có công cụ tích hợp (formatter, linter, test runner, language server) và sử dụng mô hình quyền yêu cầu cấp quyền tường minh cho truy cập mạng, tệp và môi trường. `deno compile` tạo một tệp thực thi tự chứa bằng cách đóng gói runtime Deno (bao gồm V8) cùng mã của bạn. Deno nhắm đến Linux, macOS và Windows trên x64 và arm64.

Perry là gì?

Perry là một trình biên dịch TypeScript gốc được viết bằng Rust. Nó biên dịch TypeScript trực tiếp thành mã máy gốc qua LLVM — không có V8, không có JIT, không có runtime. Đầu ra là một binary đơn lẻ, thường là vài trăm KB đến vài MB cho mã gốc, có thể lớn hơn nếu bạn chọn dùng V8 runtime nhúng cho các gói npm cần engine JS.

So sánh song song

Tính năngPerryDeno
Đầu raMã máy gốc (LLVM)Mã của bạn + runtime Deno (V8) đóng gói
Engine JavaScript trong binaryKhông có mặc định; tùy chọn V8V8, luôn luôn
Kích thước binary hello-world~330 KB~80–100 MB (bao gồm V8)
JITKhông (biên dịch AOT)Có (V8 TurboFan)
Mục tiêu di độngiOS, iPadOS, AndroidKhông
Watch / TV / WASM / WebwatchOS, tvOS, Wear OS, WASM, Web/JSKhông
UI gốc25+ widget qua API nền tảng gốcKhông
Mô hình quyềnQuyền tiến trình OS tiêu chuẩnQuyền runtime chi tiết (--allow-net, --allow-read, v.v.)
Độ ổn địnhTrước 1.0Ổn định (1.x / 2.x)
Được xây dựng bằngRustRust (trên V8)

Perry thắng ở đâu

  • +Binary nhỏ hơn đáng kể. Hello world của Perry chỉ ~330 KB. Đầu ra `deno compile` bao gồm V8 và đạt mức 80–100 MB.
  • +Không có engine JavaScript trong binary. TypeScript của bạn được biên dịch thành mã máy gốc, không bị V8 thông dịch tại runtime.
  • +Mục tiêu di động, watch, TV, WASM và Web. Deno chỉ dành cho server/desktop.
  • +Widget UI gốc ánh xạ sang AppKit, UIKit, GTK4, Win32 và JNI — không có tương đương trong Deno.
  • +Khởi động nguội nhanh hơn. Binary gốc biên dịch AOT không trả chi phí khởi động V8.
  • +Dẫn đầu microbench tính toán trong điều kiện tương đương trên M1 Max nơi mặc định fast-math `reassoc contract` của Perry cho phép LLVM tự động vector hóa và fold các bộ tích lũy có thể fold đơn giản (ví dụ loop_overhead 12 ms, math_intensive 14 ms; xem perry/benchmarks).

Deno thắng ở đâu

  • +Runtime trưởng thành, ổn định với lịch sử lâu dài và dòng 2.x đang hoạt động.
  • +Mô hình quyền chi tiết. Deno yêu cầu `--allow-net`, `--allow-read` tường minh, v.v. — hữu ích cho script trong sandbox và mã không đáng tin.
  • +Công cụ tích hợp: formatter, linter, test runner, doc generator, LSP, tất cả trong runtime.
  • +Hệ sinh thái V8 đầy đủ tại runtime — bất cứ thứ gì chạy trên V8 đều chạy trên Deno, bao gồm tối ưu JIT trên các đường nóng chạy lâu.
  • +TypeScript hạng nhất không cần bước biên dịch riêng trong quá trình phát triển, với pipeline kiểm tra kiểu được quản lý đầy đủ.
  • +API nền tảng web tiêu chuẩn (fetch, Web Streams, Web Crypto) được triển khai gốc trong runtime.

Khi nào nên chọn Perry

Chọn Perry nếu bạn muốn một binary gốc nhỏ, khởi động nhanh, bạn xuất bản đến di động hoặc các mục tiêu phi-server khác, bạn muốn UI gốc, hoặc bạn muốn biên dịch TypeScript thành một binary không chứa engine JS.

Khi nào nên chọn Deno

Chọn Deno nếu bạn muốn một runtime TypeScript ổn định, đầy đủ pin, bạn coi trọng sandbox quyền, bạn xây dựng workload phía server hoặc kịch bản, hoặc bạn cần tương thích đầy đủ hệ sinh thái V8 tại runtime.

Kết luận

Cả hai đều cho phép xuất bản chương trình TypeScript dưới dạng một binary đơn lẻ; sự khác biệt là những gì bên trong binary đó. Deno cho bạn V8 + runtime được tuyển chọn + sandbox quyền. Perry cho bạn mã máy gốc không có engine. Deno là lựa chọn tốt hơn cho công việc phía server và kịch bản nơi hệ sinh thái và mô hình quyền quan trọng. Perry là lựa chọn tốt hơn khi bạn cần binary nhỏ, khởi động nhanh, mục tiêu di động hoặc UI gốc.

Thử Perry

Biên dịch TypeScript của bạn thành mã gốc ngay hôm nay.

Bắt đầu