ブログ
16 posts
Auto-Update, a Live Inspector, and the Compiler That Halved Itself
· updater · devtools · refactor前回の投稿は v0.5.306 で締めくくり、ストーリーは gen-GC + JSON + ベンチマーク でした。4 日後、Perry は v0.5.359 に到達 — つまり 53 のパッチリリース — そして、ストーリーはまた違うものになっています。これらのリリースに、ベンチマーク数値を見出しにしたものはありません。ほぼすべてが トラッカーで Issue がクローズされていく 話です。
tvOS, Cross-Compile iOS from Linux, and Perry Login
· tvOS · cross-compilation · billing5日間、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
· threading · i18n · watchOSPerry v0.4.0 はプロジェクト開始以来最大のリリースです。1サイクルで3つのバージョンジャンプ — v0.3.0(i18n)、v0.3.2(watchOS)、v0.4.0(マルチスレッド)— そしてコンパイラ自体も並列化されました。リリースされた全内容を紹介します。
The Full Pipeline: Docs, Distribution, and WidgetKit
· distribution · documentation · WidgetKit7日間で82コミット。49ページのドキュメントサイト。App StoreとPlay Storeへの自動公開。 HomebrewとAPTパッケージ。TypeScriptからコンパイルされたネイティブWidgetKit拡張。 セルフホスティングLLVMコンパイラ。そしてすべてのプラットフォームにわたる数十のバグ修正。
Plugin Systems Are a Performance Tax
· architecture · performance · compilerVS Code をインストールします。速いです。15個の拡張機能を追加します。すると起動に4秒かかるようになり、 Extension Host が 800 MB の RAM を消費します。何が起きたのでしょうか?
Optimizing Everything: One Week, 68 Releases, and a 547x JSON Speedup
· performance · llvm · JSON前回のブログ記事はPerry v0.5.12とともに公開されました。今日はv0.5.80です。これは7日間で68回のパッチリリースであり、そのほぼすべてが1つのこと――残っていたすべての遅いパスを速いパスに変えること――に集中していました。
npm Distribution, perry dev, and Winning Every Benchmark
· npm · developer-experience · performance前回の記事はPerry v0.5.80で締めくくられ、ベンチマーク表には1つの頑固な負けが残っていました――JSON.parse/stringifyのラウンドトリップは依然としてNodeより1.6倍遅い状態でした。6日後、Perryはv0.5.174に到達しました――これは94回のパッチリリースです――そして他の何よりも先に取り上げるに値する3つの変化がありました:
Introducing Perry
· announcement · compiler · TypeScriptPerry をご紹介します。Perry は Rust で書かれたネイティブ TypeScript コンパイラで、 TypeScript を直接スタンドアロン実行ファイルにコンパイルします。Node.js ランタイム不要、 Electron ラッパー不要、妥協なし。あなたのコードが、即座に起動しどこでも動作するネイティブバイナリに コンパイルされます。
Generational GC, Lazy JSON, and Benchmarks That Hold Up to Scrutiny
· GC · JSON · performance前回の記事はv0.5.174で締めくくられ、見出しは1つでした:Perryはついに、ツリー内スイートのすべてのベンチマークでNodeとBunの両方に勝っていました。3日間の作業とGC + JSONコミットのバックログを経て、Perryはv0.5.306に到達しました――これは132回のパッチリリースです――そしてストーリーは別のものになっています。見出しは547倍のスピードアップでもなければ、新しい勝ち列でもありません。それらの勝利を擁護可能なものにする作業です。
From Compiler to Ecosystem: React, Databases, and Cloud Builds
· ecosystem · perry/ui · databases1週間前、PerryはUIツールキットを持つコンパイラでした。TypeScriptを書き、ネイティブバイナリにコンパイルし、 6つのプラットフォームで配布できました。それがストーリーでした。今日、ストーリーはより大きくなりました: Perryはエコシステムへと進化しています。3つのデータベースORM、ユニバーサルプッシュ通知、 App StoreとPlay Storeへの公開を伴う分散ビルド、React互換レイヤー、 そして自動アプリ検証 — すべてがこの1週間で実現しました。
Cross-Platform Native UI from TypeScript
· architecture · UI · cross-platformPerry の最も野心的な目標の1つは、単一の TypeScript コードベースから真にネイティブな GUI アプリケーションを 提供することです。ネイティブシェルにラップされた Web ビューではありません。独自のピクセルを描画する カスタムレンダリングエンジンでもありません。各プラットフォーム独自の UI フレームワークによってレンダリングされる 本物のネイティブウィジェットを、ビルド時に TypeScript からコンパイルします。
Cross-Compile to Windows, iOS Game Loops, and 100% Test Parity
· compiler · cross-compilation · infrastructure今週、Perryコンパイラに103件のコミット。主要な機能:LinuxからWindowsの実行ファイルをクロスコンパイルできるようになり、iOSアプリでブロッキングゲームループが実行可能になり、コンパイラがテレメトリのためにクラッシュを報告し、セルフホスティングコンパイラがすべての決定論的テストに合格しました。さらにHubインフラの大規模アップグレードと50以上のバグ修正があります。
From Cranelift to LLVM: How Perry Got 24x Faster
· compilers · llvm · craneliftPerryのバックエンドがCraneliftからLLVMへの移行を完了しました。v0.5.12時点でLLVMが唯一のコード生成バックエンドとなり、Perryはすべてのベンチマークで Node.jsに勝利しています。その差は1.7倍から24.6倍に及びます(2つは同点)。
Compiling Hono, tRPC, and Strapi to Native Binaries
· compiler · frameworks · progressPerry は3つの主要な TypeScript フレームワーク — Hono、tRPC、Strapi — をネイティブ ARM64 実行ファイルにコンパイルできるようになりました。1秒未満でコンパイルし、2 MB 未満のバイナリを生成し、 クラッシュなしで動作します。
Building Pry: A Native JSON Viewer in TypeScript
· tutorial · showcase · PryPry は TypeScript で完全に構築され、Perry でコンパイルされたネイティブ JSON ビューアです。 技術デモではありません — API レスポンス、設定ファイル、データダンプの検査に毎日使っている 実際のツールです。この記事では、どのように構築され、どのようにコンパイルされ、TypeScript が ネイティブアプリにコンパイルされるときの開発体験がどのようなものかを紹介します。
All Six Platforms, Full Feature Parity
· UI · cross-platform · releasePerryのネイティブ UIシステムの最初のバージョンを出荷した時、「クロスプラットフォーム」とは macOSがうまく動き、他の5つのプラットフォームはスタブという意味でした。v0.2.162の今日、 それはもう当てはまりません。6つのプラットフォームすべて — macOS、iOS、iPadOS、Android、Linux、Windows — が 完全な機能パリティを共有しています。同じTypeScriptコードがすべてのターゲットでネイティブウィジェットにコンパイルされます。