Почему Rust удалил модель с зеленой резьбой; какой недостаток?

Runtime freedom: система Rusts runtime и модель с зеленой резьбой были полностью удалены, что уменьшило статический двоичный размер "hello world" пополам и открыло дверь в нижние уровни крючков в стандартную библиотеку. Реализован Аароном Туроном.

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

В чем недостаток модели с зеленой резьбой?

Почему Erlang так быстро?

Ответ 1

Erlang использует зеленые потоки с преимуществом. Это возможно только потому, что у Erlang есть виртуальная машина, которая также позволяет много других вещей, таких как hotswap-код. Но языки с виртуальной машиной не подходят для системного программирования, потому что они всегда имеют некоторые постоянные издержки, как в памяти, так и в вычислительной мощности. Rust - это язык системного программирования, поэтому он не может иметь значительную систему времени исполнения. Я бы также добавил, что Эрланг не быстро. Это, как известно, неэффективно в числовых вычислениях, например - см. здесь. Его модель concurrency обеспечивает высокую пропускную способность для операций ввода-вывода, но это совсем другое.

Итак, чтобы поддерживать зеленые потоки допустимым образом, язык должен иметь какое-то время выполнения. Причины удаления времени выполнения в Rust указаны в соответствующем RFC. Короче говоря, модель времени выполнения, используемая в Rust в то время, была трудной для работы с эффективными и трудными улучшениями, не имея достаточных преимуществ из-за проблем с реализацией и общих ограничений из-за API, поэтому она была отменена. Насколько я знаю, ничто в принципе не позволяет кому-то писать зеленый поток на основе Rust, но никто еще этого не сделал.