Rust プロジェクトの目標:immobile タイプと保証されたデストラクター

2026/08/03 15:42

Rust プロジェクトの目標:immobile タイプと保証されたデストラクター

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

要約

Japanese Translation:

Rust のエコシステムは、自己参照構造の型能力を明示的に管理するために、3 つの新しい自動特性(auto-traits)「

Move
」、「
Destruct
」、および「
Forget
」の導入を提案しています。このイニシアチブは、現在 Linux カーネルのようなシステムにおいて制限的な不可移動性(immovability)を課している
Pin
への依存度を削減することで、メモリ安全性ロジックを簡素化することを目的としています。また、
mem::forget
がデストラクタの正常な実行を妨げるというセキュリティ上のギャップに対処し、スコープ付きアインク(async)スパウニングのような安全なパターンを可能にします。2026 年〜2027 年を目指して進められるこの取り組みは、Rust for Linux の目標に沿っており、実際のカーネルプロジェクトを通じた検証を受けているコンパイラのプロトタイプと RFC が含まれます。本年度の範囲外なのは
Future
特性の変更であり、今回の取り組みは
Pin
の定義の重複を解決したり、
pin
を言語項目にするのではなく、
Pin
の将来的な廃止に焦点を当てています。ロードマップには具体的なタスク(例:イテレータとの相互作用のテスト)と主要な貢献者の名前が含まれており、さらに詳しく知りたい場合は FAQ リソースを利用できます。

Text to translate:

The Rust ecosystem is proposing three new auto-traits—

Move
,
Destruct
, and
Forget
—to explicitly manage type capabilities for self-referential structures. This initiative aims to simplify memory safety logic by reducing reliance on
Pin
, which currently imposes restrictive immovability, particularly in systems like the Linux Kernel. It also addresses a safety gap where
mem::forget
can prevent destructors from running correctly, enabling safer patterns like scoped async spawning. Targeting 2026–2027, the work aligns with Rust for Linux goals and involves compiler prototypes and RFCs validated through real-world kernel projects. Out of scope this year is changing the
Future
trait; the effort focuses on eventual deprecation of
Pin
rather than solving its definition duplication or making
pin
a language item. The roadmap includes specific tasks (e.g., iterator interaction testing) and key contributors, with FAQ resources available for further reading.

本文

移動不可な型と保証されたデストラクターの提案

メタデータ

  • コンタクト先: @lcnr
  • ステータス: 承認済み (Accepted)
  • 期間: 2026 年~2027 年
  • ロードマップ:
    async
    の追加のみ。Linux for Rust プロジェクトの一環。
  • トラッキング Issue: [#635], [rust-lang/rust#149607]
  • Zulip チャンネル: #t-lang/move-trait
  • キーパーソン:
    • [types]: @lcnr
    • [lang]: @jackh726

概要

Rust の型システムにおいて、型がどのような操作可能かを表す新しいオートトレイト(自動実装されるトレイト)を導入することを提案します。

現在 Rust は、以下の仮定をすべての型に当てはめていました:

  1. 移動可能: メモリ上の位置を変更できる(代入など)。
  2. 忘却可能:
    mem::forget
    を使用してデストラクターを実行せずに捨てることのできる。

今回の提案では、これらの能力を明示的に記述するためのトレイト

Move
,
Destruct
,
Forget
など)を導入し、**型側からその能力を除外(opt-out)**できるようにします。 これは、「Sized 階層」で「すべての型はコンパイル時に既知のサイズを持つ」という仮定を緩和した先例に従うものです。

開発計画

  1. コンパイラーでの MVP 実装
  2. RFC の作成
  3. Linux カーネルでの実世界テストによる検証

モチベーション

現状の課題

歴史的に、Rust はすべての値が移動可能かつ忘却可能だと仮定していました。しかし、特定の型はこれらの能力から除外する必要があります。

1. 移動不可な型 (Move-Immutable Types)

多くの async futures は自己参照を持ちたいという欲求があります。

  • 自己参照を持つ型は、安全に移動(メモリアドレスの変更)できません。
  • 現在の解決策 (
    Pin
    ):
    • 移動不可性を「場所」の属性として而非「」の属性で表現しています。
    • これにより大きな複雑さが生じます(例:
      The Safe Pinned Initialization Problem
      )。
    • Pin
      は Linux カーネルのようなシステムにおける自己参照型の安全な符号化には不向きです。

2. 保証されたデストラクター (Guaranteed Destructor)

一部の型は、明示的なクリーンアップが必要です。

  • 例:
    Transaction
    は commit/rollback を行う必要がある。
  • 例: スコープ付きタスクハンドルは、終了前に join する必要がある。
  • 問題点:
    • 現在では
      mem::forget
      が安全とみなされるため、デストラクターの実行を保証できません。
    • その結果、子タスクが親スコープから借用するなどのsafe scoped spawn for asyncパターンがブロックされています。

私たちの提案

型に対してどのような操作が可能かを示す新たなオートトレイト階層を一般化します。アプローチは**肯定的(能力を明示的に持つ)**です。必要な機能を段階的に追加します。

