LINUX.ORG.RU

Rust 1.25.0

 


3

8

Сегодня вышел Rust 1.25.0 (2018-03-29).

Rust это системный язык программирования, нацеленный на надёжность, скорость и параллельное выполнение.
Если вы имеете предыдущую версию Rust, установленную через rustup, для получения версии 1.25.0 достаточно ввести в терминале:

$ rustup update stable

Что нового в 1.25.0 stable

Синтаксис

Компилятор

Библиотека

Стабилизированные API

  • Location::column;
  • ptr::NonNull;

    Наиболее значимое событие — это std::ptr::NonNull<T>. Этот тип похож на *mut T, но является ненулевым (non-null) и ковариантным. Если вкратце, NonNull<T> гарантирует, что никогда не будет равен null, а это означает, что Option<NonNull<T>> имеет тот же размер, что и *mut T. Если вы создаете структуру данных с небезопасным кодом, NonNull<T> зачастую будет правильным выбором для вас.

    Следующие функции теперь могут быть использованы в константных выражениях, т.е. например, static MINUTE: Duration = Duration::from_secs(60);:

  • Duration::new;
  • Duration::from_secs;
  • Duration::from_millis;
  • Duration::from_micros;
  • Duration::from_nanos.

Cargo

Разное

Примечания по поводу совместимости

>>> Подробности

★★★★★

Проверено: jollheef ()
Ответ на: комментарий от makoven

Насколько я понимаю, что руст что го поддеживают официально две с половиной платформы, так что не всё так однозначно

https://forge.rust-lang.org/platform-support.html

Tier 2 используют много кто. Так что весь список Tier 2 тоже можно считать поддерживаемым.

mironov_ivan ★★★★★ ()
Ответ на: комментарий от makoven

Чем оно лучше наколеночного кодогенератора из проекта Go?

качеством генерируемого машинного кода которое у llvm выше. ну и учесть что у llvm всётаки 64 мб C++ кодовой базы.

anonymous ()
Ответ на: комментарий от mironov_ivan

Tier 2 platforms can be thought of as “guaranteed to build”.

Я правильно понимаю, что собраться-то оно собирётся, но вот заработает ли и правильно ли... Не знаю о каком использовании тут идёт речь.

av0r ()

Рустофилитики!

Этот очередной убийца C++ все так же требует unsafe в коде при реализации алгоритма быстрой сортировкм?

anonymous ()
Ответ на: Рустофилитики! от anonymous

А ты всё так же требуешь объяснять тебе раз за разом, для чего предназначен unsafe, и что в его блоках Rust отнюдь не превращается в полный аналог Си по возможностям прострелить себе ногу?

Virtuos86 ★★★★★ ()
Ответ на: комментарий от Virtuos86

А ты всё так же требуешь объяснять тебе раз за разом, для чего предназначен unsafe, и что в его блоках Rust отнюдь не превращается в полный аналог Си по возможностям прострелить себе ногу?

Все значительно проще: это подсказка для начинающих и всяких руководителей проектов, которые повелись на басни о его безопасности — реализация нехитрого алгоритма быстрой сортировки уже начинает представлять сложности для этого язычка.

anonymous ()
Ответ на: комментарий от one_more_hokum

хотелось бы ещё ввод/вывод всякий, математику

Конвертация из/в строку и математика там есть же.

А какой ты хочешь ввод-вывод в стандартной библиотеке для bare-metal устройств - для меня загадка.

И вообще, как оный Rust смотрит на Гарвардскую архитектуру?

Если ты про всякую специфику вроде named address spaces, то пока никак, вроде.

Esper ()
Ответ на: комментарий от anonymous

А ты всё так же требуешь объяснять тебе раз за разом, для чего предназначен unsafe, и что в его блоках Rust отнюдь не превращается в полный аналог Си по возможностям прострелить себе ногу?

Все значительно проще: это подсказка для начинающих и всяких руководителей проектов, которые повелись на басни о его безопасности — реализация нехитрого алгоритма быстрой сортировки уже начинает представлять сложности для этого язычка.

Наоборот, прекрасно отображает его искоробочные возможности по инкапсуляции небезопасного манипулирования памятью в специально выделяемых блоках кода.

Virtuos86 ★★★★★ ()
Ответ на: комментарий от Virtuos86

Рустофилитики!

Этот очередной убийца C++ все так же требует unsafe в коде при реализации алгоритма быстрой сортировки?

Наоборот, прекрасно отображает его искоробочные возможности по инкапсуляции небезопасного манипулирования памятью в специально выделяемых блоках кода.

Ты прекрасен в своей незамутненности. Быстрая сортировка — небезопасный алгоритм! Руководители проектов рвут волосы на... хм, неважно где, образуется очередь за знающими рустофилитиками.

anonymous ()
Ответ на: Рустофилитики! от anonymous

Re: Рустофилитики!

