The OpenNET Project / Index page

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

23.07.2017 08:45  Релиз языка программирования Rust 1.19

Подготовлен релиз языка программирования Rust 1.19, развиваемого проектом Mozilla, обеспечивающего автоматическое управление памятью и предоставляющего средства для высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime. Параллельно с Rust совместно с компанией Samsung развивается экспериментальный браузерный движок Servo, написанный на языке Rust и отличающийся поддержкой многопоточного рендеринга web-страниц и распараллеливанием операций с DOM (Document Object Model). На Rust также разрабатывается операционная система Redox, использующая концепцию экзоядра и продвигающая принцип "все есть URL".

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

  • Добавлена поддержка структур данных "union", представляющих собой объединения, совместимые с аналогичным типом в языке Си. В отличие от структур enum, в union не производится сохранение тегов, используемых для проверки выбора корректного варианта данных во время выполнения, т.е. запись и чтение полей в "union" может применяться только в блоках unsafe. Основным назначением union является обеспечение переносимости с кодом на языке Си и упрощение создания обвязок вокруг библиотек на Си;
    
       union MyUnion {
           f1: u32,
           f2: f32,
       }
    
       let u = MyUnion { f1: 1 };
       unsafe { u.f1 = 5 };
       let value = unsafe { u.f1 };
    
  • Реализована возможность прерывания цикла с возвратом определённого значения. Например, теперь можно обойтись без создания промежуточной переменной для передачи результата работы цикла и использовать конструкции вида "let x = loop { break 7; };"
  • Замыкания (closures), которые не захватывают окружение, теперь могут быть приведены к типу "указатель на функцию". Например, "let f: fn(i32) -> i32 = |x| x + 1;";
  • Для сжатия архивов вместо gzip по умолчанию теперь применяется сжатие с использованием xz;
  • Добавлена поддержка сборки компилятора (bootstrap) в окружении платформы Android;
  • В разряд стабильных переведена новая порция функций и методов, в том числе API OsString::shrink_to_fit, cmp::Reverse, Command::envs и thread::ThreadId. Также стабилизированы макросы "eprint!" и "eprintln!", которые работают по аналогии с "print!" "еprintn!", но выводят результат в stderr вместо stdout;
  • В пакетном менеджере Cargo прекращён учёт локального рабочего каталога в индексе crates.io, что позволило добиться сокращения размера файла со сборочным реестром и уменьшить время операций клонирования. В команду "cargo bench" добавлена опция "--all" для вызова тестов сразу для всех пакетов в указанном рабочем окружении (отдельные пакеты можно исключить через опцию "--exclude"). В опции "--features" теперь допускается перечисление нескольких значений, разделённых запятой или пробелом. Реализована возможность подключения своих обработчиков (runner) для заданных целевых платформ.

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

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



  1. Главная ссылка к новости (https://blog.rust-lang.org/201...)
  2. OpenNews: Эксперимент по разработке частей ядра Linux на языке Rust
  3. OpenNews: Доступна операционная система Redox 0.2, написанная на языке Rust
  4. OpenNews: Успехи Rust: Подготовка первого выпуска Servo и использование Rust в новом хранилище Dropbox
  5. OpenNews: Facebook работает над реализацией сервера Mercurial на языке Rust
  6. OpenNews: В Firefox 48 начнётся интеграция компонентов на языке Rust
Лицензия: CC-BY
Тип: Программы
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.3, Аноним, 12:50, 23/07/2017 [ответить] [смотреть все]
  • –11 +/
    Годно... Заменит питон в машинном обучении - вообще будет замечательно
     
     
  • 2.5, nazarpc, 13:05, 23/07/2017 [^] [ответить] [смотреть все] [показать ветку]
  • +6 +/
    С чего бы это? У языков совсем разные цели и характеристики.
     
  • 2.6, Аноним, 13:07, 23/07/2017 [^] [ответить] [смотреть все] [показать ветку]
  • +1 +/
    Но зачем Rust же не векторный язык программирования как тот же R, или уж тем бо... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.9, Аноним, 13:29, 23/07/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Раст претендует на функциональность По производительности, естественно, питон о... весь текст скрыт [показать]
     
     
  • 4.30, Аноним, 18:01, 24/07/2017 [^] [ответить] [смотреть все]  
  • +/
    Каргокультисты as is Забивать гвозди молотком, подметать молотком, резать хлеб ... весь текст скрыт [показать]
     
     
  • 5.34, KBAKEP, 02:32, 25/07/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    топором
     
  • 1.7, Аноним, 13:19, 23/07/2017 [ответить] [смотреть все]  
  • –3 +/
    Будто спайс Впрочем, пользователи Rust a это растаманы, так что есть что-то общ... весь текст скрыт [показать]
     
     
  • 2.11, Comdiv, 16:03, 23/07/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Там же четко видно, что оно быстрее только в 1-м из 10-и воплощённых алгоритмов ... весь текст скрыт [показать] [показать ветку]
     
  • 2.21, RazrFalcon, 11:42, 24/07/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    Когда кажется...
     
  • 1.12, Comdiv, 16:05, 23/07/2017 [ответить] [смотреть все]  
  • –1 +/
    > Реализована возможность прерывания цикла с возвратом определённого значения.
    >... использовать конструкции вида "let x = loop { break 7; };"

    Вот из-за таких вещей язык становиться всё больше неадекватным.

     
     
  • 2.13, Аноним, 16:45, 23/07/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    В расте же почти все - это выражения. Почему бы и нет
     
     
  • 3.14, Comdiv, 16:59, 23/07/2017 [^] [ответить] [смотреть все]  
  • +/
    Ну да, внедрив одну не самую прекрасную возможность из Algol68, они не могут ост... весь текст скрыт [показать]
     
     
  • 4.15, nobody, 20:08, 23/07/2017 [^] [ответить] [смотреть все]  
  • +/
    Ну какие тут конкретно проблемы кодирования В том же С это делается так au... весь текст скрыт [показать]
     
     
  • 5.18, Comdiv, 01:19, 24/07/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Это в 2-х словах не объяснить, потому что требует глубокого понимания и на прост... весь текст скрыт [показать]
     
     
  • 6.23, Аноним, 13:06, 24/07/2017 [^] [ответить] [смотреть все]  
  • +3 +/
    Это нововведение никак не нарушает структурность кода Это простой ретурн из выр... весь текст скрыт [показать]
     
     
  • 7.26, Comdiv, 13:55, 24/07/2017 [^] [ответить] [смотреть все]  
  • –1 +/
    Нарушает, так как струтктурность подразумевает три вида переходов последователь... весь текст скрыт [показать]
     
     
  • 8.31, Анонимо, 18:01, 24/07/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    Вы так говорите, как будто CODE int foo const char arg1, int arg2, arg5 ... весь текст скрыт [показать]
     
     
  • 9.33, Comdiv, 20:45, 24/07/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    CODE if NULL arg1 result INVALID_ARG1 else if arg2 42 result INV... весь текст скрыт [показать]
     
  • 5.28, Аноним, 15:06, 24/07/2017 [^] [ответить] [смотреть все]  
  • –3 +/
    проблемы начинаются когда внутрь цикла начинают пихать десять выходов в разных ... весь текст скрыт [показать]
     
  • 1.16, Дуплик, 22:49, 23/07/2017 [ответить] [смотреть все]  
  • –4 +/
    >По структуре язык Rust напоминает C++

    От чего ушли, к тому и пришли.

     
     
  • 2.17, Аноним, 23:28, 23/07/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    А они разве уходили?
     
     
  • 3.19, Аноним, 02:19, 24/07/2017 [^] [ответить] [смотреть все]  
  • –2 +/
    NIH же В каждую новость копипастят По структуре язык Rust напоминает C , но ... весь текст скрыт [показать]
     
  • 1.20, Аноним, 10:25, 24/07/2017 [ответить] [смотреть все]  
  • +1 +/
    странно, документация говорит что система микроядерная https doc redox-os org ... весь текст скрыт [показать]
     
  • 1.22, YetAnotherOnanym, 12:29, 24/07/2017 [ответить] [смотреть все]  
  • –1 +/
    > Для сжатия архивов вместо gzip по умолчанию теперь применяется сжатие с использованием xz

    И это запихнуто в сам язык? Не в либы, пристёгиваемые по выбору девелопера, а в само ядро? Ну охренеть...

     
     
  • 2.24, Аноним, 13:12, 24/07/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Нет, это не запихано ни в язык, ни в стандартную библиотеку Там просто начали п... весь текст скрыт [показать] [показать ветку]
     
  • 1.25, Аноним, 13:35, 24/07/2017 [ответить] [смотреть все]  
  • –1 +/
    Так завезут когда-то зависимые типы или как выше написали, будут и дальше копиро... весь текст скрыт [показать]
     
     
  • 2.27, Comdiv, 14:03, 24/07/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Можете раскрыть тему чуть подробней Опишите, пожалуйста, какие потребности это ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.32, Ordu, 20:12, 24/07/2017 [^] [ответить] [смотреть все]  
  • +2 +/
    Обсуждалось https github com rust-lang rfcs pull 1933 Это очень удобная фишка... весь текст скрыт [показать]
     
  • 1.29, Ordu, 17:27, 24/07/2017 [ответить] [смотреть все]  
  • +/
    Вау! Все перечисленные нововведения туфта, по сравнению с тем, что скорость компиляции реально выросла. Мне сложно сравнить скорость компиляции с gcc, clang или ещё кем-то (это надо делать не "на глаз", а организовать какое-то тестовое окружение и померять), но 1.19, по сравнению с тем кошмаром, который был в 1.18, просто летает.
    Мозилла обещала, Мозилла сделала.
     
     
  • 2.35, Аноним, 04:59, 25/07/2017 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Вы, случайно, не в курсе, она не обещала сделать браузер для людей ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.36, Ordu, 08:03, 25/07/2017 [^] [ответить] [смотреть все]  
  • +1 +/
    >> Мозилла обещала, Мозилла сделала.
    > Вы, случайно, не в курсе, она не обещала сделать браузер для людей?

    Обещала. Кстати, с выполнением этого обещание у неё тоже есть подвижки: https://metafluff.com/2017/07/21/i-am-a-tab-hoarder/

     
  • 3.37, Led, 01:34, 26/07/2017 [^] [ответить] [смотреть все]  
  • +/
    >> Мозилла обещала, Мозилла сделала.
    > Вы, случайно, не в курсе, она не обещала сделать браузер для людей?

    А тебе-то какая разница?

     

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


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor