- PVSM.RU - https://www.pvsm.ru -

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

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

Дело не только в компиляции. Mozilla считает, что дизайн Rust наконец-то приобретает желаемую минималистичную форму. К примеру, раньше было несколько типов указателей, сейчас остались только &T, и &mut T. Упрощение затронуло и другие аспекты, в том числе замыкания, которые вызывали много споров.

Rust сочетает в себе эффективность С и С++ с безопасностью Java.

Весь дизайн построен на концепции «владения и заимствования» (ownership and borrowing). Изначально предполагалось использовать механизм владения для быстрого и безопасного переноса данных между процессами. Но потом пришло понимание, что этот же механизм можно использовать для передачи значительной части функций в библиотеки. В итоге, Rust получился даже более низкоуровневым, чем разработчики предполагали, и без ущерба для безопасности. На минимальной конфигурации Rust можно даже написать ядро операционной системы (примеры: 1 [2], 2 [3], 3 [4])!

Разработчики также опубликовали список функций, которые надо реализовать до официального релиза. Вот над чем сейчас идёт работа:

  • Динамически типы изменяемого размера (dynamically sized types). Расширение системы типизации позволяет использовать типы данных, размер которых не известен на момент компиляции, например, массивы. Вместо этого проставляется хитроумный указатель [5], содержащий массивы или объекты.
  • Распакованные замыкания (unboxed closures). В новом дизайне замыканий [6] они объединены с типами объектов.
  • Ассоциативные типы (associated types) в системе признаков значительно облегчают написание аннотаций для библиотек, первая реализация [7] уже готова.
  • Где-клозы (where clauses). Планируется внедрить гибкую новую форму элементарной дизъюнкции. Работа над этой функцией [8] уже закончена, скоро её добавят в основную ветку кода.
  • Типаж с множественной отсылкой (multidispatch traits). Функции типажей расширены, так что они могут указывать более чем один тип одновременно [7], это открывает возможности для более эргономичных API и для использования ассоциативных типов, упомянутых выше.
  • Деструкторы. Семантика деструкторов улучшена, так что ему не нужно теперь обязательно обнулять память, что должно повысить скорость компиляции и исполнения программ. Сейчас заканчивается анализ условий для обнуления памяти, после чего эту часть тоже добавят в основную ветку.
  • Зелёные потоки (green threading) убирают из основной библиотеки в дополнительные, чтобы оптимизировать их эффективность на конкретной операционной системе. Это тоже приведёт к ускорению исполнения программ.

Параллельно создаётся пакетный менеджер Cargo [9] и будет организован центральный репозиторий ПО.

Из лекции Степана Кольцова [10], которую недавно публиковали на Хабре:

«Rust решает проблемы Java и C++: программы, написанные на Rust, одновременно быстрые и безопасные. Rust является таким же низкоуровневым (в смысле close-to-metal) языком программирования, как и C++, однако в язык встроены конструкции, позволяющие на этапе компиляции доказывать, что в программе не случатся ошибки работы с памятью, как то обращение после использования, двойное удаление, использование неинициализированной памяти и т.п.

Кроме того, Rust исправляет многие ошибки, допущенные при проектировании C++ и Java. Например, шаблоны в Rust, в отличие от C++, статически типизированы, а вместо дженериков Java используется механизм, похожий на тайпклассы Haskell».

Примеры кода на Rust см. на официальном сайте [11].

Автор: alizar

Источник [12]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/69724

Ссылки в тексте:

[1] говорят: http://blog.rust-lang.org/2014/09/15/Rust-1.0.html

[2] 1: https://github.com/charliesome/rustboot

[3] 2: https://github.com/ryanra/RustOS

[4] 3: https://github.com/jvns/puddle

[5] хитроумный указатель: https://github.com/rust-lang/rust/commit/7932b719ec2b65acfa8c3e74aad29346d47ee992

[6] дизайне замыканий: https://github.com/rust-lang/rfcs/blob/master/active/0044-closures.md

[7] первая реализация: https://github.com/rust-lang/rfcs/pull/195

[8] этой функцией: https://github.com/rust-lang/rfcs/pull/135

[9] Cargo: http://crates.io/

[10] лекции Степана Кольцова: http://habrahabr.ru/company/yandex/blog/235789/

[11] официальном сайте: http://www.rust-lang.org/

[12] Источник: http://habrahabr.ru/post/237059/