The OpenNET Project / Index page

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



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

Исходное сообщение
"Релиз языка программирования Rust 1.20"
Отправлено opennews, 01-Сен-17 12:41 
Доступен (https://blog.rust-lang.org/2017/08/31/Rust-1.20.html) релиз языка программирования Rust 1.20 (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).  На Rust также разрабатывается (https://www.opennet.ru/opennews/art.shtml?num=46459) операционная система Redox (https://www.redox-os.org/), использующая концепцию экзоядра и продвигающая принцип "все есть URL".

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


-  В дополнение к ранее доступной поддержке ассоциированных функций (функции, привязанные непосредственно к типу) в новом выпуске реализована возможность создавать ассоциированные константы (https://github.com/rust-lang/rfcs/blob/master/text/0195-asso.... Например, в примере ниже константа ID  прикреплена к типу Struct:


   struct Struct;
   impl Struct {
       const ID: u32 = 0;
   }
   fn main() {
       println!("the ID of Struct is: {}", Struct::ID);
   }

Ассоциированные константы также могут быть использованы с типажами (https://ru.wikipedia.org/wiki/%D0%A2%D0%... (traits) и перечислениями (enum), при этом для типажей допускается определение ассоциированных констант без непосредственного присвоения значения (значение может быть присвоено во время привязки типажа):


   trait Trait {
       const ID: u32;
   }
   struct Struct;

   imp Trait for Struct {
       const ID: u32 = 5;
   }
   fn main() {
       println!("{}", Struct::ID);
   }

-  В разряд стабильных переведена новая порция (https://github.com/rust-lang/rust/blob/master/RELEASES.md)&n...функций и методов, в том числе CString::as_c_str, Chain::get_ref,
    Take::get_ref, f32/64::from_bits, f32/64::to_bits,     slice::sort_unstable_*, str::as_bytes_mut, str::get_mut,    str::get_* и т.п.

-  В макросе "unimplemented!" обеспечена возможность определения сообщений, информирующих что именно пока не реализовано;

-  Поддержка Unicode обновлена до версии спецификации 10.0.0;

-  Реализация функций min и max для типов с плавающей запятой переписана на языке Rust и больше не связана с cmath;

-  Обеспечена дополнительная защита от атаки Stack Сlash (https://www.opennet.ru/opennews/art.shtml?num=46724), в результате которой содержимое переполненной кучи может оказаться в области стека или, наоборот, стек может переписать область кучи;

-  В стандартной библиотеке представлены новые функции нестабильной сортировки: slice::sort_unstable_by_key, slice::sort_unstable_by и slice::sort_unstable, которые отличаются от стабильных тем, что работают быстрее, но не гарантируют сохранение порядка следования элементов в группе;

-  Существенно увеличена (https://github.com/rust-lang/rust/pull/42533) скорость (до 29 раз) раскрытия макроподстановок в процессе работы компилятора rustc;
-  В пакетном менеджере Cargo хранение параметров аутентификации к crates.io перенесено из общего файла с настройками ~/.cargo/config, который часто доступен на чтение всем пользователям, в специальный файл  ~/.cargo/credentials;

-  В Cargo обеспечена сборка бинарных файлов main.rs, размещённых в подкаталогах src/bin, например, на базе src/bin/server/main.rs и src/bin/client/main.rs  будут сгенерированы исполняемые файлы target/debug/server и target/debug/client;

-  Добавлена возможность указания версии устанавливаемого исполняемого файла при указании опции "--vers" в "cargo install";

-  Добавлена новая целевая сборочная платформа wasm32-experimental-emscripten, позволяющая организовать сборку в псевдокод WebAssembly  при помощи бэкенда на базе LLVM.

Напомним, что язык 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/2017/08/31/Rust-1.20.html
Новость: http://www.opennet.ru/opennews/art.shtml?num=47113

 

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



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

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