惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

小众软件
小众软件
博客园_首页
博客园 - 聂微东
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks
The Cloudflare Blog
aimingoo的专栏
aimingoo的专栏
Martin Fowler
Martin Fowler
D
Docker
人人都是产品经理
人人都是产品经理
WordPress大学
WordPress大学
博客园 - 三生石上(FineUI控件)
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
B
Blog RSS Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
Jina AI
Jina AI
博客园 - Franky
D
DataBreaches.Net

Hacker News

GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis Bonsai 1-bit WebGPU - a Hugging Face Space by webml-community Moving a large-scale metrics pipeline from StatsD to OpenTelemetry / Prometheus GitHub - Nightmare-Eclipse/RedSun: The Red Sun vulnerability repository GitHub - SethPyle376/hiraeth: Local AWS emulator focused on fast integration testing, with SQS support, SQLite-backed state, and a debug-friendly web UI. GitHub - macOS26/Agent: Any AI, replaces Claude Code, Cursor, OpenClaw. Over 18 LLM providers (Claude, OpenAI, Gemini, Ollama, Zai, HF, Qwen) wired into a native Mac app that writes code, builds Xcode projects, bumps versions, manages git, automates Safari, use AppleScript, JS or Accessibility, extend Agent! w/ MCP Servers, run tasks from your iPhone via Messages. YouTube now lets you turn off Shorts I Made a Terminal Pager Burgers | マクドナルド公式 Commands — HackerNews CLI documentation ChatGPT for Excel PiCore - Raspberry Pi Port of Tiny Core Linux Live Nation illegally monopolized ticketing market, jury finds Google Broke Its Promise to Me. Now ICE Has My Data. Founding Engineer at Adaptional | Y Combinator CRISPR takes important step toward silencing Down syndrome’s extra chromosome GitHub - saffron-health/libretto: The AI toolkit for building reliable browser automations US v. Heppner (S.D.N.Y. 2026) no attorney-client privilege for AI chats [pdf] Retrofitting JIT Compilers into C Interpreters IPv6 – Google The Accursèd Alphabetical Clock Cybersecurity Looks Like Proof of Work Now Fragments: April 14 Cal.com Goes Closed Source: Why AI Security Is Forcing Our Decision | Cal.com - Scheduling Software for Online Bookings Laravel raised money and now injects ads directly into your agent When moving fast, talking is the first thing to break Too much Discussion of the XOR swap trick – Heather Cafe Introduction to Spherical Harmonics for Graphics Programmers The Grand Line
Perry — TypeScript → Native
Perry · 2026-05-30 · via Hacker News

v0.5.306 — generational GC + lazy JSON tape default, faster than Node and Bun on most benchmarks

One Codebase. Every Platform.
Native Performance.

Perry compiles TypeScript to native GUI and CLI apps on macOS, iPadOS, iOS, Android, Linux, Windows, watchOS, tvOS, WebAssembly, and the Web. No runtime. No Electron. Just native binaries.

Get StartedView on GitHub

$ perry compile main.ts

Compiling main.ts...

✓ Compiled executable: main (2.3 MB)

$ ./main

Hello, World!

Why Perry?

Everything you need to compile TypeScript to native applications

No Runtime Required

Produces standalone native executables. No Node.js, no V8, no runtime dependencies. Just a single binary that runs anywhere.

Fast Compilation

Direct TypeScript to native code compilation using SWC for parsing and LLVM for optimized code generation. No intermediate JavaScript.

Small Binaries

Output binaries are typically 2-5MB. With optional V8 runtime for JS npm packages, 15-20MB. Ship less, deploy faster.

Deterministic Builds

Same input, same binary. Reproducible across machines, across CI runs, across teams. No mystery rebuilds.

Comprehensive Standard Library

Built-in native implementations of fs, path, crypto, os, Buffer, child_process, and more. Use familiar Node.js APIs.

Optional V8 Runtime

Need to use a pure JavaScript npm package? Enable the V8 runtime flag for full npm ecosystem compatibility.

25+ Native UI Widgets

Buttons, text fields, text areas, tables, canvas, scroll views, QR codes, secure fields, splash screens, and more — all compiling to real platform widgets via AppKit, GTK4, Win32, UIKit, and JNI.

Compile-Time Plugin System

