7 ポイント 投稿者 GN⁺ 2025-12-17 | 2件のコメント | WhatsAppで共有
  • Rustで書かれた超高速 Python 型チェッカー兼言語サーバーであるtyがベータ版として公開
  • mypyPyrightPylanceの代替として設計され、10〜60倍高速な性能を提供
  • インクリメンタルアーキテクチャにより、コード修正時に必要な部分だけを再計算し、リアルタイム応答速度を最大化
  • 正確性と使いやすさを重視し、交差型、高度な型ナローイング、到達可能性解析など最新の型システム機能をサポート
  • Astral は ty をRuffuvとともに Python エコシステムの中核開発ツールへと発展させる計画

ty 概要

  • tyは Astral が開発したPython 型チェッカー兼言語サーバーで、Rust で実装されている
    • 既存のmypyPyrightPylanceよりはるかに高速な代替として設計
    • Astral の社内プロジェクト全体ですでに利用されており、ベータ段階で外部ユーザーにも推奨されている
  • Astral は Python エコシステム向けの高性能開発ツールを作るチームで、uv(パッケージマネージャー)とRuff(リンター兼フォーマッター)で知られている

性能とアーキテクチャ

  • ty は言語サーバー中心の構造で設計されており、ファイル修正時に必要な演算だけを再実行するインクリメンタル処理方式を採用
    • このため、エディター内でのリアルタイム更新速度が非常に速い
  • キャッシュなしで実行した場合でもmypy および Pyright より 10〜60 倍高速
    • 例: PyTorch リポジトリの主要ファイルを修正した際、診断の再計算速度は4.7msで、Pyright(386ms)より 80 倍、Pyrefly(2.38秒)より 500 倍高速
  • 大規模プロジェクトでもインクリメンタル更新時の性能差は数十倍以上に達する

型システムと正確性

  • ty は交差型(intersection types)高度な型ナローイング(advanced type narrowing)、**型ベースの到達可能性解析(reachability analysis)**などをサポート
    • これらの機能により正確な型フィードバックを提供し、不要な誤検知(false positive)を減らす
  • 目標は単なる速度向上ではなく、正確性とユーザー体験をともに改善した型チェッカーの構築

診断システム

  • ty はRust コンパイラのエラーメッセージシステムに着想を得た高度な診断システムを含む
    • 単一の診断メッセージ内で複数ファイルの文脈をあわせて提示し、問題の原因と解決の方向性を明確に示す
    • 例: 誤った辞書キーの代入時に、型不一致の位置と宣言位置をあわせて表示
  • 診断出力は ty の中核インターフェースであり、人間にも AI にも理解しやすい構造で設計されている

言語サーバー機能

  • ty はVS CodeCursorなど LSP(Language Server Protocol)をサポートするあらゆるエディターで利用可能
    • 定義へ移動シンボル名の変更自動補完自動インポートセマンティックシンタックスハイライトインレイヒントなど、モダンな言語サーバー機能をすべてサポート
  • VS Code 拡張機能でインストールでき、CLI も uv tool install ty@latest コマンドでインストール可能

今後の計画

  • ベータ以降の短期目標は安定性の強化とバグ修正Python 型仕様の完成Pydantic と Django のサポート
  • 長期的には ty を Astral ツールチェーンの意味ベース機能エンジンへ拡張
    • デッドコード削除未使用依存関係の検出セキュリティ脆弱性(CVE)の到達可能性解析型認識リンティングなどの機能を予定
  • Astral は ty を継続的に改善し、Python を最も生産的なプログラミングエコシステムにすることを目標としている

謝辞

  • ty の開発には数十人のオープンソース貢献者が参加しており、MIT ライセンスで公開されている
  • SalsaElixirPython typing コミュニティのさまざまな人物やチームが技術的な協力とインスピレーションを提供
  • Astral の中核チームは型理論Python ランタイムの意味論エコシステムの利用パターンへの深い理解をもとに ty を開発した

2件のコメント

 
iolothebard 2025-12-19

