LoginSignup
54

More than 5 years have passed since last update.

Rust と非同期 IO の歴史

Last updated at Posted at 2018-06-26
1 / 44
  • この記事は Rust LT #1 で発表したものです

自己紹介

某社でサーバサイド Rust 書いてる


最近のサーバサイド Rust の話題


  • iron, gotham が開発停止
  • tokio-core が tokio runtime になった
  • RFCS に async-await が入った
  • futures 0.2 が yank されそう された

疑問


  • 2018 年にもなって非同期 IO で疲弊している
  • Rust は 2006 年に開発が始まった
  • node.js も go も 2009 年には存在していた
  • 今まで Rust は何をやっていたのか?

今まで Rust は(非同期 IO で)何をやっていたのか?


2006~2010


この頃の Rust

  • Graydon Hoare が Rust を開発開始

この時代

  • 2006: Firefox2.0, jQuery, Twitter, AWS
  • 2007: Clojure, Clang, Silverlight
  • 2008: epoll, Boost ASIO , node.js, Chrome
  • 2009: Go, CoffeeScript, iPhone3GS, Android

2010


この頃の Rust

  • Graydon の個人プロジェクトが Mozilla のプロジェクトになる

この時代

  • async-await(C#5.0), NaCL

2011


この頃の Rust

  • Brendan Eich(JSの開発者)のServoの紹介スライドに出てくる程度
  • 空白の時代

この時代

  • JAVA nio(jdk1.7), Kotlin, React, jQuery Deferred, Boost Context はてなブログ

2012


この頃の Rust

  • インタプリタ、GC
  • libuv で作られたランタイム
  • グリーンスレッド、コルーチン、 work stealing スケジューラ
  • チャンネル、アクター
  • Servo の開発がスタート

この時代

  • Elixir, TypeScript, Unity 4

2013


この頃の Rust

  • Graydon が Mozilla を辞める
  • Rust コミュニティが C++er, Script言語er, 関数型言語er に別れ始める

この時代

  • ES6Promise, Raspberry Pi, Docker

2014


この頃の Rust

  • グリーンスレッドからネイティブスレッドモデルへと変更された
  • グリーンスレッドやランタイムは削除された
  • mio 開発開始
  • rusti インタプリタが消えた

この時代

  • Swift, Flux, asyncio(Python3.4), asm.js, Emscripten, AWS Lambda, Kubernetes

2015


この頃の Rust

  • Rust 1.0 が出た
  • hyper や iron、 nickel が利用されはじめる
  • コンテキストスイッチライブラリ context-rs と mio を使った rotor, mioco, coio-rs などが試みられる

この時代

  • WebAssembly, AlphaGo, ResNet, R-CNN, Raspberry Pi 2, Raspberry Pi Zero, TypeScript(async-await)

2016


この頃の Rust

  • ライブラリレベルのコンテキストスイッチは危険だとの議論
  • mio ベースのゼロコスト futures-rs と tokio-core の開発が始まる
  • rotor, mioco などのそれ以前の非同期IOライブラリが開発終了

この時代

  • Raspberry Pi 3

2017


この頃の Rust

  • hyper が tokio_core + futures-rs に対応
  • actix-web, Gotham の開発が始まる
  • coroutines が nightly に入る
  • mdo-future, futures-await がリリース

この時代

  • ES2017 に async-await が入る

2018


この頃の Rust

  • tokio-core が tokio になった
  • iron, gotham が開発停止
  • futures0.2 が yank された
  • async-await が RFCS に入った

今まで Rust は(非同期 IO で)何をやっていたのか?


2013 年以前

非同期IOのランタイムサポートがあったが、 Rust 1.0 で消えた


2015 年

mio + coroutine の非同期 IO があったが、 futures + tokio が出て消えた


2017 年

tokio-core が主流になったが、 tokio runtime + async-await で混沌としている


所感

  • 環境変わりすぎ
  • ライブラリが根付かない
  • 賽の河原

とはいえ

tokio runtime + async-await でようやく Rust 本来の仕事ができそう


おわり


参考資料

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54