Modules compose at build time — no runtime plugin overhead, no IPC boundaries. Your dependencies become direct native function calls in the final binary.

True Multi-Threading

Real OS threads with parallelMap, parallelFilter, and spawn. Compile-time safety rejects mutable captures — no SharedArrayBuffer, no workers, just threads.

Compile-Time i18n

Automatic string extraction, CLDR plural rules for 30+ locales, compile-time validation. Translations baked into the binary with near-zero runtime lookup.

Native on Every Platform

Perry compiles your TypeScript to native UI frameworks, WebAssembly, and JavaScript — not web views, not Electron. Real native widgets on every platform, plus the web.

From Code to App Store

Perry doesn't just compile your app — it gets it into your users' hands.

Build & Sign

Cross-platform builds from one command. Code signing for macOS, iOS, Android, and Windows handled for you. No wrestling with Xcode provisioning profiles or Android keystores.

Distribute

Push to the App Store, Play Store, or ship direct downloads. Perry Publish handles packaging, notarization, and submission.

Verify

Powered by Geisterhand. Automated UI testing across all 6 platforms. Know your app works everywhere before your users tell you it doesn't.

Free for open-source projects. Plans for teams → /publish

Framework Comparison

The only framework that checks every box

TypeScript compiled to native code. Real platform widgets. No runtime overhead.

FrameworkLanguageNative CodeNative WidgetsRuntime Overhead

PerryAOT compiled to native binary

TypeScriptNone

React NativeJIT / interpreted at runtime

JS / TypeScriptHermes / V8 + Bridge

FlutterAOT compiled, custom renderer

DartDart VM + Skia engine

KMP + ComposeJVM on Android, native on iOS

Kotlin

Partial

Kotlin runtime + Skia

Swift for AndroidNative binary, no shared UI

Swift

No shared UI

Swift runtime on Android

.NET MAUIPartial AOT via Mono

C#

Partial

.NET / Mono runtime

NativeScriptJS runtime, native widget access

JS / TypeScriptV8 / JavaScriptCore

IonicWeb app in native wrapper

JS / TypeScriptWebView + Capacitor

Write TypeScript, Ship Native

Use familiar TypeScript syntax and APIs. Perry handles the rest.

// hello.ts

const greeting = "Hello, World!";

console.log(greeting);

// Compiles to ~2MB native executable

// No runtime needed!

Performance Comparison

Native compilation delivers unmatched efficiency

MetricPerryNode.jsBun
Binary Size2-5 MB~80 MB~90 MB
Startup Time~1 ms~30 ms~10 ms
Runtime DependenciesNoneNode.jsBun
Memory OverheadMinimalV8 + GCJSC + GC

Benchmark Results: Up to 18x Faster

Perry v0.5.279 vs Node.js v25 — RUNS=11 median, Apple M1 Max (lower is better)

json roundtrip

75ms vs 394ms

loop overhead

12ms vs 54ms

math intensive

14ms vs 51ms

loop data dependent

235ms vs 322ms

Binary SizeLower is better

Get Started

Install Perry and start compiling TypeScript to native executables

1Installation

$ brew tap PerryTS/perry

$ brew install perry

Requires Homebrew. Supports macOS arm64 and x86_64.

2Usage

Compile a file

perry compile main.ts

Compiles main.ts to a native executable

Custom output

perry compile main.ts -o myapp

Specify the output executable name

With V8 runtime

perry compile main.ts --enable-js-runtime

Enable V8 for JavaScript npm package compatibility

Check compatibility

perry check ./src

Validate TypeScript code for native compilation

Feature Support

Comprehensive TypeScript and Node.js API coverage

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-Order FunctionsFunctions 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+ Native npm Packages

Popular npm packages reimplemented in native Rust. No npm install, no node_modules, just fast native code.

Database

mysql2pgmongodbbetter-sqlite3ioredis

Security

bcryptargon2jsonwebtokencrypto

HTTP

httphttpsaxiosnode-fetchwsnodemailer

Data Processing

cheeriosharpzliblodash

Date & Time

dayjsmomentdate-fnsnode-cron

Utilities

uuidnanoidslugifyvalidatordotenvrate-limiter-flexible

Just import and use - Perry automatically uses the native implementation

How It Works

From TypeScript source to native executable in seconds

HIR

TransformMonomorphization

Want to know how the compiler works under the hood? Compiler internals