編集  

Rust(プログラミング言語)単語

ラスト

Rustとは、メモリ安全性[1]や並列処理の安全性に注して開発されたプログラミング言語である。

概要

速度、安全性、並行性が特徴のプログラミング言語である。C++と遜色ない実行速度を誇り、GCがないにも関わらず手動のメモリ管理は不要で、しかもメモリ安全である。また、並列処理に起因するバグコンパイル時に検出することができる。開発はオープンコミュニティによって行われているが、Mozillaから支援を受けている。

構文はCライクであるが、を後置したりする。また"fn" "Vec"のようにキーワードや識別子の省略を多用するのが気持ち悪い特徴的。関数型言語の影を受けて型推論や代数形、パターンマッチング、タプル、高階関数クラス(トレイト)などをサポートしたマルチパラダイム言である。

コンパイラが親切なのもRustの特徴である。分かりやすいメッセージで、問題のあるコード部分に下線を引いて注釈を入れ、時には正しいコードを示してくれたりもする。また、言仕様や標準ライブラリは処理系メジャーバージョンが変わるまで後方互換を保つ。処理系アップデートしても昔のコードが壊れることは滅多にないのだ。

一部では、Rust入門者にとって厳しい言であるということで有名である。自動メモリ管理のための機構である「所有権(Ownership)」の概念を把握できていないと、頻繁にコンパイルエラーに遭遇し、しかもその意味がわからないのである。ある程度習得できていればひと見て解決できる問題であったりする場合が多く、所有権を理解しないまま何時間も試行錯誤するようなことは時間の無駄となる可性がある。行き詰まったらRustコミュニティで質問したりして、エラーの原因を理解することを勧める。また、ドキュメントやサンプルも眺めておこう。

用途

新しい言として同時に挙げられることの多いGoなどとべると、中々ニッチな領域を攻めている言だと言える。Mozilla支援しているからには当然だがブラウザの開発はこれらの特徴にピッタリと当てはまり、Firefoxバージョン48以降で徐々にコンポーネント単位Rustに移行している[2]他、次世代ブラウザエンジンであるServoの開発にも用いられている。Mozillaの外ではDropboxやnpmがWebサービスバックエンドに用いており、ドワンゴも分散ファイルシステムの開発にRustを用いているという。

パフォーマンス・生産性の高さからゲーム製作でも使われ、Pistonを始めゲームライブラリがいくつも存在する。

ライブラリ

Rustについて言われることとして、標準ライブラリの機が少ないというものがある。なんと正規表現乱数すらく、外部ライブラリを使用する必要がある。パッケージマニフェスト(Cargo.toml)に一行追加するだけではあるが……。

これは開発初期ゆえ少ないのではなく、標準ライブラリを軽量に保つという方針によって意図的に削られたものである。Rustでは外部ライブラリの利用が推奨されており、定番となっているライブラリの評価・善を公式導で行っていたりもする[3]。このようになっているのは何故かと言うと、先述した後方互換性の保のためである。標準ライブラリAPI自由良したり削除したりは出来ないため、議論の余地の少ない機だけ採用しているのである。正規表現乱数ライブラリも当初は標準ライブラリに含まれていたが取り除かれた経緯がある。

Rustライブラリcrates.ioにホストされている。的のライブラリが見つけられない場合はAwesome Rustのような有志によって作られた索引が役に立つ。

歴史

2006年頃からMozilla社員であるGraydon Hoare氏の趣味として開発が始まった。その後2009年Mozillaによる支援が開始され、現在まで続いている。2010年コンパイラの記述言OCamlからRustに移行し、セルフホスト(コンパイラコンパイルする言自身で書かれていること)を達成した。

日は流れ、2015年に初の安定版であるRust1.0がリリースされた。以降は6週間毎に安定版のマイナーバージョンが上がる列車方式のリリースが行われている。

2016年および2017年には、技術者向け質問コミュニティサイトStack Overflowユーザ投票において「最もされている言」に選ばれた。[4]

2017年からは開発ロードマップが提示されている。(2017年前半期の進捗状況

関連動画

Rust(プログラミング言語)に関するニコニコ動画動画を紹介してください。

関連商品

関連コミュニティ

Rust(プログラミング言語)に関するニコニコミュニティを紹介してください。

関連項目

外部リンク

脚注

  1. *メモリ安全とは、メモリの扱いに起因するバグが発生しない性質のこと。nullポインタによる実行時エラーセグメンテーション違反、バッファオーバーフロー/オーバーランダンリングポインタの発生などといった問題が起こらない。
  2. *https://wiki.mozilla.org/Oxidation
  3. *https://blog.rust-lang.org/2017/05/05/libz-blitz.html
  4. *https://insights.stackoverflow.com/survey/2016#technology-most-loved-dreaded-and-wanted, https://insights.stackoverflow.com/survey/2017#most-loved-dreaded-and-wanted

【スポンサーリンク】

スマホ版URL:
https://dic.nicovideo.jp/t/a/rust%28%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%29
ページ番号: 5501421 リビジョン番号: 2526140
読み:ラスト
初版作成日: 17/09/17 13:38 ◆ 最終更新日: 17/09/23 15:02
編集内容についての説明/コメント: 用途の節を追加
記事編集 / 編集履歴を閲覧

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

Rust(プログラミング言語)について語るスレ

1 : ななしのよっしん :2017/11/29(水) 20:38:22 ID: iz38qy13FU
「もしC++11を一から設計したら」という印なんだがどうなんだろう。
2 : ななしのよっしん :2018/01/03(水) 10:20:12 ID: IxykD1yeXk
速度が必要なことやりたいんでちょっと調べたけど
配列いちいちチェックが入るという事実に驚いた
チェックしないアクセス法と[]演算子オーバーロードはあるみたいだから
ごにょごにょすればいいのかもしれんが
本当にC++と同等まで最適化されるのだろうか
3 : ななしのよっしん :2018/01/07(日) 02:39:30 ID: XjG3zx77pA
>>2
ソースコード上の見かけが同じかどうかではなく、
機械語レベルでやってる事が同じなら同等になるというだけのことですね
結局LLVM optに突っ込んでるだけなので……

チェックに関しては自明なものは最適化で消えますし
実装前から心配する部分ではない気がします
自分は計測しながらパフォーマンスに寄与する箇所だけget_uncheckedに置き換える感じでしたね
デフォルトで安全側に倒してある言なので、まあその辺の調整は必要です
4 : ななしのよっしん :2018/04/28(土) 11:44:10 ID: t82q20nfkI
最近名前を聞くようになったので、ドキュメントをちょっとだけ読んだけど、所有権のところでスタックとヒープの話に突っ込んでいったのでそっ閉じした。
所有権が書き込む権利の独占であり、読む権利はにもあるという仕様からして、おそらく並行処理のメモリの書き込みロックの問題を言仕様に取り込んだのだと思う。
確かに、並行処理のミスコンパイル段階で摘してくれるのは魅的だけれど、並行処理を的にしない限りは、スタックとかヒープとか考えながらプログラミングしたくない。
そっ閉じした。
5 : ななしのよっしん :2018/07/06(金) 22:11:28 ID: VeUtcE+HqT
安全性に絶対的価値があって、高速性を両立させることが的な場合最も有効な選択肢だよね
急上昇ワード
ニコニコニューストピックス