web-dev-qa-db-ja.com

Rustグリーンスレッドモデルを削除したのはなぜですか。欠点は何ですか?

ランタイムの自由:Rustのランタイムシステムとグリーンスレッドモデルが完全に削除され、「hello world」の静的バイナリサイズが半分になり、標準ライブラリへの下位レベルのフックへの扉が開かれました。 AaronTuronによって実装されました。

http://blog.Rust-lang.org/2015/01/09/Rust-1.0-alpha.html

グリーンスレッドモデルの欠点は何ですか?

なぜErlangはとても速いのですか?

20
acmerfight

Erlangはプリエンプション付きのグリーンスレッドを使用します。これが可能なのは、ErlangにVMがあり、コードのホットスワップなどの他の多くのこともできるからです。ただし、VMを含む言語は、メモリと処理能力の両方で常に一定のオーバーヘッドがあるため、システムプログラミングには適していません。 Rustはシステムプログラミング言語であるため、重要なランタイムシステムを持つことはできません。また、Erlangは高速ではないことも付け加えておきます。数値計算では効果がないことで有名です。たとえば、 ここ を参照してください。その同時実行モデルにより、I/O操作の高スループットが可能になりますが、これは別のことです。

したがって、実行可能な方法でグリーンスレッドをサポートするには、言語に何らかのランタイムが必要です。 Rustでランタイムが削除される理由は、対応する [〜#〜] rfc [〜#〜] に概説されています。つまり、当時Rustで使用されていたランタイムモデルは、実装の問題やAPIによる一般的な制約のために十分なメリットがなく、効率的に作業するのが難しく、改善するのが困難でした。 。私の知る限り、原則として、誰かがRustのグリーンスレッドベースのランタイムを作成することを妨げるものは何もありません。まだ誰もそれを作成していません。

34