Доступен язык программирования Rust 1.8
Состоялся релиз языка программирования Rust 1.8, развиваемого проектом Mozilla, обеспечивающего автоматическое управление памятью и предоставляющего средства для высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo, написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).
В состав нового выпуска принято более 1400 изменений, из которых выделяется два улучшения языка. Первым улучшением языка является возможность перегрузки операторов присвоения, таких как »+=» и »-=», что позволяет адаптировать их для манипуляции со сложными структурами данных, например, организовать суммирование элементов ассоциативных массивов. Второе изменение в языке связано с определением структур, не содержащих полей, выражение «struct Bar { }» теперь не приводит к выводу ошибки.
Из других улучшений отмечается перевод в разряд стабильных около 20 функций и методов, в основном связанных с обработкой строк UTF-16, работой со временем и перегрузкой операторов. Кроме того, представлена начальная реализация новой системы сборки, написанной на языке Rust и основанной на пакетном менеджере Cargo, который уже давно применяется для сборки программ на языке Rust. Что касается самого Cargo, то в нём представлено несколько новых команд: «cargo init» для запуска проекта в текущей директории (без создания поддиректории как в «cargo new») и «cargo metadata» для извлечения метаданных о проекте. На платформах Linux и BSD добавлена защита от исполнения кода в стеке.
Напомним, что язык Rust сфокусирован на безопасной работе с памятью и обеспечении высокого параллелизма выполнения заданий. При этом Rust обходится без использования сборщика мусора или runtime, что делает возможным создания на Rust библиотек, которые могут выступать в роли прозрачной замены библиотекам для языка Си. Для распространения библиотек на языке Rust, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo, позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек введён в строй репозиторий crates.io.
По структуре язык Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Rust поддерживает смесь императивных процедурных и объектно-ориентированных методов с такими парадигмами, как функциональное программирование и модель акторов, а также обобщённое программирование и метапрограммирование, в статических и динамических стилях.
© OpenNet