Rust 1.97.0がリリース、主な変更点とアップグレードの注意点

Rust 1.97.0がリリース、シンボル名のv0方式が既定化しバックトレースの型復元が容易に

公開: 更新:
CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座

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

Python研修一覧はこちら

目的に合うPython研修を一覧形式から探したい方は、ぜひご利用ください。

Python研修を比較する

Java研修一覧はこちら

目的に合うJava研修を一覧形式から探したい方は、ぜひご利用ください。

Java研修を比較する

PHP研修一覧はこちら

目的に合うPHP研修を一覧形式から探したい方は、ぜひご利用ください。

PHP研修を比較する

新入社員研修

目的に合う新入社員研修を一覧形式から探したい方は、ぜひご利用ください。

新入社員研修を比較する

全ての研修からも探したい方はこちら

deny--keep-goingと組み合わせると効果的です。最初の失敗で止めず、複数パッケージの警告やエラーをまとめて集められます。

ローカルパッケージで対象のlint(コードの問題を検出する診断項目)警告が出ると、ビルドが失敗します。対象はローカルパッケージのlint警告で、依存クレート由来の警告や非lint警告までは含みません。

ビルドキャッシュを保ったまま切り替えられるため、CIと手元で設定を使い分けやすい仕組みです。

Rust 1.97.0はリンカの出力を既定で隠さず表示

リンカ(コンパイル済みの部品を1つの実行ファイルへ結合するツール)からのメッセージも、既定で表示されます。従来のrustc(Rustのコンパイラ)は、リンクが成功するとリンカの出力を既定で伏せていました。

出力を隠すと実際の問題を見逃す恐れがあります。1.97.0はlinker_messagesというlint(コンパイラによる追加の警告チェック)で、リンカ由来の警告を既定表示します。

注意点として、linker_messageswarningsグループの影響を受けない特別な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安定化とは、conststaticなどコンパイル時に値を決める文脈で関数を呼べるようにすることです。


Python基礎・実践(Django)

企業・法人向けのPython研修では、基礎から応用まで体系的に学べます。

Python研修の詳細

DX社員研修

企業・法人向けのDX研修では、実務に繋がるリスキリングでITレベルを向上させます。

DX研修の詳細

Javaエンジニア育成研修

企業・法人向けのJavaエンジニア育成研修では、Javaの基礎から応用まで確実に習得できます。

Java研修の詳細

新卒・新入社員向け研修

企業・法人に新入社員・新卒社員に向けたプログラミング研修を提供しています。

新入社員研修の詳細

コードキャンプのIT研修を全て見る

char::is_controlは、文字が制御文字(改行やタブなど画面に表示されない文字)かどうかを判定します。制御文字の判定をコンパイル時の定数計算でも使えるようになりました。

Rust 1.97.0の細かな変更と変更履歴の確認先

主な項目のほかにも、細かな変更や修正が含まれます。全体の変更履歴は、Rust本体・Cargo・Clippy(コードの書き方を助言する静的解析ツール)ごとに公開されています。

今回のリリースにも、多くの貢献者が関わりました。個々には触れきれないため、詳細は公式発表の貢献者一覧を参照してください。

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

  1. ^ 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).
  2. ^ The Rust Programming Language. 「Version 1.97.0 リリースノート」. https://doc.rust-lang.org/stable/releases.html, (参照 26-07-10).
  3. ^ The Rust Programming Language. 「Rust公式サイト」. https://www.rust-lang.org/, (参照 26-07-10).

※本記事は一次情報(公式ブログ)を基に編集しています。内容はAIで確認していますが、誤りや最新情報との差異がある場合はコメントよりご報告ください。

※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。

ITやプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

企業・法人向けのIT・プログラミング・生成AI研修を探す、比較する - IT・プログラミングを知って学べるコネクトメディア CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプが提供する無料で学べるプログラミングスクール講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 3.5日の研修で、年間1,600時間の削減効果が見込まれる。東京きらぼしフィナンシャルグループのDX人材育成事例 - IT・プログラミングを知って学べるコネクトメディア 配属3ヶ月で30%の生産性向上を実現するいよぎんコンピュータサービスの新人研修に迫る - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する