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

13 июля 2012 года

Представлен (Архивная копия от 24 августа 2022 на Wayback Machine) релиз экспериментального языка программирования Rust 0.3, развиваемого проектом Mozilla. Rust является языком со строгой типизацией, сфокусированным на безопасной работе с памятью и обеспечении высокого параллелизма выполнения заданий (возможность порождать тысячи и даже миллионы подпроцессов). Исходные тексты проекта распространяются под лицензией MIT. Компилятор поддерживает сборку для платформ Linux (x86 и x86_64), FreeBSD (x86_64), Mac OS X (x86 и x86_64) и Windows (x86), включая возможность кросс-компиляции и сборки сразу для нескольких целевых платформ. Параллельно с Rust развивается экспериментальный браузерный движок Servo, написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).

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

С момента прошлого выпуска внесено около 1900 изменений. В язык добавлена серия улучшений, направленных на упрощение процесса кодирования, таких как более компактный синтаксис замыканий, контроль вывода предупреждений на уровне отдельных элементов и поддержка выражения 'do' (вместо do-while). Проведена чистка семантики языка, выполнена реорганизация компилятора, расширен спектр библиотечных функций, добавлены новые экспериментальные возможности, такие как поддержка деструкторов и iface для классов, оптимизированный для совместного доступа к памяти тип 'const'.

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

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

Источники

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

Комментарии

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