トリート能力の定義備考
Move
メモリ上で移動(リロケート)可能型にデフォルトで付与
Destruct
明示的な drop(デストラクター実行)可能スコープ外自動 drop と同等
Forget
mem::forget
を通じて忘却可能
デストラクタ実行なし

「Sized 階層」との類似点

  • 「すべての型は既知のサイズを持つ」→ **「すべての型は移動可能」「すべての型は忘却可能」**という仮定を緩和します。
  • これにより、スケーラブルなベクタや
    extern
    型のサポートが可能になります。

トリートの実装イメージ

// 移動可能性は「場所」の属性而非「型」の属性として符号化
#[lang = "move"]
unsafe auto trait Move {}

// !Move を実装する型:移動不可(安定したアドレスを保持)
// Pin よりシンプル。`Pin` は「場所」の属性だが、このトレイトは「型」として定義可能。
unsafe impl !Move for SelfReferentialType {} 

// Forget: 忘却能力の除外オプション
// !Forget を実装:デストラクター実行を必須とする
unsafe impl !Forget for ScopedTaskHandle {}

!Forget
の効果:

  • ハンドルのデストラクターがタスクを
    join
    するため、ハンドルが忘却できない限り
    join
    が保証されます。
  • これにより、現在 safe Rust では不可能だったsafe scoped spawnパターンが可能になります。

次の 1 年間の作業項目

Move trait の実装

タスクオーナー備考
コンパイラー実装 (
Move
)
@lcnr, @nia-e
RFC の作成@yoshuawuyts
Linux カーネルでのテスト@BennoLossinRfL(自己参照型多用)の重要なユーザー
Iterator と
!Move
の相互作用テスト
@yoshuawuytsジェネレーターベースのエフェクトを
impl Trait + !Move
にダースガー化できることを証明

保証されたデストラクターの実装

タスクオーナー備考
デザインの探索 (オプション階層など)@nikomatsakis既存機能との相互作用を検討

注記: 本年度において**

Future
トリートの変更・更新はスコープ外**です。 Rust の安定版トレイトであり
Pin
に依存しているため、移行ストーリーが必要です。ただし、
Pin
の問題は唯一のものではないため、修正は独立したプロジェクトとして扱うのが最適です。


チームからの依頼

チームサポートレベル備考
[lang]Largeデザインに関する設計会議が必要です。
[types]Large実装およびレビューに参画します。

よくある質問 (FAQ)

Q: これは
Sized
階層の取り組みとどのように関連していますか?

A:

Sized
階層は、Rust の普遍的な仮定を緩和するためのパターン(型側から除外するトレイト階層)を確立しました。今回は同じパターンを、「移動可能」「忘却可能」という仮定に適用します。

Q: "Pin Ergonomics" イニシアチブとどのように関連していますか?

A: 2025H2 の目標である Pin Ergonomics継続的に実験するのは、この提案の代替案です。

  • Pin Ergonomics の拡張案:
    &pin x
    などの新しい言語アイテムや、Drop トリートのワンオフオーバーロード。
  • 今回のアプローチの違い:
    • Pin エルゴノミクスは pin の重複定義問題を解決しません(
      PinnedTrait
      バリヤントが残る)。
    • Pin
      を非推奨 (deprecate) することが最終目標です。Rust は永遠に後方互換性を保証するため、pin を
      &
      mut
      と同等の言語アイテム化は不可能です。
    • したがって、Pin の問題解決策として言語を変更するのではなく、移動不可型を符号化する新しい方法を提供するのが目的です。

Q: safe scoped spawn を可能にするのは何ですか?

A: 保証されたデストラクターの実装が必要です。

  • パターン:
    spawn
    がハンドルを返し、ハンドルのデストラクターがタスクを
    join
    する。
  • もし
    mem::forget
    で忘却できてしまうと、タスクがスコープを超えて存続し、ダングリング参照にアクセスすることになるため不安全です。
  • !Forget
    を実装することで、ハンドルのデストラクター実行が保証され、このパターンが安全になります。

Q: この設計領域についてさらに読むことはできますか?

A: 以下のブログ投稿が参考となります:

  • [Move, Destruct, Leak]: デストラクターと忘却に関するトレイト階層を探索(
    Move
    Destruct
    のスーパートレイトではない)。
  • [Must move types]: コールラーに特定のアクションを強制する型の概念。
  • [Ergonomic Self-Referential Types for Rust]:
    Move
    トリート設計の探索。
  • [Why Pin is a part of trait signatures]: 動機となる
    Pin
    の問題の説明。
  • [Placing functions]:
    !Move
    型のインプレースでの構築のための構文提案。

同じ日のほかのニュース

一覧に戻る →

2026/08/04 6:13

LLM は専門性を報酬とする

