Информационные технологииStfw.Ru 🔍
🕛

Доступен язык программирования Rust 1.12

Представлен релиз языка программирования Rust 1.12, развиваемого проектом Mozilla, обеспечивающего автоматическое управление ..., Представлен релиз языка программирования Rust 1.12,
Представлен релиз языка программирования Rust 1.12, развиваемого проектом Mozilla, обеспечивающего автоматическое управление памятью и предоставляющего средства для высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo, написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model).
В состав нового выпуска принято 1361 изменений от 176 разработчиков. Основные новшества:
Переход на новый бэкенд компилятора, использующий модель трансляции, основанную на дополнительном промежуточном представлении MIR (mid-level IR), применяемом после HIR (high-level IR), но перед LLVM IR. MIR предоставляет всю необходимую информацию о потоке управления программы, позволяя компилятору точно судить об изменении типов и необходимости вызова деструкторов, манипулируя простейшими структурами в стеке, легко транслируемыми в вид, поддающийся оптимизации в LLVM.
MIR также позволяет обойтись значительно более простым языком, упрощающим создание фаз компиляции и проверки корректности, без необходимости выполнения манипуляций только с достаточно сложным абстрактным синтаксическим деревом (AST). Для некоторых типов кода после внедрения MIR наблюдается сокращение времени компиляции и размера результирующего кода. В дальнейшем, MIR позволит добавить новые режимы оптимизации, труднореализуемые при ранее используемой схеме работы компилятора;
Представлен новый формат сообщений об ошибках, выводимых компилятором rustc. Новый формат в наглядном виде доводит до разработчика внутреннюю информацию о причинах возникновения ошибки, подсвечивая цветом части кода, связанные с проблемой, и приводя в примечании данные о том, что именно не так с кодом. При этом показывается не только строка в коде, на которой непосредственно возникла ошибка, но и контекстно связанные с ошибкой строки. Например, при ошибке вызова функции из-за неверного указания аргументов, дополнительно показывается строка с определением аргументов функции. Новый формат может выводиться не только на экран, но и в виде конструкций JSON ("--error-format=json") для автоматизированной обработки результатов сборки;
title="Доступен язык программирования Rust 1.12"
В пакетный менеджер 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, позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек введён в строй репозиторий crates.io.
По структуре язык Rust напоминает C++, но существенно отличается в некоторых деталях реализации синтаксиса и семантики. Автоматическое управление памятью избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Rust поддерживает смесь императивных, процедурных и объектно-ориентированных методов с такими парадигмами, как функциональное программирование и модель акторов, а также обобщённое программирование и метапрограммирование, в статических и динамических стилях.

Также по теме:
Каталог лучших, бесплатных программ.