The OpenNET Project / Index page

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



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

Исходное сообщение
"Релиз языка программирования Rust 1.24"
Отправлено opennews, 16-Фев-18 12:46 
Состоялся (https://blog.rust-lang.org/2018/02/15/Rust-1.24.html) релиз языка программирования Rust 1.24 (http://www.rust-lang.org), развиваемого проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime.


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


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


-  Реализована утилита rustfmt (https://github.com/rust-lang-nursery/rustfmt) для автоматического формирования исходных текстов в соответствии с рекомендациями (https://github.com/rust-lang-nursery/fmt-rfcs) по оформлению кода  на языке Rust. Для установки утилиты следует использовать команду "rustup component add rustfmt-preview";

-  Включена по умолчанию  инкрементальная компиляция, позволяющая пересобирать только изменившиеся части кода. Данный режим позволяет значительно сократить время сборки проекта при повторной компиляции после внесения мелких правок. Кроме того,  в новом выпуске  параметр codegen-units по умолчанию увеличен до 16, что позволило существенно (https://github.com/rust-lang/rust/issues/45320) ускорить процесс сборки за счёт распараллеливания операций, ценой незначительного снижения производительности результирующего исполняемого файла (для обеспечения максимальной производительности можно указать codegen-units=1);

-  Устранено неопределённое поведение обработчиков краха в контексте функций FFI (https://doc.rust-lang.org/book/first-edition/ffi.html) (Foreign Function Interface), работа которых могла отличаться в зависимости от ABI. Например, до сих пор оставался непредсказуемым код на базе "C" ABI:


   extern "C" fn panic_in_ffi() {
       panic!("Test");
   }

В Rust 1.24 такой код теперь всегда приводит к прерыванию выполнения, вместо неопределённого поведения;
-  До 10 раз ускорено выполнение операции поиска символов внутри строки при помощи функции str::find, которая переписана с использованием  memchr. На  memchr также переведена реализация [u8]::contains, но ускорение её работы не столь внушительно (ускорение примерно в 3 раза). С использованием ассемблерных инструкций проведена оптимизация f32::min и  f32::max;


-  В разряд стабильных переведена новая порция API, в том числе    RefCell::replace,  RefCell::swap и std::sync::atomic::spin_loop_hint;

-  Обеспечена возможность использования внутри неизменных выражений (constant, static) функций  Cell, RefCell,  UnsafeCell, {integer}::min_value, max_value,    mem’s size_of, align_of, ptr::null, null_mut, а также функции работы с различными целыми типами Atomic (AtomicBool::new, AtomicPtr::new, AtomicIsize::new и т.п.). Например, теперь можно указать "static COUNTER: AtomicUsize = AtomicUsize::new(1);"
-  Добавлена поддержка новых целевых платформ armv4t-unknown-linux-gnueabi и aarch64-unknown-openbsd.

URL: https://blog.rust-lang.org/2018/02/15/Rust-1.24.html
Новость: https://www.opennet.ru/opennews/art.shtml?num=48087

 

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



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

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