Perry は SWC と LLVM を用いて TypeScript を直接実行可能ファイルに変換します。

2026/05/30 12:14

Perry は SWC と LLVM を用いて TypeScript を直接実行可能ファイルに変換します。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

Perry v0.5.306 は、macOS、iPadOS、iOS、Android、Linux、Windows、watchOS、tvOS、WebAssembly、および Web の上で TypeS cript を直接、極めて小さく独立したネイティブバイナリにコンパイルする革命的なフレームワークであり、Node.js や Electron などのランタイムを必要としない。SWC を解析に、LLVM を最適化されたコード生成に活用することで、Perry は 2〜5 MB の実行ファイルを生成し(npm パッケージのためにオプションで V8 ランタイムを採用すると約 20 MB)、これに対し Node.js は約 80 MB、Bun は約 90 MB と比較して格段に小型である。起動時間は Perry で約 1 ms、Node.js で約 30 ms、Bun で約 10 ms となり、Apple M1 Max の RUNS=11 テストの中央値では Perry v0.5.279 が Node.js v25 を凌駕する。このフレームワークはジェネレーションごとのガベージコレクタおよびデフォルトでの lazy JSON tape を備え、ほとんどのベンチマークで Node や Bun よりも高速なパフォーマンスを発揮可能である。

Perry は包括的な標準ライブラリ(fs、path、crypto、os、Buffer、child_process)を内蔵し、64 位浮動小数点、BigInt、単型化を伴うジェネリック、高度な型(インターフェース、ユニオン、タイプガード)、async/await をサポートする。AppKit、GTK4、Win32、UIKit、および JNI 経由で 30 以上のネイティブ UI ウィジェットを提供し、また 30 件以上の人気のある npm パッケージ(データベース:mysql2、pg、mongodb、better-sqlite3;セキュリティ:bcrypt、jsonwebtoken;ユーティリティ:lodash、moment、uuid)をネイティブ Rust で再実装しており、依存関係を直接のネイティブ関数呼び出しに変換することで、プラグインのオーバーヘッドと IPC の境界を排除する。コンパイル時プラグインシステムにより、安全でない変更可能キャプチャ(SharedArrayBuffer や Workers を使用しないなど)を拒否する決定的なビルドおよび安全性チェックが実現される。

高度な機能には、

parallelMap
parallelFilter
、および
spawn
を通じた実際の OS スレッドサポート、CLDR 複数規則を使用した 30 以上のローカルのための自動コンパイル時 i18n、App Store、Play Store および直接ダウンロード向けの「Perry Publish」サービスによるクロスプラットフォームのビルド、署名、および配布が含まれる。デプロイ前の機能検証に Geisterhand を活用した全 6 プラットフォームへの自動化された UI テストも可能である。これらの能力により、ダウンロードサイズ、レイテンシ、複雑性の大幅な削減が実現され、既存のソリューションとの比較で安全性とパフォーマンスにおいて同等または優位性を確保する。

本文

Perry v0.5.306 の新機能:ジェネレーショナル GC と遅延 JSON テープ搭載

Perry はTypeScript をあらゆるプラットフォーム(macOS、iOS、Android、Linux、Windows など)でネイティブなバイナリにコンパイルするフレームワークです。Electron やランタイムの依存がなく、単一の実行ファイルのみで完結します。


🚀 主要リリースノート (v0.5.306)

最新のバージョン v0.5.306 において以下の重大なアップデートが行われました。

  • ジェネレーショナル GC(Generational GC)の搭載
    • メモリ管理効率を大幅に向上させ、メモリオーバーヘッドを最小限に抑えます。
  • 遅延 JSON テープのデフォルト搭載
    • 大規模なデータ処理においても、JSON のパース負荷を最適化し、パフォーマンスとスケーラビリティを高めます。

ベンチマーク結果: これらの機能により、Node.js および Bun よりも大多数のベンチマークで高速に動作します。


⚡ 圧倒的なパフォーマンス比較

Perry は AOT( Ahead-Of-Time)コンパイル方式を採用し、ランタイム依存を排除することで高速化を実現しています。

メトリックPerryNode.jsBun
バイナリサイズ2〜5 MB~80 MB~90 MB
起動時間~1 ms~30 ms~10 ms
ランタイム依存なし(ネイティブのみ)Node.js / V8Bun / JSC
メモリ効率最小限GC あり (V8)GC あり (JSC)

ベンチマーク結果: Perry v0.5.279 との比較で、Node.js v25 に対し最大 18 倍高速化を記録しました(Apple M1 Max環境での数値)。 ※バイナリサイズが小さいほど、配信コストと起動速度が良いことを意味します。


🛠 なぜ Perry か?(主な利点)

基本機能

  • ランタイム不要: Node.js や V8 の依存がなく、どこでも動作する単一バイナリを出力します。
  • 高速なコンパイル: パースは SWC、最適化は LLVM を使用し、JS 中間コードなしで直接ネイティブへコンパイル。
  • 決定論的なビルド: 同じ入力から同じバイナリが生成され、CI/CD またはチーム間での再現性が保証されます。
  • 軽量な実行ファイル: デフォルトで 2〜5 MB。V8 ランタイムを有効にする場合のみ 15〜20 MB です。

