Rustチームは、システムプログラミング言語Rust(メモリ安全性を重視して信頼性と効率を両立する言語)の新しい安定版Rust 1.97.0を2026年7月9日にリリースしました。シンボル名の生成方式の刷新やCargoの警告制御、標準ライブラリへのAPI追加が柱です。
Rust 1.97.0リリースの3行まとめ
要点を3点にまとめます。
- シンボル名生成方式v0を安定版の既定に採用
-
CARGO_BUILD_WARNINGSで警告レベルを制御(denyも可) - リンカ出力の既定表示と整数ビット操作APIの安定化
本記事のアップグレード手順・コマンド例は一般的な内容です。実際の対応は、利用中のツールチェーンや依存クレート(Rustにおけるライブラリの配布単位)、CI構成、運用ルールによって異なります。
作業の前に必ずバックアップを取得し、検証環境で影響を確認したうえで、各自の責任で実施してください。
Rust 1.97.0がシンボル名の生成方式v0を安定版で既定化
Rustのシンボルとマングリングとは
Rustはソースコードをコンパイルすると、関数や静的変数などの各要素へオブジェクトファイル上で一意な「シンボル」(記号名)を割り当てます。シンボル名を機械的に生成する変換処理がマングリング(name mangling)です。
従来のRustは、C++でも使われることがあるItanium ABIの名前マングリング規則を土台にしていました。ABIはコンパイル済みコード同士の呼び出し規約や名前付けを含む、バイナリ互換の取り決めです。
ただしItanium ABIには、表現力と一貫性の面で課題がありました。
Rustのv0方式が改善する2つの点
1.97.0は、Rust独自の新方式「v0」を安定版の既定へ切り替えます。改善点は次の2つです。
- ジェネリック引数の具体値をハッシュだけにせず、マングル名に保持
- 一部のみItanium ABIを使う不整合を解消し方式を統一
ジェネリック(型を後から差し替える汎用コードの仕組み)の実体化情報が名前へ残るため、バックトレース(エラー発生時に出力される関数の呼び出し履歴)やデバッガで、元の型を復元しやすくなります。従来は方式が混在し、独自のデマングル(名前を人が読める形へ戻す処理)が欠かせませんでした。
Rustでのv0の導入経緯と旧方式の扱い
v0はコンパイラフラグ-Csymbol-mangling-version=v0として、すでにRust 1.59から利用できました。2025年11月にnightly版(毎晩更新の先行版)で既定となり、1.97.0で安定版の既定へ昇格します。
従来のlegacy方式(v0に対する旧来方式の呼び名)は今後nightly版でのみ有効で、最終的には完全に削除する計画です。ツール側でv0の名前を前提にした対応を進めておくと安心です。
Rust 1.97.0のCargoが警告レベルをCARGO_BUILD_WARNINGSで制御可能に
Cargo(Rustの公式ビルド・パッケージ管理ツール)に、警告の扱いを制御する仕組みが加わりました。CI(変更ごとに自動でビルド・テストする仕組み)では、警告が残るビルドを失敗扱いにする運用が一般的です。
従来は環境変数RUSTFLAGS(コンパイラへフラグを渡す環境変数)の-Dwarnings指定で警告をエラー化していました。1.97.0では、環境変数CARGO_BUILD_WARNINGSにより警告の扱いを3段階で切り替えられます。
| 値 | 挙動 |
|---|---|
allow |
ローカルパッケージの対象lint警告を非表示 |
warn |
既定・失敗させず表示のみ |
deny |
ローカルパッケージの対象lint警告をエラー扱い |
大きな利点は、この設定の切り替え自体では、既存のビルドキャッシュ(コンパイル済み成果物の再利用データ)を無効化しにくい点です。開発中に気軽に試せます。
開発中に警告を抑えたいときに便利なのがallowです。次のコマンドは警告を止めてコードを検査するだけで、パッケージの更新やインストールは行いません。
CARGO_BUILD_WARNINGS=allow cargo check
PowerShellの場合、環境変数の指定方法は次のとおりです。効果は先ほどと同じで、コードを検査するだけで変更は加えません。
$env:CARGO_BUILD_WARNINGS="allow"; cargo check
PowerShellでは環境変数が同じセッション内に残ります。元に戻す場合は$env:CARGO_BUILD_WARNINGS=$nullを実行してください。
反対にCIでは、警告を残さないdenyの指定が有効です。次のコマンドは警告をエラー扱いにしてプロジェクトをビルドし、依存クレートの取得やコンパイルが走ります。
CARGO_BUILD_WARNINGS=deny cargo build
denyは--keep-goingと組み合わせると効果的です。最初の失敗で止めず、複数パッケージの警告やエラーをまとめて集められます。
ローカルパッケージで対象のlint(コードの問題を検出する診断項目)警告が出ると、ビルドが失敗します。対象はローカルパッケージのlint警告で、依存クレート由来の警告や非lint警告までは含みません。
ビルドキャッシュを保ったまま切り替えられるため、CIと手元で設定を使い分けやすい仕組みです。
Rust 1.97.0はリンカの出力を既定で隠さず表示
リンカ(コンパイル済みの部品を1つの実行ファイルへ結合するツール)からのメッセージも、既定で表示されます。従来のrustc(Rustのコンパイラ)は、リンクが成功するとリンカの出力を既定で伏せていました。
出力を隠すと実際の問題を見逃す恐れがあります。1.97.0はlinker_messagesというlint(コンパイラによる追加の警告チェック)で、リンカ由来の警告を既定表示します。
注意点として、linker_messagesはwarningsグループの影響を受けない特別なlintです。表示を止めたいときは、Cargo.tomlへ次の設定を加えます。
[lints.rust]
linker_messages = "allow"
設定を加えると、リンカのメッセージを警告として出さずに抑制できます。必要な場面だけ表示へ戻す運用も可能です。
ただし全ての出力がそのまま表示されるわけではなく、既知の不要なメッセージ(false positive)はrustc側でフィルタされる仕組みです。想定外のfalse positiveを見つけた場合は、issue報告が推奨されています。
Rust 1.97.0で標準ライブラリのAPIを安定化
標準ライブラリでは、複数のAPIが安定化(nightly版限定だった機能を安定版で正式提供すること)されました。内容はトレイトの実装、整数のビット操作メソッド、const文脈での利用可否に分かれます。
Rustで追加された3つのトレイト実装
まず、既存の型に対するトレイト(型が満たす共通の振る舞いの定義)の実装が3件加わりました。対象と実装したトレイトは次のとおりです。
| 対象の型 | 実装したトレイト |
|---|---|
RepeatN |
Default |
ffi::FromBytesUntilNulError |
Copy |
std::fs::File(UEFI: OS起動前のファームウェア環境) |
Send |
Defaultは既定値、Copyは値の複製、Sendはスレッド間で安全に送れる性質を表します。いずれも対象の型で扱える場面が広がりました。
Rustに加わった整数のビット操作メソッド
整数型には、ビット操作(数値を2進数のビット列として直接扱う処理)を助けるメソッドが加わりました。対象の型はAPIごとに異なり、bit_widthは符号なし整数型向けです。
| メソッド | 概要 |
|---|---|
isolate_highest_one |
最上位の立ったビットだけを残した値を返す |
isolate_lowest_one |
最下位の立ったビットだけを残した値を返す |
highest_one |
最上位の立ったビット位置をOptionで返す |
lowest_one |
最下位の立ったビット位置をOptionで返す |
bit_width |
符号なし整数で表現に要するビット幅 |
同じメソッド群は、値が0でないと保証するNonZero型にも用意されました。0を除けるぶん、結果が常に定まる利点があります。
Rustでconst安定化されたchar::is_control
定数評価まわりでは、char::is_controlがconst安定化されました。const安定化とは、constやstaticなどコンパイル時に値を決める文脈で関数を呼べるようにすることです。
char::is_controlは、文字が制御文字(改行やタブなど画面に表示されない文字)かどうかを判定します。制御文字の判定をコンパイル時の定数計算でも使えるようになりました。
Rust 1.97.0の細かな変更と変更履歴の確認先
主な項目のほかにも、細かな変更や修正が含まれます。全体の変更履歴は、Rust本体・Cargo・Clippy(コードの書き方を助言する静的解析ツール)ごとに公開されています。
- Rust本体はGitHubのリリースページで確認
- Cargoは公式CHANGELOGで確認
- ClippyはリポジトリのCHANGELOGで確認
今回のリリースにも、多くの貢献者が関わりました。個々には触れきれないため、詳細は公式発表の貢献者一覧を参照してください。
Rust 1.97.0へアップグレードする方法
すでにRustを導入済みなら、rustup(Rustのツールチェーン管理コマンド)での更新が可能です。次のコマンドで安定版を1.97.0へ更新できます。
rustup update stable
このコマンドはインストール済みの安定版ツールチェーンを更新します。実行前にバックアップを取得してください。
新しく導入する場合は、公式のインストールページからrustupを入手します。配布ページの案内に沿って進めれば導入は完了です。
公開前の版も試せます。次のコマンドは既定のツールチェーンをベータ版や毎晩更新のnightly版へ切り替え、未導入なら該当版をダウンロードします。
rustup default beta
rustup default nightly
検証が済んだらrustup default stableで安定版へ戻せます。本番の作業は安定版で進めるのが基本です。
Rust 1.97.0リリース概要
今回のリリースの基本情報を一覧にまとめます。
| 項目 | 詳細 |
|---|---|
| 製品 | Rust |
| バージョン |
1.97.0(安定版) |
| 種別 | 安定版リリース |
| 主な変更 | v0の既定化・警告制御・リンカ表示・API安定化 |
| 入手方法 | rustup update stable |
| 公開日 | 2026年7月9日 |
trends編集部の一言
今回の目玉は、開発体験を静かに底上げする変更が多い点です。シンボル名のv0既定化やリンカ出力の表示は、問題調査のしやすさに効きます。
まず確認したいのは、CIで警告管理を厳格化しているチームです。CARGO_BUILD_WARNINGSならキャッシュを保ったまま切り替えられ、CI運用を整えやすくなりました。
- ライブラリ開発者は整数ビット操作APIで自前実装を置き換え可能
- デバッガやプロファイラなどのツール作者は、1.97.0でビルドしたバイナリのバックトレースで型名の復元を確かめ、v0形式のデマングル対応を前倒しで確認
言語仕様上の大きな破壊的変更は目立ちませんが、古いデバッガやプロファイラ(性能を計測・分析するツール)、バックトレース表示には影響が出る可能性があります。まずは検証環境で自分のプロジェクトをビルドし、警告やリンカ出力を確かめてみてはいかがでしょうか。
References
- ^ The Rust Programming Language Blog. 「Announcing Rust 1.97.0」. https://blog.rust-lang.org/2026/07/09/Rust-1.97.0/, (参照 26-07-10).
- ^ The Rust Programming Language. 「Version 1.97.0 リリースノート」. https://doc.rust-lang.org/stable/releases.html, (参照 26-07-10).
- ^ The Rust Programming Language. 「Rust公式サイト」. https://www.rust-lang.org/, (参照 26-07-10).
※本記事は一次情報(公式ブログ)を基に編集しています。内容はAIで確認していますが、誤りや最新情報との差異がある場合はコメントよりご報告ください。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
【Git】remote設定を変更する方法
【VBA】コメントアウトを設定する方法
マークダウンで改行する方法
【CSS】notで複数の件を除外する方法
x86とx64の違いを分かりやすく解説
GitLabとGitHubの違いを解説
パソコンのメモリの目安を用途別に選ぶ方法
Linuxで環境変数を確認する方法
CapsLockキーを解除する方法
UbuntuのIPアドレスを確認する方法
ITやプログラミングに関するニュース
ナレッジセンスが法人向け「Notebook AI」を全ユーザーへリリース、資料QAからスライド生成まで一連で利用可能に
NTTドコモビジネスX株式会社が「顧客体験AI資格取得講座」を2026年7月9日提供開始、AI活用CX改善の手法を学べる
AI CROSSがRise株式会社への生成AI活用支援を開始、福岡銀行との協業スキーム第二弾で間接業務の効率化を目指す
株式会社詩田が「LLMAPI.JP」を正式提供開始、全モデル10%OFFで手数料ゼロを実現
ChatSenseのNotebook機能が画像・図表をAI検索対象に追加、回答に活用
株式会社三菱総合研究所とPKUTECHが「AI Memory RAG」を共同開発、時系列・経緯を踏まえた意思決定を支援
PreciserがAIスポーツアナリティクスのモバイルアプリを日本市場向けにリリース、現場での迅速なデータ活用を支援
一般社団法人AICX協会が「AIエージェント・ストラテジスト資格」公式解説講座を販売開始、公式教材の重要論点を動画で解説
common株式会社が集荷・配送向けAI配車サービス『ルートコンパスAI』を提供開始、計画時間を約8割削減
ディーエスブランドがおりこうAIコンシェルジュ「AI MODELプラン」提供開始、リアルな人物アバターでWeb接客を実現