## 日本語翻訳: 大規模言語モデル(LLM)は、CSS など基本的なデジタルタスクへの参入障壁を下げていますが、深いドメイン知識の必要性を排除するものではありません。一般的に応用提示技術(generalist prompting techniques)を習得すれば真の価値を引き出せるという一般的な誤解がありますが、複雑な問題解決には特定の分野の知識が不可欠であり、それによって AI を効果的に導く必要があります。数学者のテレンス・ tao の LLM に関する研究に示されるように、専門的な成果は簡潔であるといったスタイル上のヒントではなく、真の理解から生じます。分野に対する親和性がない場合、ユーザーは出力を検証したり、モデルを高度な解決策へと導いたりすることができず、質問の工夫がいくら手巧くてもその限りではありません。著者は、トークンが無限にあっても、非専門家は Tao 氏のような複雑な数学問題においては彼のレベルには達できないと指摘しており、分野知識こそが決定的な要因であることを強調しています。したがって、モデルがさらに強くなるにつれて、人間が正確な要件を伝達し結果を検証するという役割がボトルネックとなります。そのためには、組織は平均的な成果を超えようとする場合、特別な訓練への投資や専門家を採用することが必要であり、AI 統合の未来は汎用的なインターネット検索スキルよりも、制約を定義し高品質な結果を確保するために特定分野での卓越した知識を育成することによって支えられるでしょう。

2026/08/03 23:15

デベロッパーツールのオープンソース化が必須です。

## 日本語翻訳: 人工知能(AI)エージェントは、大規模なユーザーコミュニティや複雑な設定ファイルに依存せずに個々の作成者がパーソナライズされたアプリケーションを構築することを可能にするため、ソフトウェア開発を変革しています。VS Code の拡張機能や vimdiff といった従来の API はリアルタイムでのファイル変更やバックグラウンド処理で苦戦するのに対し、Shelley とような AI エージェントは、上流リリースとの nightly スインジングや人間のレビュー前のコードのプリプロセスなどの複雑なタスクを自動的に処理します。これは、過去 5 年の間にエンジニアが高い維持コストと疑わしい投資対効果のためにカスタムツールを廃棄することが多かった時代から、現在、かつて高価なプラグインシステムを必要としたか多くのユーザーにアモルタイズされた機能が単一ユーザーのために瞬時に組み立てられることへの大きなシフトを示しています。著者は "meat.dev" というツールを作成することでこれを例示しました。このツールは大規模言語モデル(LLM)を使用して、差分からインポートやボイラープレートなど重要なコードを取り除き、開発者がコアアーキテクチャとエッジケース(「the meat」)に集中できるようにします。Shelley 内の発見可能なスキルとして構築されたこのエージェントは、単一のプロンプトでバックグラウンドスインジングなどの複雑なロジックを統合することを可能にし、手動のコマンドライン実行の必要性を排除します。さらに、エージェントによるパーソナライゼーションは学習曲線を劇的に削減し、ソリューションが「機能しているように見える」場合、大規模なレビューなしに小規模チームや個人開発者向けのカスタムソフトウェア(例:セルフホストされたブログ)を可能にします。Claude Code などのクローズドソースツールはソースコードへのアクセスを欠いているのに対し、オープンソースのエージェントはハードコーディングされた値の直接修正や Monobit を通じたビットマップフォントのようなカスタムアセットの統合、またはオンデマンドでの固有リソースの生成を可能にします。このシフトは、開発をレガシーなプラグインエコシステムと設定中心のワークフローから遠ざけ、自動化が効率的に日常運用を管理する一方で人間がコアアーキテクチャに完全に集中する未来へと導きます。

2026/08/04 2:08

より小さく、高速で、安全に:Kim i と G L M を大規模に展開するための実行方法

## Japanese Translation: Workers AI は、Cloudflare のインフラストラクチャ上で大規模な AI モデルの提供を進めており、NVIDIA Blackwell GPU と SGLang フレームワークを活用することでコストを大幅に削減するとともに速度を向上させながら精度を維持しています。本ソリューションは、モデル重みの圧縮、KV キャッシュメモリへの量子化、共有メモリの保護を実現するための整合性チェックという 3 つの中核技術を採用しています。 モデル重みについては、Workers AI がハイブリッド戦略を採用しており、応答のデコードには低精度の INT4 形式を使用します(GLM モデルでは約 60% のメモリ使用量削減を実現しながら、全精度重みから機能的不可能区別性 を維持)。一方、初期処理には高精度な形式を留保しています。KV キャッシュについては、BF16 から 8 ビット FP8 への量子化によりメモリサイズが半分になり、コンテキスト容量が倍増します(例えば、約 137 万トークンの対応が可能になり、従来の約 686 千トークンから)。MMLU や GSM8K などの主要なベンチマークにおける精度劣化はありません。 莫大な同時接続下での安定性を確保するため、Workers AI は共有 KV キャッシュに対して汎用整合性チェックを実装しており、数百件のリクエストが物理メモリページを共有する際のエラーを防いでいます。これにより、スループットおよびレイテンシに対するオーバーヘッドは 1% も未満です。これらの最適化により、同時接続制限が倍増し(例えば、64 つの同時リクエストへの対応が可能になり、従来の 32 から)、運用コストを約 30% 削減するとともに、モデルの信頼性を損なうことなくデコード速度を大幅に向上させることが可能になりました。技術が進化するにつれ、Workers AI は効率的なグローバル展開を実現するために新たな精度形式の検証を継続しています。

Rust プロジェクトの目標:immobile タイプと保証されたデストラクター | そっか~ニュース