Выпуск языка программирования Rust 0.7, развиваемого проектом Mozilla

4 июля 2013 года

Разработчики из проекта Mozilla представили (Архивная копия от 11 ноября 2020 на Wayback Machine) релиз Rust 0.7, экспериментального языка программирования со строгой типизацией, сфокусированного на безопасной работе с памятью и обеспечению высокого параллелизма выполнения заданий (возможность порождать тысячи и даже миллионы подпроцессов). Исходные тексты проекта распространяются под лицензией MIT. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo, написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).

По структуре язык Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики, а также ориентацией на блочную организацию структуры кода, которая позволяет реализовать задачи в виде легковесных сопрограмм. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Rust поддерживает смесь императивных процедурных и объектно-ориентированных методов с такими парадигмами, как функциональное программирование и модель акторов, а также обобщённое программирование и метапрограммирование, в статических и динамических стилях.

С момента прошлого выпуска внесено около 2000 изменений. В отличие от прошлых выпусков, которые главным образом были нацелены на усовершенствование синтаксиса и элементов языка, при подготовке версии 0.7 основная работа была сфокусирована на расширении стандартной библиотеки функций. Из изменений также отмечается новая реализация системы проверки заимствованных указателей и новый модуль итератор (std::iterator), заменивший собой ruby-подобные внутренние итераторы, вместо которых теперь используются тип Iterator, напоминающий внешние итераторы в стиле Java.

Базовые возможности языка:

  • Ориентация на безопасность:
  • Аккуратная работа с памятью - никаких нулевых и потерянных указателей. Автоматическое управление памятью;
  • Контроль изменчивости. Объекты неизменяемы (Immutable) по умолчанию;
  • Безопасность динамического выполнения: обработка сбоев, исключения, ведение лога, RAII / dtors;
  • Typestate: возможность определения сложных инвариантов, контролирующих структуры данных.
  • Ориентация на параллельность и эффективность кода:
  • Явный контроль памяти, контролирование схемы распределения памяти;
  • Крайне легкие задачи, формируемые в виде сопрограмм. Лёгкость в порождении тысяч и миллионов подпроцессов;
  • Итераторы стека (фактически лямбда-блоки без распределения кучи);
  • Статическая, нативная компиляция с созданием исполняемых файлов ELF, PE, Mach-o;
  • Прямой и простой интерфейс для кода на языке Си;
  • Ориентация на практическое применение:
  • Мультипарадигмальный, функциональный, императивно-процедурный, объектно-ориентированный, поддерживающий параллельную actor-модель;
  • Функции первого класса с биндингами;
  • Нет номинальных типов или иерархии типов;
  • Мультиплатформенный, поддерживается Windows, Linux, Mac OS X, *BSD;
  • Хранение строк в UTF8, разнообразие низкоуровневых типов;
  • Работает с существующими нативными наборами инструментов: GDB, Valgrind, Shark и т.д.;
  • Практическая возможность нарушения правил: возможность игнорирования правил безопасности, если чётко указано, когда и как их нарушать.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Выпуск языка программирования Rust 0.7, развиваемого проектом Mozilla», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.