Mozilla наметила план для выпуска Rust 1.0

в 20:10, , рубрики: mozilla, Rust, минимализм, Программирование

Mozilla наметила план для выпуска Rust 1.0Организация Mozilla вышла на финишную прямую в подготовке языка программирования Rust 1.0. Разработчики говорят, что это торжественное событие состоится примерно в конце года. После бета-тестирования выйдет финальный релиз. С этого момента перспективный язык программирования можно использовать в боевых условиях: код гарантированно будет компилироваться в следующих версиях.

Дело не только в компиляции. 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 см. на официальном сайте.

Автор: alizar

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js