Зачем unsafe? qsort на Rust пишется так же, как и на любом другом языке:

fn qsort(v: &mut [i32]) {
    let len = v.len();
    if len >= 2 {
        let pivot_index = partition(v);
        qsort(&mut v[..pivot_index]);
        qsort(&mut v[pivot_index + 1..len]);
    }
}

fn partition(v: &mut [i32]) -> usize {
    let len = v.len();
    let pivot_index = len / 2;
 
    v.swap(pivot_index, len - 1);
 
    let mut store_index = 0;
    for i in 0..len - 1 {
        if v[i] <= v[len - 1] {
            v.swap(i, store_index);
            store_index += 1;
        }
    }
 
    v.swap(store_index, len - 1);
    store_index
}

Вот playground

anonymous ()
Ответ на: Рустофилитики! от anonymous

Быстрая сортировка — небезопасный алгоритм!

Я никогда не писал руками никакую сортировку. Хотя нет, один раз писал на Питоне, если не считать хелловорлды, естественно. Надеюсь, тебя не хватит «кондратий» от такого признания; призывать гнать меня из профессии тоже не имеет смысла — я и так не в ней. Далее, я подозреваю, что в большинстве программ никакой сортировки писать не нужно. Поэтому предположим, что у тебя общая претензия к существованию unsafe. Никто не идеален, и модель безопасного обращения с памятью, выбранная в Rust, не позволяет легко и красиво делать некоторые вещи, привычные байтоперекладывателям, из-за чего их бомбит. Разбираться в сути они не хотят, что видно и на твоем примере.
И хрен с вами, господа.

Virtuos86 ★★★★★ ()
Последнее исправление: Virtuos86 (всего исправлений: 2)
Ответ на: комментарий от Virtuos86

...модель безопасного обращения с памятью, выбранная в Rust, не позволяет легко и красиво делать...

Обо что я и толкую. Этот язычок не для промышленного применения.

anonymous ()
Ответ на: комментарий от IchBinFertig

Тогда тебе куда‐нибудь сюда: https://www.fstar-lang.org/.

У вас когнитивный диссонанс? Вы спрашиваете цитирую: «Ну и чем он лучше Idris?», вам ответили, что Rust «слегка» быстрее и вы кидаете ссылку на другой язычок, а как же Irdis?

Smetchik ()
Ответ на: комментарий от Virtuos86

Обо что я и толкую. Этот язычок не для промышленного применения.

Расскажи мужикам.

Ты там с горя не рехнулся? Какие мужики? Причем здесь мужики? Может лучше девицам, а?

anonymous ()
Ответ на: комментарий от Smetchik

У вас когнитивный диссонанс? Вы спрашиваете цитирую: «Ну и чем он лучше Idris?», вам ответили, что Rust «слегка» быстрее и вы кидаете ссылку на другой язычок, а как же Irdis?

Ты поехавший что ли?

Я говорил про мощность языка, ты вскукарекнул, что «медленно», я дал тебе языки с аналогичными возможностями, но более шустрые.

Но ты поехавший.

IchBinFertig ()
Ответ на: комментарий от tailgunner

Не высказывайся за всю промышленность. Говори за свой завод.

Гунечка, вот только твоего совета я забыл спросить, да. Еще расскажи, что мне нужно не делать, я очень внимательно тебя послушаю. Начинай, солнышко.

anonymous ()
Ответ на: комментарий от Smetchik

Прочитай внимательнее цепочку вопросов-ответов. Он спрашивал чем Clean лучше Idris, а ты не посмотрев кинулся отвечать, чем раст лучше. Причём по твоему ответу вовсе не очевидно, что ты имел в виду раст.

anonymous ()
Ответ на: комментарий от ncrmnt

Удобство минимальное начинается примерно тогда, когда начинаешь писать вместо:

AAA_REG &= ~(CONST4|CONST5); AAA_REG |= CONST1|CONSTn;

примерно так:

aaa.frxth().set_bit().ds().bits(0b111).ssoe().clear_bit()

Тоже не идеал конечно.

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от anonymous

Обо что я и толкую. Этот язычок не для промышленного применения.

Расскажи мужикам.

Ты там с горя не рехнулся? Какие мужики? Причем здесь мужики? Может лучше девицам, а?

Какое горе? Топики про Раст я пишу, чтобы посмеяться и весело провести время. А мужикам надо рассказать, потому что они-то и не знают, что Раст не пригоден для промышленного применения.

Virtuos86 ★★★★★ ()

Ненавистникам и обожателям Rust

Подскажите:

— Что конкретно обозначает термин «безопасность» в данном языке, безопасность написания кода или безопасность исполнения? Обозначает ли последнее, что собранную программу будет сложнее эксплуатировать (от слова exploit)?

— В чём преимущество перед тем же Го?

— Не является ли его синтаксис излишне «зашумлённым», что усложняет поддержку ПО, написанным на Раст?

FAT_EXORCIST ()