Разработчиками из проекта Mozilla был представлен экспериментальный язык программирования Rust 0.7 с наличием строгой типизации и ориентированный на то, чтобы вести вполне безопасную работу с памятью и обеспечивать высокий параллелизм в выполнении заданий.
Исходный текст проекта будет распространяться в соответствии с лицензией MIT кроме Rust также ведется разработка экспериментального браузерного движка Servo, написанного на этом же языке с весьма интересной особенностью – он поддерживает многопоточный рендеринг web-страницы и распараллеливание операции с DOM.
В соответствии со своей структурой, Rust очень похож на С++, тем не менее, его существенное отличие сводится к некоторым деталям синтаксической реализации, а также семантической, что ориентировано на работу по блочной структуре кода, при помощи которой возможна реализация задач в виде легковесной сопрограммы. За счет автоматического управления памятью разработчики избавляются от необходимости манипулировать указателем, и защищает от проблем, которые возникают в процессе работы с низкоуровневой памятью – к примеру, от обращения к областям памяти после ее освобождения, разыменования нулевого указателя и выход вне границ буфера, и многих прочих. Rust обеспечивает поддержку смеси с императивными процедурными и объектно-ориентированными методами, с такой парадигмой, как функциональный тип программирования и модели акторов, а также обобщенного программирования и метапрограммирования в любом статическом и динамическом стиле.
С момента, когда производился релиз прошлого выпуска, язык претерпел более двух тысяч изменений. Главное отличие от прошлого выпуска состоит в том, чтобы усовершенствовать синтаксис и элементы языка, а саму основную работу сфокусировали на том, чтобы расширить стандартную функциональную библиотеку. Также можно обратить внимание на ввод новой реализации системы проверки любого заимствованного указателя и новом модуле итераторе, который заменил ruby-подобный внутренний итератор, вместо которого сейчас используют тип Iterator, очень схожий с внешними итераторами Java.
Среди базовых возможностей языка стоит отметить:
- Он очень аккуратно работает с памятью – у вас не будет никакого нулевого и потерянного указателя. Управление памятью производится в полностью автоматизированном режиме.
- Будет контролироваться изменчивость – ведь по умолчанию ни один объект нельзя изменить.
- Динамическое выполнение абсолютно безопасно – сбои и исключения полностью обрабатываются, ведутся логии.
- Появилась возможность определить сложные инварианты, которые ведут контроль над структурами данных.