The OpenNET Project / Index page

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

Релиз языка программирования Rust 1.23

06.01.2018 08:17

Состоялся релиз языка программирования Rust 1.23, развиваемого проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime.

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

В подготовке нового выпуска приняли участие 158 разработчиков. Основные новшества:

  • В компиляторе проведена работа по исключению излишних операций копирования, что привело к сокращению потребления памяти при использовании rustc на 5-10%;
  • Документация rustdoc переведена на использование разметки CommonMark (спецификация для формата Markdown). Теперь для генерации документации может использоваться не только Hoedown, но и любой совместимый с CommonMark инструментарий. Документация для Cargo, ранее размещённая на сайте doc.crates.io, перемещена в раздел doc.rust-lang.org/cargo.
  • Стандартизирована функциональность типажа (traits) AsciiExt, предоставляющего функции для определения типа символов (u8, char, [u8], str). В новом выпуске предоставляемые типажом методы определены непосредственно для связанных с ними типов и не требуют явного импорта типажа (use std::ascii::AsciiExt). Например:
    
     
      let ascii = 'a';
      let non_ascii = '❤';
      let int_ascii = 97;
    
      assert!(ascii.is_ascii());
      assert!(!non_ascii.is_ascii());
      assert!(int_ascii.is_ascii());
    
  • В объектах trait теперь разрешено использование произвольных типажей auto;
  • В разряд стабильных переведена новая порция API, в том числе для типов std::sync::atomic реализован метод From для преобразования из неатомарных типов, например "let x = AtomicBool::from(true)". Добавлена поддержка конструкций FromIterator<()>. Cняты ограничения T: Sync для RwLock<T>: Send;
  • Проведена оптимизация Thread::{park, unpark} и SliceExt::binary_search;
  • В компиляторе для LLVM включен режим TrapUnreachable для уменьшения ситуаций, приводящих к неопределённому поведению программ;
  • В пакетном менеджере Cargo добавлена возможность выполнения команды "cargo uninstall" для удаления за раз более чем одного пакета. В "cargo check" добавлена поддержка проверки unit-тестов.


  1. Главная ссылка к новости (https://blog.rust-lang.org/201...)
  2. OpenNews: Релиз языка программирования Rust 1.22
  3. OpenNews: Релиз языка программирования Rust 1.21
  4. OpenNews: Релиз языка программирования Rust 1.20
  5. OpenNews: Третий выпуск операционной системы Redox OS, написанной на языке Rust
  6. OpenNews: В Firefox добавлен CSS-движок Stylo, написанный на языке Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/47863-rust
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (8) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.6, VINRARUS (ok), 15:12, 06/01/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –14 +/
    >Язык сфокусирован на безопасной работе с памятью

    После апаратных уязвимостей х86 я так понимаю утверждение с цытаты устарело? =]

     
     
  • 2.7, Wladmis (ok), 15:28, 06/01/2018 [^] [^^] [^^^] [ответить]  
  • +10 +/
    > >Язык сфокусирован на безопасной работе с памятью
    > После апаратных уязвимостей х86 я так понимаю утверждение с цытаты устарело? =]

    Нет, это вообще про разное.

     
  • 2.8, Akteon (?), 17:07, 06/01/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Почему устарело-то ?? Будто программа на Rust принципиально не может выполнятся на процессоре без предсказания ветвлений , бггг
     

  • 1.17, S.Atahl (?), 08:42, 07/01/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Чего только не придумают, лишь бы не писать на си-86.
     
     
  • 2.18, foi (?), 11:56, 07/01/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чего только не придумают, лишь бы быть ретроградом
     
  • 2.20, Аноним (20), 15:29, 07/01/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Чего только не придумают чтобы не писать на Ассемблере...    Чего только не придумают чтобы не писать в кодах микропроцессоров...
     
     
  • 3.21, pda (?), 00:54, 08/01/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Я, кстати, писал чуть-чуть. For fun. В пределах 100 байт. Удовольствие, как и следовало ожидать оказалось так себе. :)
     

  • 1.19, anomymous (?), 12:26, 07/01/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >> По структуре язык Rust напоминает C++
    >> let ascii = 'a';
    >> assert!(!non_ascii.is_ascii());

    /0

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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