41
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rust と非同期 IO の歴史(資料編)

Last updated at Posted at 2018-06-26

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


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

疑問


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

今まで Rust は何をやっていたのか?


2018


この頃の Rust

  • tokio-core が tokio になった
  • iron, gotham が開発停止
  • async-await 構文が RFCS に入った

2017


この頃の Rust

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

この時代

  • ES2017 に asnyc-await が入る

2016


この頃の Rust

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

この時代

  • Raspberry Pi 3

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)

2014


この頃の Rust

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

この時代

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

2013


この頃の Rust

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

この時代

  • ES6Promise, Raspberry Pi, Docker

2012


この頃の Rust

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

この時代

  • Elixir, TypeScript, Unity 4

2011


この頃の Rust

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

この時代

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

2006~2010

  • 2010-11-29 - Graydon の個人プロジェクトが Mozzila のプロジェクトになる
  • 2006: Graydon Hoare が Rust を開発開始


この時代

  • 2010: async-await(C#5.0), NaCL
  • 2009: golang, CoffeeScript, iPhone 3GS, RX(C#5.0), Android 1.6
  • 2008: epoll, Boost ASIO , Task(C#4.0), node.js, Google Chrome, Github
  • 2007: libev, Clojure, LINQ(C#3.0), D言語 ver2, Clang, Silverlight
  • 2006: Firefox 2.0, jQuery1.0, Twitter, AWS

C10K 問題への対応として epoll システムコールを使った非同期並列 IO が普及しはじめる。
iPhone の発明


2000~2005


  • 2005: gevent(eventlet), GoogleMap, F#
  • 2004: nginx(AIO), Rails, GMail, Facebook
  • 2003: libaio(Linux AIO, Linux2.6), Scala, LLVM
  • 2002: C10K 問題, Firefox
  • 2001: POSIX AIO(POSIX 1003.1b), IE6
  • 2000: libevent(poll|select)

インターネットの普及で C10K が提唱されはじめる


1990 年代


  • 1999: IE5
  • 1998: Netscape Navigator 4, Google
  • 1997: IE4
  • 1996: Shockwave Flash, Concurrent Haskell, OCaml
  • 1995: Apache, JavaScript, Ruby, Haskell 1.3(monad)
  • 1994: PHP, Java, python1, Perl5, Common Lisp, Amazon
  • 1991: Concurrent ML, Linux
  • 1990: Haskell 1.0, D言語, SML

インターネットが普及する


1980 年代


  • 1986: Erlang
  • 1983: C++

言語実装が始まる


1970 年代

  • 1978: CSP
  • 1977: Future(promise)
  • 1973: Actor
  • 1972: Prolog, C言語
  • 1971: Research Unix V1

基礎理論ができる

今まで Rust は何をやっていたのか?


2013 年以前

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


2015 年

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


2017 年

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


所感

あわせて読みたい

41
18
9

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
41
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?