Релиз языка программирования Rust 1.6, развиваемого проектом Mozilla

Состоялся релиз языка программирования Rust 1.6, развиваемого проектом Mozilla, обеспечивающего автоматическое управление памятью и предоставляющего средства для высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo, написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).

Новый выпуск примечателен переводом libcore в разряд стабильных. Стандартная библиотека функций Rust базируется на базовой библиотеке libcore, которая не зависит от платформ и самодостаточна. Поверх libcore построена расширенная библиотека libstd, через которую доступны функции работы с памятью, вводом/выводом и многопоточностью. В обособленном виде libcore может применяться в низкоуровневых компонентах операционных систем и во встраиваемых платформах. Стабилизация данной библиотеки даёт возможность приступить к созданию низкоуровневых приложений, не опасаясь нарушений совместимости с будущими выпусками Rust. Кроме libcore в разряд стабильных также переведено около 30 расширенных библиотечных функций и методов libstd, таких как функции семейства drain() для работы с коллекциями, From для преобразования типов и Vec::extend_from_slice().

Язык Rust развивается проектом Mozilla и сфокусирован на безопасной работе с памятью и обеспечении высокого параллелизма выполнения заданий. При этом Rust обходится без использования сборщика мусора или runtime, что делает возможным создания на Rust библиотек, которые могут выступать в роли прозрачной замены библиотекам для языка Си. Для распространения библиотек на языке Rust, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo, позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек введён в строй репозиторий crates.io.

По структуре язык Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Rust поддерживает смесь императивных процедурных и объектно-ориентированных методов с такими парадигмами, как функциональное программирование и модель акторов, а также обобщённое программирование и метапрограммирование, в статических и динамических стилях.