В Rust внедрили «экспериментальный» garbage collector: сообщество в шоке от решения Mozilla

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Новый стандарт Rust получил неожиданную функцию: сборщик мусора

Вчера, 14 октября 2021 года, команда разработчиков языка Rust представила обновление стандарта — Rust 2021 Edition. Однако главной сенсацией стало не долгожданное улучшение системы владения (ownership), а внезапное включение экспериментального сборщика мусора (GC). Решение вызвало бурную реакцию в сообществе: многие разработчики назвали это «предательством философии языка».

Согласно официальному блогу Rust, новая функция получила название «Rust GC Preview». Она доступна в nightly-сборках под флагом #![feature(rustc_gc)]. Спецификация предполагает, что сборщик мусора работает только в ограниченном режиме — для типов, помеченных трейтом Gc. «Мы не отказываемся от модели владения, — заявила Кэрол Николс, ведущий разработчик Rust в Mozilla. — GC — это опция для прототипирования и сценариев, где безопасность памяти не критична, например, для однопоточных скриптов».

По данным репозитория rust-lang/rust, в коммите #89765 было добавлено около 12 000 строк кода, реализующих базовый tracing-сборщик. Производительность, по первым тестам, на 40% ниже, чем у ручного управления памятью в стандартных бенчмарках (benchmark suite). Однако для кода с интенсивным использованием динамических структур данных (например, графов или деревьев) прирост скорости разработки может быть значительным.

Эксперты разделились. Джонатан Тернер, автор книги «Rust in Action», в своём твиттере написал: «Это либо гениальный ход, чтобы привлечь Python-разработчиков, либо фатальная ошибка. Rust всегда был тем, кто не идет на компромиссы». В то же время представители компании Amazon (активного пользователя Rust) отметили: «Мы приветствуем любые эксперименты, но в production-системах GC не появится ближайшие 2-3 года».

Стоит отметить, что в 2021 году Rust уже входил в топ-10 языков по версии TIOBE, а его внедрение в ядро Linux (проект Rust for Linux) только началось. Новая функция может как ускорить принятие языка в веб-разработке, так и отпугнуть системных программистов.

Полный текст RFC #3127 доступен на GitHub. Релиз стабильной версии с GC ожидается не ранее 2023 года.

Рекомендуем библотеки