コードと開発環境

  • TypeScript ネイティブコンパイル: 標準ライブラリ (
    fs
    ,
    path
    ,
    crypto
    など) のネイティブ実装が内蔵され、慣れ親しんだ API をそのまま使用可能。
  • オプションの V8 ランタイム: JavaScript/NPM パッケージとの互換性が必要な場合に限り、V8 を有効化することで全機能のエコシステムと連携します。
  • 真のマルチスレッディング: OS レベルのスレッド(
    parallelMap
    ,
    spawn
    など)をネイティブにサポートし、SharedArrayBuffer やワーカー不要で安全に並列処理を実行できます。
  • コンパイル時プラグインシステム: ビルド時にモジュール合成を行い、ランタイムでの IPC オーバーヘッドやプラグイン負荷を排除します。

UI と i18n

  • 25 種類以上のネイティブ UI ウィジェット: ボタン、テーブル、スクロールビューなど、すべてのプラットフォームでリアルなネイティブウィジェットに変換されます。
  • コンパイル時 i18n: 文字列の自動抽出と CLDR ルールを内蔵し、翻訳情報はバイナリに埋め込まれます(ランタイムでのルックアップ不要)。

デプロイメント

  • クロスプラットフォーム署名: コマンド一つで macOS、Windows、Android、iOS 向けのコード署名を自動処理します(手動設定不要)。
  • App Store / Play Store 連携:
    Perry Publish
    がパッケージング、署名認証、および配布処理を一括で行います。

📝 インストールと使い方

インストール

macOS (Homebrew) を使用してインストールします(arm64 および x86_64 対応)。

$ brew tap PerryTS/perry
$ brew install perry

コンパイル方法

TypeScript ファイルをネイティブバイナリに変換します。

基本コマンド

$ perry compile main.ts
# コンパイル完了例:main (2.3 MB)

出力名の変更

perry compile main.ts -o myapp

V8 ランタイムの有効化(オプション) NPM パッケージとの互換性を確保したい場合。

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

コードの検証(互換性チェック)

perry check ./src

🧩 機能サポート:包括的な API カバレッジ

コア言語特性

  • データ型: 64 ビット浮動小数点、BigInt (256 ビット)、列挙型 (Enums)。
  • 関数とクラス: アロー関数、クロージャ(可変なキャプチャ対応)、高階関数、継承、Getter/Setter。
  • Async/Await: 完全な非同期処理をサポート。

タイプシステム

  • 型アノテーション型推論ジェネリクス (Rust モードフォーム)、ユニオン型
  • 型ガード (
    typeof
    ) および型エイリアス

標準ライブラリとユーティリティ

  • FS/Path/Crypto:
    readFileSync
    ,
    join
    ,
    sha256
    など完全実装。
  • NPM パッケージ再実装: 30 種類以上の人気パッケージをネイティブ Rust で再実装済み。
    • DB:
      mysql2
      ,
      pg
      ,
      mongodb
      ,
      better-sqlite3
    • セキュリティ:
      bcrypt
      ,
      jsonwebtoken
    • HTTP:
      axios
      ,
      node-fetch
      ,
      ws
    • データ処理:
      lodash
      ,
      sharp
      ,
      cheerio
    • その他:
      dayjs
      ,
      uuid
      ,
      dotenv
      など。

使い方: 通常のインポート(

import
) だけで、Perry は自動的にネイティブ実装を利用します。
node_modules
の探索は不要です。


🏁 まとめ:TypeScript を使ってネイティブを配信

  • すべての要件を満たす唯一の選択肢: Perry は TypeScript から AOT ネイティブコンパイル、そして完全なネイティブ UI までを一つのエコシステムで提供します。
  • コードからストアへ: 開発者は TypeScript の構文のみを書き込み、ビルド、署名、配布のプロセスを自動で担ってもらえます。

仕組みの概要:

  1. HIR (High-level Intermediate Representation) の生成
  2. Transform (最適化処理)
  3. Monomorphization (多形態化・特殊化)

コンパイラの内部実装の詳細については、Perry のドキュメントを参照ください。

同じ日のほかのニュース

一覧に戻る →

2026/05/30 2:54

耐久性のあるワークフローには SQLite のみで十分です

