トップ OSS紹介 Rust

Rust

NRIのOpenStandiaが提供するRust最新情報

バージョンアップ情報

Rust情報

Rustとは

Rust(ラスト)は、Mozillaが支援するオープンソースのシステムプログラミング言語です。
2006年の開発初期はC++の問題点を改善するために個人(Graydon Hoare氏)が設計・開発しているプロジェクトでしたが、2009年にMozillaが開発に関わり始め、Mozilla Researchの公式プロジェクトになりました。
Rustは関数型プログラミング、オブジェクト指向プログラミング、手続き型プログラミングなどをサポートするマルチパラダイムプログラミング言語で、「安全性」「速度」「並行性」の3つを実現することを目標としています。主に関数型に重点を置いていて、C++においては、困難であったメモリ管理(安全性)を容易にしながら、高速に動作するアプリケーションを開発できる言語として、成長を続けています。
主な採用例としては、Firefox Quantumの一部のコンポーネントが、Gecko(従来のレンダリングエンジン)のものから、Servo(Rustで開発されたレンダリングエンジン)のものに置き換えられています。

2010年に初版がリリースされ、2015年には1.0版がリリースされています。1.0版以降は後方互換を保って6週間間隔で定期的にリリースされるようになっています。
2018年にリリースされた1.31版からはエディション制が導入され、それまでのRustをRust2015、以降をRust2018と呼称するようになりました。また、2021年にリリースされた1.56版からはRust2021も追加されています。
また、Stack Overflow Developer Surveyの「最も愛されているプログラミング言語」第1位を2016年から2022年まで7年連続で獲得しています。

主な特徴

マルチパラダイムプログラミング言語

複数のプログラミングパラダイムに対応したプログラミング言語の総称で、Rustでは関数型プログラミング、並列アクターモデル、オブジェクト指向プログラミング、手続き型プログラミング、ジェネリックプログラミングをサポートしています。

ゼロコスト抽象化

抽象化を行うにあたり、理想的な量のコストしか使わないという思想でRustのトレイトでは、静的ディスパッチ(実際に使っている具体的な型を当てはめて、具体的な関数を作成する)によって一切の抽象化コストを払う必要がありません。

メモリの自動管理

Rustでは、GC(ガベージコレクション)は存在せず、メモリ管理は自動で行われます。そのため、「明示的なメモリ解放」などのメモリに関する操作がほぼ不要となっています。

メモリの安全性

強力な型システムとリソース管理の仕組みにより、メモリセーフな安全性が保証されています。メモリはコンパイル時にコンパイラが並行性バグを含む不具合箇所のチェックを行い、全てのデータ競合を排除します。

オーナーシップ(所有権)システム

Rustでは、1つのリソース(値X)は1つの所有者(変数A)のみに関連付けられるという制約があります。不必要なリソースを複数で持たないための制約で、これはゼロコスト抽象化を担う機能となっています。

ムーブセマンティクス

前項(オーナーシップ)の値Xを変数Aへ格納した後、さらに値Xを変数Bへ格納すると、変数Aから変数Bへリソースの所有権が譲渡され元の変数Aから値Xの参照はできなくなります。これにより、不要なリソースを破棄し、メモリの安全性を保っています。

参照と借用

前項までの概念では、リソースの所有権が無い限り、リソースを参照することもできなくなります。
それでは利便性が損なわれるため、リソースを複数で共有するのではなく、条件付で所有権を借用し、参照と書き込み可能なミュータブル参照という形で利用することも可能としています。

ライフタイム

Rustでは、全ての参照でライフタイムを持っています。これは変数のスコープのようなもので、ライフタイムが終了した参照は使用することができなくなります。これも所有権と関連し、メモリの安全性を保つための概念となります。

類似プロダクト

  • C++
  • C#
  • F#
  • Kotlin
  • Nim
  • Golang
  • Elixir

ユースケース

RustはデバイスドライバーやOSのような低レイヤーのコードから、アプリケーションなどの高レイヤーのコードまで、他の言語が苦手とする様々なユースケースに対応可能です。

  • コマンドラインアプリケーション
  • Webサーバ
  • 組み込みデバイス
  • 暗号化通信
  • IoTアプリケーション
  • 機械学習

動作環境

  • Linux
  • macOS
  • Windows

Rustのライセンス

Rustのライセンスは、 「Apacheライセンスバージョン2.0」(Apache License version2.0)と「MITライセンス」のデュアルライセンスに基づいて公開されています。

製品ダウンロード

オープンソース年間サポートサービス

OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。

お気軽にお問い合わせください

関連OSS

  • Ruby

    Ruby

    ルビー。シンプルさ、読みやすさ、高機能が人気の国産オブジェクト指向スクリプト言語です。

  • Java

    Java

    ジャバ。サンマイクロシステムズ社(2010年にオラクル社に吸収合併)により開発されたプログラミング言語、及びその動作環境である Java VM(ジャバ仮想マシン) です。

オープンソースに関する様々な課題、OpenStandiaがまるごと解決します。
下記コンテンツも
あわせてご確認ください。