「Rust」の版間の差分
(ページの作成:「Category:プログラミング言語 en:Rust ru:Rust [http://rust-lang.org/ Rust] は驚異的に高速で、セグメンテーション違反を滅多に起...」) |
(同期) |
||
3行目: | 3行目: | ||
[[ru:Rust]] |
[[ru:Rust]] |
||
[http://rust-lang.org/ Rust] は驚異的に高速で、セグメンテーション違反を滅多に起こさず、スレッドとメモリの安全性が保証された、システムプログラミング言語です。 |
[http://rust-lang.org/ Rust] は驚異的に高速で、セグメンテーション違反を滅多に起こさず、スレッドとメモリの安全性が保証された、システムプログラミング言語です。 |
||
+ | |||
+ | == ライブラリ == |
||
+ | |||
+ | === Rust コアライブラリ === |
||
+ | |||
+ | [https://doc.rust-lang.org/core/ Rust Core Library] は何にも依存しない Rust 標準ライブラリの基礎となるライブラリです。LLVM と直接通じることで、ハードウェアに囚われないプラットフォームとして Rust を使うことができます。LLVM との緊密な統合により、Clang でコンパイルされた C アプリケーションよりも高い性能を発揮することができ、libcore で設計された Rust ソフトウェアは C よりも低レイヤーを扱うことができます。組み込み環境向けのソフトウェアを開発している場合、{{ic|#[nostd]}} で標準ライブラリを省くことでコアライブラリだけを使うことができ、バイナリサイズを小さく、高い性能を発揮させることが可能です。ただし、{{ic|#[nostd]}} を使用すると Rust コミュニティから取得することができる膨大なソフトウェアに制限がかかるため、大抵のライブラリは標準ライブラリを必要としています。 |
||
+ | |||
+ | === Rust 標準ライブラリ === |
||
+ | |||
+ | [http://doc.rust-lang.org/std/index.html Rust Standard Library] は移植性の高い Rust ソフトウェアによって構成された便利な高水準の抽象ライブラリです。{{ic|Vec}}, {{ic|Iterator}}, {{ic|Option}}, {{ic|Result}}, {{ic|String}} 型や、基本的なメソッド、大量の標準マクロ、I/O やマルチスレッドのサポート、{{ic|Box}} によるヒープメモリ確保などの便利な機能、その他、コアライブラリに存在しない高度な機能が多数存在します。 |
||
+ | |||
+ | === リリースサイクル === |
||
+ | |||
+ | Rust は Firefox のリリースサイクルと同じように6週間ごとに定期的にリリースされます。新しいリリースが出るたびに、コアライブラリや標準ライブラリは改善され、対応プラットフォームが新しく増えたりパフォーマンスが向上したり、あるいは新しい機能の安定化が行われます。 |
||
== インストール == |
== インストール == |
||
+ | === ネイティブのインストール方法 === |
||
− | Rust の最新安定版を[[インストール]]するには、{{Pkg|rust}} パッケージを[[インストール]]してください。 |
||
+ | Rust の最新安定版を[[インストール]]するには、{{Pkg|rust}} パッケージを[[インストール]]してください。このパッケージは rustc コンパイラだけをインストールするため、{{Pkg|cargo}} パッケージは別にインストールする必要があります。 |
||
− | ソースから安定版やベータ版をビルドしたいときは、[http://www.rust-lang.org/install.html Rust Downloads] を見て下さい。[[AUR]] を使って {{AUR|rust-nightly-bin}} で最新の開発スナップショットを取得することもできます (Cargo も入っています)。 |
||
+ | |||
+ | === Rustup による公式のインストール方法 === |
||
+ | |||
+ | Rust でソフトウェアを開発するときに、公式に推奨されている Rust のインストール方法は [https://www.rustup.rs/ Rustup ツールチェインマネージャ] を使用する方法です (Rustup は Rust で書かれています)。 |
||
+ | |||
+ | ソフトウェアリポジトリに存在するスタンドアロンな Rust を使用しないで、Rustup ツールチェインマネージャを使用する利点として、複数のプラットフォーム (Windows, Mac, Android) やアーキテクチャ (x86, x86_64, arm) 用に複数のツールチェイン (stable, beta, nightly) をインストールすることができる点が挙げられます。また、[https://github.com/Manishearth/rust-clippy Clippy] などのツールはコンパイラプラグインのサポートを必要としており、Rust のナイトリービルドでしか使えないことも特記すべきことでしょう。 |
||
+ | |||
+ | Rustup をインストールする方法は2つ存在します: |
||
+ | |||
+ | * 次のコマンドを実行することで rustup のインストールを開始できます: {{ic|curl -sSf https://static.rust-lang.org/rustup.sh && sh rustup.sh}}。rustup をアップデートしたい場合は {{ic|rustup self update}} を実行するだけです。 |
||
+ | * {{Aur|rustup}} は AUR からインストールすることもできます。AUR からインストールした場合 {{ic|rustup self update}} は使用できないので注意してください。AUR から直接パッケージをアップデートする必要があります。 |
||
+ | |||
+ | デフォルトでは、あなたが現在使用しているアーキテクチャの stable チャンネルだけがインストールされます。使用するには、インストールされた stable チャンネルがデフォルトで使用されるように指定する必要があります: |
||
+ | |||
+ | {{bc|<nowiki> |
||
+ | $ rustup default stable |
||
+ | </nowiki>}} |
||
+ | |||
+ | それから {{ic|rustc -V}} を使って rust のバージョンを確認してください: |
||
+ | |||
+ | {{hc|$ rustc -V |<nowiki> |
||
+ | rustc 1.9.0 (e4e8b6668 2016-05-18) |
||
+ | </nowiki>}} |
||
+ | |||
+ | nightly をインストール・使用したい場合、以下のコマンドを実行: |
||
+ | |||
+ | {{bc|<nowiki> |
||
+ | $ rustup install nightly |
||
+ | $ rustup default nightly |
||
+ | </nowiki>}} |
||
+ | |||
+ | バージョンを確認: |
||
+ | |||
+ | {{hc|$ rustc -V |<nowiki> |
||
+ | rustc 1.11.0-nightly (01411937f 2016-07-01) |
||
+ | </nowiki>}} |
||
=== インストールのテスト === |
=== インストールのテスト === |
||
25行目: | 75行目: | ||
== クロスコンパイル == |
== クロスコンパイル == |
||
+ | |||
+ | === rustup を使う === |
||
+ | |||
+ | rustup を使うことで簡単にクロスコンパイルができます。rustup は多数のクロスコンパイルターゲットに対応しています。対応しているプラットフォームの完全なリストは {{ic|rustup target list}} を実行することで確認できます。 |
||
+ | |||
+ | 例えば、gnu コンパイラを使って Windows 用にコンパイルする stable チャンネルの rust をインストールしたい場合、以下を実行: |
||
+ | |||
+ | {{bc|<nowiki> |
||
+ | $ rustup install stable-x86_64-pc-windows-gnu |
||
+ | </nowiki>}} |
||
+ | |||
+ | 上記のコマンドでは、コンパイル先のアーキテクチャ用の rust とツールしかインストールされません。場合によってはクロスコンパイルするのに追加でツールが必要になる可能性があります。 |
||
=== Windows === |
=== Windows === |
||
47行目: | 109行目: | ||
$ cargo test --target "$ARCH-pc-windows-gnu" |
$ cargo test --target "$ARCH-pc-windows-gnu" |
||
</nowiki>}} |
</nowiki>}} |
||
+ | |||
+ | === 非公式パッケージ === |
||
+ | |||
+ | [[非公式ユーザーリポジトリ#archlinuxcn|非公式の archlinuxcn リポジトリ]]には i686, ARM, ARMv7, Windows 32, Windows 64 向けの rust-nightly と Rust 標準ライブラリが含まれています。パッケージをインストールすればクロスコンパイルができます。ただし、ARM のツールチェインは自分で用意する必要があります。32ビット版の Windows を対象にビルドする場合、実行するのに {{ic|libgcc_s_dw2-1.dll}} が必要になります。 |
||
== Cargo == |
== Cargo == |
||
67行目: | 133行目: | ||
}} |
}} |
||
}} |
}} |
||
+ | |||
+ | == IDE のサポート == |
||
+ | |||
+ | === ツール === |
||
+ | |||
+ | ==== Racer ==== |
||
+ | |||
+ | [https://github.com/phildawes/racer Racer] 自動補完エンジンは Rust の自動補完が必要な際に現在最も優れている選択肢です。ただし、Racer を使うには Rust のソースコードのコピーをインストールする必要があります。直接入手してもよいですし AUR からインストールすることもできます ({{Aur|rust-src}} または {{Aur|rust-nightly-src}})。ソースコードをインストールしたら、{{ic|Cargo}} を使って racer をインストールする ({{ic|cargo install racer}}) か、あるいは AUR からインストールしてください ({{Aur|rust-racer}})。 |
||
+ | |||
+ | ==== Clippy ==== |
||
+ | |||
+ | [https://github.com/Manishearth/rust-clippy Clippy] は Rust のナイトリービルドに存在するコンパイラプラグイン機能を利用して、様々なエラーや慣習的な警告を検出する文法チェックを行います。安定版の Rust コンパイラでコンパイルするときに clippy を使うことはできません。Clippy は cargo でインストールできます: |
||
+ | |||
+ | cargo install clippy |
||
+ | |||
+ | === エディタ === |
||
+ | |||
+ | ==== Atom ==== |
||
+ | |||
+ | Atom は [https://vertexclique.github.io/tokamak/ Tokamak IDE] プラグインで Rust 言語をサポートします。 |
||
+ | |||
+ | ==== Visual Studio Code ==== |
||
+ | |||
+ | Visual Studio Code も Rust をサポートしていますが、Atom ほどではありません。Rust のサポートは [https://marketplace.visualstudio.com/items?itemName=saviorisdead.RustyCode RustyCode] をインストールすることで得られます。 |
||
== 参照 == |
== 参照 == |
||
* [http://rust-lang.org/ Rust プログラミング言語の公式ウェブサイト] |
* [http://rust-lang.org/ Rust プログラミング言語の公式ウェブサイト] |
||
+ | * [https://www.rust-lang.org/documentation.html Rust ドキュメント] |
||
+ | * [http://doc.rust-lang.org/stable/book/ 公式 Rust Book] |
||
+ | * [https://doc.rust-lang.org/std/ 標準ライブラリ API 索引] |
||
+ | * [http://rustbyexample.com/ 説明が付されているサンプル集] |
||
+ | * [https://github.com/ctjhoa/rust-learning Rust チュートリアルのページリスト] |
||
+ | * [https://crates.io/ Cargo で使用できるライブラリ (crate)] |
||
+ | * [https://this-week-in-rust.org/ 今週の Rust] |
||
+ | * [http://blog.rust-lang.org/ Rust プログラミング言語ブログ] |
||
+ | * [https://users.rust-lang.org/ Rust ユーザーフォーラム] |
||
+ | * [https://internals.rust-lang.org/ Rust Internals フォーラム] |
||
+ | * [https://rust.libhunt.com/ Awesome Rust: Rust ライブラリやリソースの精選集] |
||
* [[Wikipedia:ja:Rust (プログラミング言語)|Wikipedia の記事]] |
* [[Wikipedia:ja:Rust (プログラミング言語)|Wikipedia の記事]] |
||
− | * [http://rustbyexample.com/ Examples with small descriptions] |
||
− | * [http://doc.rust-lang.org/stable/book/ Official starting guide] |
||
− | * [https://github.com/ctjhoa/rust-learning Page listing of Rust tutorials] |
||
− | * [https://crates.io/ Libraries(crates) avalaible through Cargo] |
2016年7月19日 (火) 23:19時点における版
Rust は驚異的に高速で、セグメンテーション違反を滅多に起こさず、スレッドとメモリの安全性が保証された、システムプログラミング言語です。
目次
ライブラリ
Rust コアライブラリ
Rust Core Library は何にも依存しない Rust 標準ライブラリの基礎となるライブラリです。LLVM と直接通じることで、ハードウェアに囚われないプラットフォームとして Rust を使うことができます。LLVM との緊密な統合により、Clang でコンパイルされた C アプリケーションよりも高い性能を発揮することができ、libcore で設計された Rust ソフトウェアは C よりも低レイヤーを扱うことができます。組み込み環境向けのソフトウェアを開発している場合、#[nostd]
で標準ライブラリを省くことでコアライブラリだけを使うことができ、バイナリサイズを小さく、高い性能を発揮させることが可能です。ただし、#[nostd]
を使用すると Rust コミュニティから取得することができる膨大なソフトウェアに制限がかかるため、大抵のライブラリは標準ライブラリを必要としています。
Rust 標準ライブラリ
Rust Standard Library は移植性の高い Rust ソフトウェアによって構成された便利な高水準の抽象ライブラリです。Vec
, Iterator
, Option
, Result
, String
型や、基本的なメソッド、大量の標準マクロ、I/O やマルチスレッドのサポート、Box
によるヒープメモリ確保などの便利な機能、その他、コアライブラリに存在しない高度な機能が多数存在します。
リリースサイクル
Rust は Firefox のリリースサイクルと同じように6週間ごとに定期的にリリースされます。新しいリリースが出るたびに、コアライブラリや標準ライブラリは改善され、対応プラットフォームが新しく増えたりパフォーマンスが向上したり、あるいは新しい機能の安定化が行われます。
インストール
ネイティブのインストール方法
Rust の最新安定版をインストールするには、rust パッケージをインストールしてください。このパッケージは rustc コンパイラだけをインストールするため、cargo パッケージは別にインストールする必要があります。
Rustup による公式のインストール方法
Rust でソフトウェアを開発するときに、公式に推奨されている Rust のインストール方法は Rustup ツールチェインマネージャ を使用する方法です (Rustup は Rust で書かれています)。
ソフトウェアリポジトリに存在するスタンドアロンな Rust を使用しないで、Rustup ツールチェインマネージャを使用する利点として、複数のプラットフォーム (Windows, Mac, Android) やアーキテクチャ (x86, x86_64, arm) 用に複数のツールチェイン (stable, beta, nightly) をインストールすることができる点が挙げられます。また、Clippy などのツールはコンパイラプラグインのサポートを必要としており、Rust のナイトリービルドでしか使えないことも特記すべきことでしょう。
Rustup をインストールする方法は2つ存在します:
- 次のコマンドを実行することで rustup のインストールを開始できます:
curl -sSf https://static.rust-lang.org/rustup.sh && sh rustup.sh
。rustup をアップデートしたい場合はrustup self update
を実行するだけです。 - rustupAUR は AUR からインストールすることもできます。AUR からインストールした場合
rustup self update
は使用できないので注意してください。AUR から直接パッケージをアップデートする必要があります。
デフォルトでは、あなたが現在使用しているアーキテクチャの stable チャンネルだけがインストールされます。使用するには、インストールされた stable チャンネルがデフォルトで使用されるように指定する必要があります:
$ rustup default stable
それから rustc -V
を使って rust のバージョンを確認してください:
$ rustc -V
rustc 1.9.0 (e4e8b6668 2016-05-18)
nightly をインストール・使用したい場合、以下のコマンドを実行:
$ rustup install nightly $ rustup default nightly
バージョンを確認:
$ rustc -V
rustc 1.11.0-nightly (01411937f 2016-07-01)
インストールのテスト
以下のようなシンプルなプログラムをビルドして、Rust が正しくインストールされていることを確認してください:
~/hello.rs
fn main() { println!("Hello, World!"); }
rustc
でコンパイルして実行することができます:
$ rustc hello.rs && ./hello
Hello, World!
クロスコンパイル
rustup を使う
rustup を使うことで簡単にクロスコンパイルができます。rustup は多数のクロスコンパイルターゲットに対応しています。対応しているプラットフォームの完全なリストは rustup target list
を実行することで確認できます。
例えば、gnu コンパイラを使って Windows 用にコンパイルする stable チャンネルの rust をインストールしたい場合、以下を実行:
$ rustup install stable-x86_64-pc-windows-gnu
上記のコマンドでは、コンパイル先のアーキテクチャ用の rust とツールしかインストールされません。場合によってはクロスコンパイルするのに追加でツールが必要になる可能性があります。
Windows
このセクションでは、$ARCH
がターゲットのアーキテクチャです (x86_64
または i686
)。
- mingw-w64-gcc と wine をインストール。
- Windows の実行可能ファイルの binfmt の定義を手動で追加するか binfmt-wineAUR をインストール。
- rustlib ディレクトリ (rust-nightly-binAUR を使用する場合は
/usr/local/lib/rustlib
で公式の rust パッケージを使用する場合は/usr/lib/rustlib
) に Windows 用の Rust の標準ライブラリのコピーをインストールします。一番簡単な方法は、ターゲットとするアーキテクチャの Windows 用の Rust インストーラーをダウンロードして、Wine を使ってインストール (wine start my-rust-installer.msi
) してから rustlib ディレクトリにコピー$INSTALL_DIR/bin/rustlib/$ARCH-pc-windows-gnu
する方法です。 - 最後に、cargo の設定ファイルに以下を追加して MinGW-w64 の gcc/ar のパスを cargo に指定します:
~/.cargo/config
[target.$ARCH-pc-windows-gnu] linker = "/usr/bin/$ARCH-w64-mingw32-gcc" ar = "/usr/$ARCH-w64-mingw32/bin/ar"
cargo に --target $ARCH-pc-windows-gnu
と指定することで Windows 向けのクロスコンパイルができます:
$ # Build $ cargo build --release --target "$ARCH-pc-windows-gnu" $ # Run unit tests under wine $ cargo test --target "$ARCH-pc-windows-gnu"
非公式パッケージ
非公式の archlinuxcn リポジトリには i686, ARM, ARMv7, Windows 32, Windows 64 向けの rust-nightly と Rust 標準ライブラリが含まれています。パッケージをインストールすればクロスコンパイルができます。ただし、ARM のツールチェインは自分で用意する必要があります。32ビット版の Windows を対象にビルドする場合、実行するのに libgcc_s_dw2-1.dll
が必要になります。
Cargo
Rust のパッケージマネージャである Cargo は cargo でインストールできます。ナイトリー版は AUR の cargo-binAUR でインストールできます。
Cargo は Rust プロジェクトの依存関係を宣言することができるようにするツールであり、それによってビルドがいつでも通ることが保証されます。
使用方法
Cargo を使って新しいプロジェクトを作成するには:
$ cargo new hello_world --bin
IDE のサポート
ツール
Racer
Racer 自動補完エンジンは Rust の自動補完が必要な際に現在最も優れている選択肢です。ただし、Racer を使うには Rust のソースコードのコピーをインストールする必要があります。直接入手してもよいですし AUR からインストールすることもできます (rust-srcAUR または rust-nightly-srcAUR)。ソースコードをインストールしたら、Cargo
を使って racer をインストールする (cargo install racer
) か、あるいは AUR からインストールしてください (rust-racerAUR)。
Clippy
Clippy は Rust のナイトリービルドに存在するコンパイラプラグイン機能を利用して、様々なエラーや慣習的な警告を検出する文法チェックを行います。安定版の Rust コンパイラでコンパイルするときに clippy を使うことはできません。Clippy は cargo でインストールできます:
cargo install clippy
エディタ
Atom
Atom は Tokamak IDE プラグインで Rust 言語をサポートします。
Visual Studio Code
Visual Studio Code も Rust をサポートしていますが、Atom ほどではありません。Rust のサポートは RustyCode をインストールすることで得られます。