Представлен релиз экспериментального языка программирования 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 и т.д.;
    • Практическая возможность нарушения правил: возможность игнорирования правил безопасности, если чётко указано, когда и как их нарушать.



Источник: http://www.opennet.ru/opennews/art.shtml?num=34325