Организация Mozilla вышла на финишную прямую в подготовке языка программирования Rust 1.0. Разработчики говорят, что это торжественное событие состоится примерно в конце года. После бета-тестирования выйдет финальный релиз. С этого момента перспективный язык программирования можно использовать в боевых условиях: код гарантированно будет компилироваться в следующих версиях.
Дело не только в компиляции. Mozilla считает, что дизайн Rust наконец-то приобретает желаемую минималистичную форму. К примеру, раньше было несколько типов указателей, сейчас остались только
Rust сочетает в себе эффективность С и С++ с безопасностью Java.
Весь дизайн построен на концепции «владения и заимствования» (ownership and borrowing). Изначально предполагалось использовать механизм владения для быстрого и безопасного переноса данных между процессами. Но потом пришло понимание, что этот же механизм можно использовать для передачи значительной части функций в библиотеки. В итоге, Rust получился даже более низкоуровневым, чем разработчики предполагали, и без ущерба для безопасности. На минимальной конфигурации Rust можно даже написать ядро операционной системы (примеры: 1, 2, 3)!
Разработчики также опубликовали список функций, которые надо реализовать до официального релиза. Вот над чем сейчас идёт работа:
Параллельно создаётся пакетный менеджер Cargo и будет организован центральный репозиторий ПО.
Из лекции Степана Кольцова, которую недавно публиковали на Хабре:
Примеры кода на Rust см. на официальном сайте.
UPD. Полный перевод статьи «На пути к Rust 1.0» от Googolplex
Дело не только в компиляции. Mozilla считает, что дизайн Rust наконец-то приобретает желаемую минималистичную форму. К примеру, раньше было несколько типов указателей, сейчас остались только
&T
, и &mut T
. Упрощение затронуло и другие аспекты, в том числе замыкания, которые вызывали много споров.Rust сочетает в себе эффективность С и С++ с безопасностью Java.
Весь дизайн построен на концепции «владения и заимствования» (ownership and borrowing). Изначально предполагалось использовать механизм владения для быстрого и безопасного переноса данных между процессами. Но потом пришло понимание, что этот же механизм можно использовать для передачи значительной части функций в библиотеки. В итоге, Rust получился даже более низкоуровневым, чем разработчики предполагали, и без ущерба для безопасности. На минимальной конфигурации Rust можно даже написать ядро операционной системы (примеры: 1, 2, 3)!
Разработчики также опубликовали список функций, которые надо реализовать до официального релиза. Вот над чем сейчас идёт работа:
- Типы с динамическим размером (dynamically sized types). Расширение системы типизации позволяет использовать типы данных, размер которых неизвестен на момент компиляции, например, массивы. Вместо этого проставляется хитроумный указатель, содержащий массивы или объекты.
- Распакованные замыкания (unboxed closures). В новом дизайне замыканий они объединены с типами объектов.
- Ассоциативные типы (associated types) в системе признаков значительно облегчают написание аннотаций для библиотек, первая реализация уже готова.
- Где-клозы (where clauses). Планируется внедрить гибкую новую форму элементарной дизъюнкции. Работа над этой функцией уже закончена, скоро её добавят в основную ветку кода.
- Типаж с множественной отсылкой (multidispatch traits). Функции типажей расширены, так что они могут указывать более чем один тип одновременно, это открывает возможности для более эргономичных API и для использования ассоциативных типов, упомянутых выше.
- Деструкторы. Семантика деструкторов улучшена, так что ему не нужно теперь обязательно обнулять память, что должно повысить скорость компиляции и исполнения программ. Сейчас заканчивается анализ условий для обнуления памяти, после чего эту часть тоже добавят в основную ветку.
- Зелёные потоки (green threading) убирают из основной библиотеки в дополнительные, чтобы оптимизировать их эффективность на конкретной операционной системе. Это тоже приведёт к ускорению исполнения программ.
Параллельно создаётся пакетный менеджер Cargo и будет организован центральный репозиторий ПО.
Из лекции Степана Кольцова, которую недавно публиковали на Хабре:
«Rust решает проблемы Java и C++: программы, написанные на Rust, одновременно быстрые и безопасные. Rust является таким же низкоуровневым (в смысле close-to-metal) языком программирования, как и C++, однако в язык встроены конструкции, позволяющие на этапе компиляции доказывать, что в программе не случатся ошибки работы с памятью, как то обращение после использования, двойное удаление, использование неинициализированной памяти и т.п.
Кроме того, Rust исправляет многие ошибки, допущенные при проектировании C++ и Java. Например, шаблоны в Rust, в отличие от C++, статически типизированы, а вместо дженериков Java используется механизм, похожий на тайпклассы Haskell».
Примеры кода на Rust см. на официальном сайте.
UPD. Полный перевод статьи «На пути к Rust 1.0» от Googolplex