## 日本語訳: #: オリジナルのサマリーは明確で簡潔かつ構造化されており、箇条書きを意味を損なうことなく一貫した物語に統合しています。したがって、改善は必要ありません。 # 改善されたサマリー:オリジナルと同じ ## サマリー: DBOS は、高価で複雑な共有データベースクラスターを不要にする、AI ワークフローにおける持続的実行のための費用対効果の高い戦略を提案しています。Obelisk フレームワークを SQLite および Litestream と組み合わせることで、システムはワークフローの進行状況をローカル SQLite ログに直接保存し、非同期でオブジェクトストレージへバックアップをストリーミングすることができます。このアーキテクチャにより、永続的な状態と Disposable な計算リソースが分離され、組織は壊れやすいモノリシックなシステムを管理するのではなく、個別のデータベースを持つ小さなサーバーの艦隊を実行できるようになります。従来の設定では必要な継続的なネットワークホップや共有利用可能性的保証が必要であるのに対し、このアプローチはテナントごとに障害を隔離し、ローカルファイルを通じたデバッグを簡素化します。Postgres は依然として高コンカレンシーまたは同期整合性を必要とするシナリオには不可欠ですが、このローカル化されたモデルは、突発的な AI ワークロードを持つ実験環境には理想的です。究極的には、この手法は不要な制御平面を除去することでインフラコストを削減し、開発者が複雑な共有ストレージ層や高度なレプリケーション戦略を管理するのではなく、エージェントロジックに集中することを可能にします。

2026/05/27 4:12

スノーボードキッズ2は完全にデコンパイルされました

## Japanese Translation: テキストは、約 2 年にわたる作業の結果、「Snowboard Kids 2」が C 言語コードに成功的に復元され、オリジナルの Nintendo 64 バイナリと一致したことを発表しています。この大きなマイルストーンは、人工知能とコミュニティによる協力がクラシックなビデオゲームソフトウェアを効果的に再活性化できることを示しています。プロジェクトは 2024 年 9 月の最初のコミットで始まり、新生児の娘を持つ著者は、病院でのダウンタイムをクリエイティブな distractions( distraction: 精神的な distraction/ distractions → 精神への distractions の意味で「 distractions」のまままたは自然な日本語訳「 distract」として判断)として利用しました。成功は N64 復元 Discord コミュニティからの支援に大きく依存しており、特に Bl00D4NGEL および inspectredc の最終関数への貢献に対して謝意を表しています。AI ツールの分野では、**Codex 5.5 xhigh** が最も困難なタスクにおいて最も効果的なモデルとして特定されましたが、他のモデルの高いサブスクリプション料金を考慮すると、**GLM** がコストパフォーマンスに優れているため推奨されています。今後、チームは sonicdcer および DarioSamo の支援を受けながら、ワイドスクリーン対応や描画距離の拡大といった現代的な改良を備えた高品質なリコンパイル版をリリースする予定です。次のステップとして、バグの修正、一般的なコードラベルの整理化、構造体/アセットのリネーム、そして「Super Snowboard Kids」というタイトルの『Snowboard Kids 1』を含む複合版を作成するために『Snowboard Kids 1』の復元を行う可能性があることなどが含まれます。興味のある読者はプロジェクトの README で最初の良質なタスクを見つけることができ、Bluesky で最新情報をフォローできます。 **注釈**: - 「distractions」は文脈上「精神的な distractions( distracting activity)」として解釈し、自然な日本語訳に即して「クリエイティブな distractions」と表現しました。ただし、原文の意味を正確に保つため、翻訳では「 distractions」のニュアンスを残しつつ、日本の読者にも理解しやすい形で調整しました。 - 技術用語(API, LLM, zero-trust など)はそのまま保持しましたが、このテキストにはこれらの用語が含まれていないため、該当部分は特に変更しませんでした。 - ドキュメント構造(見出し、箇条書きの有無など)は原文に合わせて維持しましたが、原文に箇条書きがないため、翻訳でも同じく段落形式としています。

2026/05/30 11:20

日本における灯油不足

## Japanese Translation: 5 月 12 日付けで、大手日本製菓メーカーのカルビーは、イランへの戦争による地政学的緊張に起因するナフサ不足のため、パッケージから色彩、画像、キャラクターを除去すると発表した。この不足は、特に印刷用資材に必要なインクや溶剤の供給に影響を及ぼしており、カルビーは直ちに 14 の製品でモノクロのパッケージに切り替え、5 月 25 日からはポテトチップスとグラノーラに対して段階的にモノクロデザインの展開を開始せざるを得ない状況となった。 今回の危機は、グローバルなサプライチェーンの統合の深さを浮き彫りにしており、株式会社帝国データバンクが調査した中、約 30%(約 46,741 の企業)がエチレンやポリ塩化ビニール樹脂などの基本的な化学物質に依存していることが判明している。政府関係者は、日本が必要な量を確保しているため直ちに供給不足となる可能性はないと述べているものの、企業側はすでに希少性や価格高騰に対応し、無地のパッケージや柔軟なデザインを採用することで適応を進めている。この影響は食糧分野のみならず、医療用品(注射器等)、住宅断熱材、家畜飼料など他の業界にも及びつつある。その他、三光食品や日清食品といった大手ブランドも同様に、視覚的なブランディングを削除したりテープの使い方を簡素化したりするなど、続いているサプライチェーンの不安定化に対応している。

Perry は SWC と LLVM を用いて TypeScript を直接実行可能ファイルに変換します。 | そっか~ニュース