Проект Mozilla представил релиз компилятора для языка программирования Rust

24 января 2012 года

Разработчики проекта Mozilla представили (Архивная копия от 5 сентября 2014 на Wayback Machine) первый релиз компилятора и инструментария для языка программирования Rust. Версия 0.1 позиционируется как релиз альфа-качества, пригодный для начального ознакомления с языком. API ещё полностью не сформирован и будет расширяться и изменяться, также предстоит большая работа по оптимизации производительности, которая пока оставляет желать лучшего. Исходные тексты проекта распространяются в рамках лицензии MIT. Компилятор поддерживает сборку для платформ Linux (x86 и x86_64), Mac OS X (x86 и x86_64) и Windows (x86), включая возможность кросс-компиляции и сборки сразу для нескольких целевых платформ.

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


use std;
import std::io;

fn main() {
for i in [1, 2, 3] {
io::println(#fmt("hello %d\\n", i));
}
}

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

В настоящее время задействовать потенциал современных многоядерных систем мешает использование однопоточных схем обработки в различных подсистемах. В частности, при обработке одной страницы однопоточным остается связанный с DOM (Document Object Model) внутренний API, функции формирования содержимого окна, парсинга HTML и выполнения JavaScript. Использование Rust позволит разбить код DOM и рендеринга на более мелкие подзадачи, которые смогут выполняться параллельно и более эффективно использовать ресурсы многоядерных CPU.

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

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

Источники

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

Комментарии

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