LINUX.ORG.RU

Rust 1.7

 


1

6

Команда Rust рада объявить о выпуске новой стабильной версии Rust 1.7. Rust является системным языком программирования, сосредоточенным на безопасности, быстроте и многопоточности.

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

В версии 1.7 были стабилизированы около 40 библиотечных функций и методов. Одним из стабилизированных API является поддержка задаваемых пользователем алгоритмов хеширования в типе HashMap<K, V> стандартной библиотеки. Теперь можно достигнуть значительного быстродействия за счёт возможности смены и использования более быстрого алгоритма хеширования.

Другие изменения:

  • <[T]>::clone_from_slice(), эффективный путь копирования данных из одного среза в другой срез.
  • Методы для удобства работы с Ipv4Addr и Ipv6Addr, такие как is_loopback(), который возвращает true или false, в зависимости от того, является ли адрес петлевым адресом, согласно RFC 6890.
  • Улучшения в CString, используемом в FFI.

Детальный RELEASE NOTES: https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-170-2016-03...

>>> Анонс в блоге Rust

★★★★★

Проверено: tailgunner ()
Последнее исправление: cetjs2 (всего исправлений: 3)

Меня мучает вопрос, откуда растовцы будут брать последователей? Джавист и Питонщик туда не пойдёт.

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

Касательно бенчмарка n-body, то на моей машине с nightly rust он показывает такой же результат, что и C++ g++/clang.

anonymous
()

кто-нибудь реально применяет сие поделие для чего-нибудь сложнее консольных утилит?

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

Кстати...

То же заинтересовал этот вопрос.

Смотрю в послдених версиях бряков нет.

Это значит что перестали ломать совместимость или просто решили на этом внимание не акцентировать?

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

И важное замечание, вариант на С++ написан на интринсиках, в то время как rust нет.

anonymous
()

Rust это скорее такая вещь в себе, как философия Канта: красивая конструкция за которой нет содержания.

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

А меня мучает вопрос: почему такая разница во времени выполнения между кодом на С и С++?

Неужели кто-то специально попортил крестовый код, чтобы показать организовать перемогу?

shkolnick-kun ★★★★★
()
Ответ на: Кстати... от x86_64

Сорее всего нет: Они там счас стабилизируют понемногу ядрёную библиотеку, и видимо будут стабилизировать стандартную.

А вообще, у приличных людей не принято ломать обратную совместимость после релиза v1.0.0...

shkolnick-kun ★★★★★
()
Ответ на: Кстати... от x86_64

Смотрю в послдених версиях бряков нет.

Есть, просто их политкорректно переименовали в «Compatibility Notes».

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

Любой релиз ломает обратную совместимость, потому что содержит в себе изменения, т.е. можно придумать код, который сломается. Минорный релиз не должен ломать нормально написанный код.

Legioner ★★★★★
()
Ответ на: комментарий от shkolnick-kun

А вообще, у приличных людей не принято ломать обратную совместимость после релиза v1.0.0...

А они, вроде, и не ломают. Почитай, там фиксы изначально неправильного поведения.

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

А вообще, у приличных людей не принято ломать обратную совместимость после релиза v1.0.0...

У них есть штука, называется Crater, она бегает по crates.io и компилирует пакеты с разными (stable, beta) версиями компилятора, и если что-то не так, то сообщает об этом создателей этого пакета.

anonymous
()

Приятно, что Руст написан сам на себе, вполне показатель зрелости, хотя и не окончательной.

Hertz ★★★★★
()
Ответ на: комментарий от shkolnick-kun

А меня мучает вопрос: почему такая разница во времени выполнения между кодом на С и С++?

Если так уж мучает - почитай, потом нам расскажешь.

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

Всё там же. Тыкаешь на название языка под любым тестом - тебе вываливают код на этом языке для этого теста. Web 2.0, ёпта.

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

А что тебя в расте не устраивает, можешь сформулировать? Если бы они убрали эту секцию, как незначащую, ты был бы доволен? Ещё раз повторяю, абсолютно любое изменение в библиотеке потенциально ломает чей-то код. Тут два варианта — либо эти изменения не делать, либо ломать код. Важно, чтобы не ломался нормальный код, а не любой код принципе. Возьми какой-нибудь Servo и посмотри, сколько там всего ломается при смене минорной версии.

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

Ну тыкнул:

1. в тесте на Си код выполняется в одном потоке
2. время выполнения 1.90с
3. в Расте в нескольких
4. время выполнения 1.52с.
5. ??????
6. Раст выигрывает у Си по производительности!!!

Такое-то двоемыслие!

И да, на крестах все сделано через жопу шаблоны, время выполнения в разы выше Cи и Раста, кто там говорил, что шаблоны не тормозят???

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

шаблоны только на время компиляции влияют. их не существует рантайм

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

а вот binary tree там реализовано как говно, да.

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

А меня мучает вопрос: почему такая разница во времени выполнения между кодом на С и С++?

Возможно, что-то связанное с созданием объектов/медленным IO.

Deleted
()
Последнее исправление: AlarinPerfect (всего исправлений: 1)
Ответ на: комментарий от shkolnick-kun

number_Of_Threads_To_Use to three threads

То есть в случае еспользования OMP, есть всего три потока!

А в случае Rust

let num_threads: u16 = num_cpus::get() as u16;

Бенчмарки такие бенчмарки.

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

красивая конструкция за которой нет содержания

Что там красивого? Наркоманская семантика, вырвиглазный синтаксис. Хуже языка не видел из современных.

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

А выполнялось это все на

64-bit Ubuntu quad core

То есть в Расте было на 1 поток больше!

shkolnick-kun ★★★★★
()
Ответ на: комментарий от Legioner

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

Твои слова имели бы смысл, если бы они не выкидывали депрекейтед в минорщине. А они это делали.

Ну и просто меняли поведение. Не исправляли что-то, а меняли.

Это вызывает отторжение. Я в свое время после первого взгляда на java при выходе второй версии на нее смотреть лет на 10 перестал. Правда дальше они исправились.

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

выкидывали депрекейтед в минорщине

Который объявили таковым до выхода 1.0

меняли поведение

Пруф.

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

Итого:

1. В Расте использованы обычные потоки и обычные примитивы синхронизации, в Си использована OpenMP а не ptreads...
2. В Расте используется на 1 поток больше...
3. Время выполнения Rust 1.52, Си 1.90...
4. Пересчитываем на 1 поток: Rust 6.08, Си 5.7...

Вот такой вот «честный» бенчмарк.

И да, в крестах все более чем достойно получается, с учетом того, что выполняется в 1 поток.

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

выкидывали депрекейтед в минорщине

Который объявили таковым до выхода 1.0

И что? минорщина не место для таких действий. Было бы 2.0 - выкидывай.

Пруф.

Ты ссылку то читал? https://github.com/rust-lang/rust/blob/stable/RELEASES.md#breaking-changes

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

а еще карго! за карго только памятник можно создателям поставить.

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

Стильно, молодежно, тьфу. Хипстеров в печь

Твоё место - возле дома на лавочке, обсуждать с бабушками, какие нынче поганые нравы.

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

Было бы 2.0 - выкидывай

Забыли выкинуть вовремя, а 2.0 - не скоро.

Ты ссылку то читал?

Ты мне предлагаешь угадать, какой конкретно пункт ты считаешь изменением в поведении? По мне, там везде багфиксы с незначительными поломками.

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

Теперь по стилю написания кода:

В Си, ИМХО, намеренно использованы длинные имена:

for(intnative_t current_Number_Of_Characters_To_Create=
	  number_Of_Characters_To_Create;
	  current_Number_Of_Characters_To_Create>0;){/*...*/}
в то время как в Rust используются короткие имена:
for i in 0..to_gen {/*...*/}

Сделано это для того, чтобы:

1. Читатель запутался в коде на Си и не стал его внимтельно изучать
2. Показать неофитам, какие вырвиглазные эти легаси-языки, и какой няшный на их фоне Rust...

То есть код этих тестов писали скорее пиарщики-евангелисты, а не программисты, и цель у них была, не бенчмаркинг, а сугубо ПЕАР.

В данном случае вспомниаются слова Александреску об основных преимуществах Раста.

С «бенчмарками» все.

Я кончил.

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

В данном случае вспомниаются слова Александреску об основных преимуществах Раста.

Чо за слова? этот академический червь в Ди залез и Ди скатился, он и в раст хочет залезть?

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

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

А раст больше для олдфагов, взрощенных на C/C++

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.