15

この記事は最終更新日から5年以上が経過しています。

投稿日

更新日

Mozilla発の新言語Rustの概要

Rust(http://www.rust-lang.org/)というMozillaが開発している言語に興味を持っている。マルチコアを生かす次世代のブラウザエンジンであるServoの開発に使われている。

  • 実行速度重視の、静的型付けのマルチパラダイム言語。
  • Actorモデルに基づいた並列計算。
  • Haskellの型クラスのようなオープンなtrait(Javaのインターフェイスのようなものだが、型を定義した後にtraitを外から足せる)に基づく簡潔なOOP。
  • バイナリ(構造体のメモリ配置、関数の呼び出し)がC互換。OOPも構造体のデータ定義とメソッドを定義が分離した形になっている。
  • 安全性を保ちつつ、パフォーマンスを落とさないポインタ操作。ポインタに&@~と異なる修飾子をつけることで扱いが変わり、グローバルなGCに頼らず静的にヒープオブジェクトの寿命チェックができる(ここのところはちょっと難しいのでまだ勉強中)。
  • 関数型言語の機能(クロージャ、代数的データ型とパターンマッチ)を持つ。

まだバージョンが0.5なので仕様も相当変わることが予想される。そのせいもあってか、まだドキュメントがあまり十分でない。公式のTutorialもあまり出来が良くないのだが、ライブラリのソースコードを読んだりすれば理解が深まりそう。

とりあえず、前にCで書いたプログラムをRustで書き換えてみたたが、実行速度はかなり速かった。
https://gist.github.com/nebuta/4975736
注釈:このコードはRust 0.5で書かれたもので、最新のバージョン(1.3)では全く動かない

ロジックを微妙に変えたので単純比較はできないが、Cの物よりも速かった。あとはより関数型っぽく抽象化を進めたときにどのくらい速さが保たれるか、が気になる所。

新規登録して、もっと便利にQiitaを使ってみよう

  1. あなたにマッチした記事をお届けします
  2. 便利な情報をあとで効率的に読み返せます
ログインすると使える機能について
nebutalab
科学計算・関数型言語・ウェブデザインなどに興味あり。

コメント

この記事にコメントはありません。
あなたもコメントしてみませんか :)
新規登録
すでにアカウントを持っている方はログイン
記事投稿キャンペーン開催中
みんなでAWSの知見を共有しよう
~
ChatGPTなどの活用方法を発信しよう!※期間延長
~
15