Проект Mozilla представил релиз компилятора для языка программирования Rust
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 и т.д.;
- Практическая возможность нарушения правил: возможность игнорирования правил безопасности, если чётко указано, когда и как их нарушать.
Источник: http://www.opennet.ru/opennews/art.shtml?num=32876
|
0 | Tweet | Нравится |
|