Mozilla разрабатывает новый язык программирования Rust

Представители проекта Mozilla разрабатывают новый мультипарадигменный язык программирования Rust. Изначально, проект Rust был основан Грейдоном Хоаре (Graydon Hoare) в 2006 году, в 2009 году проектом заинтересовалась компания Mozilla Corporation и включилась в его разработку. Исходные тексты проекта распространяются в рамках лицензии BSD.

Список базовых возможностей:

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

Ответы разработчиков на вопросы «почему и зачем?» вкратце сводятся к следующему:

  • Существующие языки этого уровня абстракции и эффективности неудовлетворительны, в частности своим отношением к безопасности и плохой поддержкой параллелизма;
  • Целями проекта не являются: применение конкретных сверх-современных технологий; предпочтение выразительности, минимализму и элегантности перед другими целями; полный охват системного языка вплоть до степени «можно написать ядро»; охват полного набора возможностей C++ или любого другого языка — функциональность, охватывающая все наиболее употребительные возможности; 100%-ная статичность и безопасность; возможность работы на любой платформе.
  • Ни одна из частей ещё не готова к запуску в производство. На данный момент существует bootstrap-компилятор на Ocaml со множеством ошибок и отсутствующим функционалом; неполная, но рабочая версия runtime-библиотеки; некоторые тесты и документация; слабые зачатки стандартной библиотеки.
  • Участие компании Mozilla Corporation в проекте не предполагает внезапной переработки браузера, смысл её участия в экспериментировании и проверки некоторых возможностей. Каких-либо конкретных планов по реальному использованию на сегодня не существует, эти возможности будут зависеть от проявленного интереса сообщества.
  • Основная работа выполняется работниками Mozilla Corporation, основными правами владеет Mozilla Foundation, что не является необычным для разработки, спонсируемой крупными компаниями или организациями. Выбор Github, а не традиционных для Mozilla инструментов, таких, как Mercurial/Bugzilla/Tinderbox, продиктован особенностями самого Git, в частности быстрым прогрессом в развитии Git с того времени, как была выбрана Mercurial для основных нужд разработки в Mozilla, сниженные административные формальности для работы с кодом и т.п.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.