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

Разработчики проекта Mozilla представили первый релиз компилятора и инструментария для языка программирования 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-модель;
    • Функции первого класса с биндингами;
    • Нет номинальных типов или иерархии типов;
    • Мультиплатформенный, поддерживается Linux, MacOS X, Windows;
    • Хранение строк в UTF8, разнообразие низкоуровневых типов;
    • Работает с существующими нативными наборами инструментов: GDB, Shark, Valgrind и т.д.;
    • Практическая возможность нарушения правил: возможность игнорирования правил безопасности, если чётко указано, когда и как их нарушать.



Яндекс.Метрика
Счётчик ТЦ#65533;Ц LiveRSS: Каталог русскоязычных RSS-каналов