The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Доступен язык программирования Rust 1.12"
Отправлено opennews, 30-Сен-16 23:10 
Представлен (https://blog.rust-lang.org/2016/09/29/Rust-1.12.html) релиз языка программирования Rust 1.12 (http://www.rust-lang.org), развиваемого проектом Mozilla, обеспечивающего автоматическое управление памятью и предоставляющего средства для высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo (https://www.opennet.ru/opennews/art.shtml?num=44712), написанный (https://github.com/servo/servo/) на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).


В состав нового выпуска принято 1361 изменений от 176 разработчиков. Основные новшества (https://github.com/rust-lang/rust/blob/master/RELEASES.md):

- Переход на новый бэкенд компилятора, использующий модель трансляции, основанную на дополнительном промежуточном представлении MIR (https://blog.rust-lang.org/2016/04/19/MIR.html) (mid-level IR), применяемом после HIR (high-level IR), но перед LLVM IR. MIR предоставляет всю необходимую информацию о потоке управления программы, позволяя компилятору точно судить об изменении типов и необходимости вызова деструкторов, манипулируя простейшими структурами в стеке, легко транслируемыми в вид, поддающийся оптимизации в LLVM.


MIR также позволяет обойтись значительно более простым языком, упрощающим создание фаз компиляции и проверки корректности, без необходимости выполнения манипуляций только с достаточно сложным абстрактным синтаксическим деревом (AST). Для некоторых типов кода после внедрения MIR наблюдается сокращение времени компиляции и размера результирующего кода. В дальнейшем, MIR позволит добавить новые режимы оптимизации, труднореализуемые при ранее используемой схеме работы компилятора;


-  Представлен новый формат сообщений об ошибках, выводимых компилятором rustc. Новый формат в наглядном виде доводит до разработчика внутреннюю информацию о причинах возникновения ошибки, подсвечивая цветом части кода, связанные с проблемой, и приводя в примечании данные о том, что именно не так с кодом. При этом показывается не только строка в коде, на которой непосредственно возникла ошибка, но и контекстно связанные с ошибкой строки. Например, при ошибке вызова функции из-за неверного указания аргументов, дополнительно показывается строка с определением аргументов функции. Новый формат может выводиться не только на экран, но и в виде конструкций JSON ("--error-format=json") для автоматизированной обработки результатов сборки;


-  В пакетный менеджер Cargo добавлена поддержка "рабочих областей" (workspaces),  позволяющих использовать в группе пакетов единый файл блокировки  Cargo.lock. Для проектов, разбиваемых на несколько пакетов, новая возможность позволит упростить поддержание общих зависимостей. В cargo также добавлена возможность переопределения источника исполняемых контейнеров (crate), что позволяет при помощи команд   cargo-vendor и cargo-local-registry организовать обращение к локальной копии зависимостей, что в будущем послужит основой для возможности создания локальных зеркал репозитория crates.io;
-  В rustc добавлена поддержка трёх новых целевых платформ библиотеки MUSL: arm-unknown-linux-musleabi, arm-unknown-linux-musleabihf и armv7-unknown-linux-musleabihf, для которых генерируются статически связанные исполняемые файлы;
-  Добавлена поддержка сборки компилятора с использованием LLVM 3.9;
-  В тестовые исполняемые файлы добавлена опция "--test-threads" для задания числа потоков, используемых при запуске тестов. При выполнении тестов дольше 60 секунд теперб выводится предупреждение;

-  В разряд стабильных переведена новая порция функций и методов.

Напомним, что язык Rust сфокусирован на безопасной работе с памятью и обеспечении высокого параллелизма выполнения заданий. При этом Rust обходится без использования сборщика мусора или runtime, что делает возможным создания на Rust библиотек, которые могут выступать в роли прозрачной замены библиотекам для языка Си. Для распространения библиотек на языке  Rust, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo (http://blog.rust-lang.org/2014/11/20/Cargo.html), позволяющий получить нужные для программы библиотеки  в один клик. Для размещения библиотек введён в строй репозиторий crates.io (https://crates.io/).

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


URL: https://blog.rust-lang.org/2016/09/29/Rust-1.12.html
Новость: http://www.opennet.ru/opennews/art.shtml?num=45256

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру