LINUX.ORG.RU

Rust 1.25.0

 


3

9

Сегодня вышел 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 ()
Последнее исправление: Deleted (всего исправлений: 3)
Ответ на: комментарий от RazrFalcon

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

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

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

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

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

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

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

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

anonymous
()

Спроектировали помойку похлеще C++

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

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

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

Deleted
()

Горшочек не вари! Ну сколько можно колбасить синтаксис? Уже не смешно.

anonymous
()

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

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

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

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

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

Это всё любовно и прельстиво, но хотелось бы ещё ввод/вывод всякий, математику, там... И вообще, как оный Rust смотрит на Гарвардскую архитектуру?

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

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

Безразлично.

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

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

Ну так напиши библиотек каких там тебе не хватает

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

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

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

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

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

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

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

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

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

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

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

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

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

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

А у тебя программы состоят из одной операции записи в регистр?

tailgunner ★★★★★
()

Ток недавно вспоминал про него. Как у него обстоят дела с task based programming? В частности, есть там что-то подобное Intel TBB (интересует task_group,flow graph, speculative locking)?

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

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

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

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

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

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

Зачем 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
()

от двоеточий в коде у меня экран треснул

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что люди не изобретают, лишь бы на Haskell да Idris не писать.

+1.

Odalist ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
() автор топика
Ответ на: комментарий от Virtuos86

Топики про Раст я пишу, чтобы посмеяться и весело провести время.

Все правильно делаешь: не для чего иного он непригоден.

anonymous
()

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

Подскажите:

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

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

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

FAT_EXORCIST
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.