AstralはPython派なのか、それともRust派なのか…
アストラルってことだね〜

 
GN⁺ 2025-12-17
Hacker Newsの意見
  • この比較表にTyが追加されるといいなと思う
    Python typing conformance結果表を見ると、Pyrightの性能を過小評価すべきではないと思う
    EmacsでTy(LSP)を少し使ってみたが、かなりよく動く。ただ、メソッドシグネチャが表示されるときに一部パラメータの型注釈が少し冗長に見えるのがやや気になる
    それでも長期的にはTyを使う可能性が高いと思う。最初のベータ版リリースおめでとう

    • 仕様準拠も重要だが、それで型チェッカーを選ぶのはおすすめしない
      実際のユーザーが重要視する点とは距離がある。(私はPython Typing Councilで仕様とテストを一緒に作っていた)
    • こちらでも近いうちにその表へ追加する予定。Pyrightレベルのconformanceに追いつくには少し時間がかかるだろうが、正式リリース前までにはそれを目標にしている
    • Pyrightも素晴らしいが、BasedPyrightはその上でさらに改善されたバージョンだ
      それでも私はuvの満足しているユーザーなので、Tyが十分安定したら移行するつもり
    • このPRはまだWIPの状態だが、再びOSSへの貢献を始める動機づけになった
    • Pyrightは良いが速度が遅い。LSPの応答速度はUXに大きく影響するので、Tyがどれだけ改善したのか期待している
  • Astralは素晴らしいツールを作っているので、破壊的な収益化なしにうまく成長してほしい

    • Astral初の商用製品はpyxだ。成功して、これからもクールなオープンソースツールを作り続けてほしい
    • これまでの仕事は、Pythonコミュニティに対する公共サービスのレベルだと思う
    • 方向性はbunに近い感じがする
    • ただ、既存ツールを完全に置き換えると主張しながら、実際には機能をすべて実装していない点は残念
      結局既存ツールに戻らなければならない場合が出てくる。私にとっては速度より正確な型検査のほうが重要だ
  • Astralチームに感謝している。私たちはPydanticを多用しているので、Tyの正式リリースで1級サポートが予定されていると聞いて期待している
    現在はPyrightとMypyを一緒に回しているが、それぞれ異なるエラーを見つけるので重複しているように感じる
    この表によればPyrightがsupersetだというが、実際の経験は違った
    2年前の分析なので今は違うかもしれない。大規模コードベースでPyrightひとつに統合した事例があるのか気になる

    • 私もmypyの初期ユーザーとして、PyrightがVS Codeに追加されたとき比較してみた
      mypyのほうがより柔軟かつ正確に推論する場合が多く、Pyrightはfalse positiveが多かったので無効にしたこともある
      最近はPyrightもかなり進化しているだろうが、BasedPyrightはむしろ非生産的だった
      コミュニティではmypyをけなしてPyrightを称賛する雰囲気が強いが、私の経験とはやや違う
    • 繰り返すが、仕様準拠テストは実際のユーザー体験を反映しない
      主に注釈の意味論に焦点を当てているため、型チェッカー選びの基準にするには不適切だ
      (私もPython Typing Councilでこの仕様とテストを作っていた)
  • タイトルは「Tyベータリリース発表」のほうが適切だった気がする
    私はPyreflyをPyrightより好んでいたが、最近のバグのせいで以前のバージョンに固定しなければならず不便だった
    Tyをインストールしようとしたら、Cursorのバージョン互換性エラーが発生した

    • もし追加のエラーメッセージがあるなら、issue登録をお願いしたい。私はCursorでTy拡張を数週間問題なく使っているので再現が難しい
    • (Pyreflyのメンテナーです)そのクラッシュもPyreflyリポジトリにissueとして残してくれると助かる
  • いまだに1つの言語にこれほど多くの型チェッカーが存在する理由がわからない
    ライブラリ作者はすべてのチェッカーについてテストしなければならないのか? 開発者は特定のチェッカーをサポートするライブラリだけを使うべきなのか?

    • Pythonはダックタイピング + 選択的型注釈の言語なので、多様な実装が生まれるのは避けられない
    • 一部は呼び出し側推論の範囲や明示的な型要求ポリシーが異なることで生じる差だ
      パッケージ境界では明示的な型が必要だが、内部コードでは曖昧さが多い
      Astralは特にインクリメンタル処理性能を主要な設計目標にしている
    • 実際には大半がmypy基準でテストされている。PyrightはVS Codeの標準拡張のおかげで徐々に影響力を広げている
      必要なら自分でtype stubを提供して互換性を確保することもできる
  • Tyが「型チェッカーを満たすために注釈を追加する必要はない」という立場を取っているのが気に入った
    以前のチェッカーは些細な警告で煩わしかったが、Tyは実際の論理的なエラーをうまく見つけてくれる

  • Tyが**言語サーバー(LSP)**の役割も果たすことを今日初めて知った
    つまり、NeovimやVSCodeでmypyとPyrightの両方を置き換えられる

  • Django対応はどうなのか気になる。Djangoはマジックコードが多く、型チェッカーには扱いにくい

    • TyはまだDjangoをサポートしておらず、プラグインシステムもない
      Djangoを使っているなら、しばらくはmypyかPyrightを維持したほうがよい
  • Tyが速くなくても、**交差型(A & B)**のサポートだけで使う価値があると思う
    標準のPython型システムに欠けていた機能なので歓迎したい

  • Rubyにもuvみたいなものがあるのか気になる。PythonやTypeScriptではuvやbunを使っているが、Rubyは遅れている感じがする

    • Rvという新しいRuby管理ツールがある。これがその代替になるかもしれない