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, сниженные административные формальности для работы с кодом и т.п.
© OpenNet