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)

Ответ на: комментарий от red75prim

С++, обрезанным по самые исключения

В NASA смартпойнтеры не осилили?

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

Проект маленький.

хер угадал.

Чтобы большой плюсовый проект, да без memory corruption...

руки выпрямляй. Чаще всего ошибки логические возникают, которые в 90% случаев находятся по логам.

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

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

руки выпрямляй.

Я для чего в том посте Common Vulnerabilities and Exposures приводил? По факту, крупные плюсовые проекты - решето. Зато можно с гордостью сказать: у них руки кривые, а у меня всё работает.

До первой проверки статическим анализатором.

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

дадада. очередные окуенные истории от очередного говнокодера, кивающего в сторону более «авторитетных» говнокодеров

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

Да? Я доку один раз и по диагонали пробежал по векторам). Возможно, она уже устарела.

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

дадада. очередные окуенные истории от очередного говнокодера, кивающего в сторону более «авторитетных» говнокодеров

Факты наличия memory corruption (от которой Rust гарантирует защиту) в крупных проектах, написанных на С++ (Microsoft Edge был переписан практически с 0, надо полагать, с использованием смартпоинтеров), я привёл.

С другой стороны - cool story от анонимуса.

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

chunks_mut слайсы делает?

Нарезает один мутабельный слайс на несколько мутабельных заданной длинны, последний из остатков.

ceiling_division добавил потому, что если просто разделить длину на колво ядер, то может получиться так:

1025/4 = 256, chunks: 256, 256, 256, 256, 1 (будет 5 тредов, последнему достанется кусок длинной в 1)

а c ceiling_division будет

(1025+4-1)/4 = 257, chunks: 257, 257, 257, 254

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

Спасибо. Про ceiling_division я понял. Пойду за раст почитаю. На такая уж и страшная весчь оказывается.

anonymous
()

Пока не запилят человеческие интерфейсы вместо УГ трейдов - не буду ничего на нем писать.
>Сделайте мне ООП во все поля, мазафаки!(с)

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

В общем тот тест оказалось проще переписать, чем допиливать, вот результат:

time ./fasta 25000000 > /dev/null

real    0m1.512s
user    0m5.800s
sys     0m0.008s

Сам код тут:https://github.com/shkolnick-kun/bugurtos/wiki/#hipters смотреть второй вариант, переписанный.

Код не оптимизировал.

То есть тезис о том, что письки надо мерить одинаковыми линейками подтвержден.

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

Да, хотел именно объединить. extend работает, спасибо.

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

now = datetime.now()
...
...
tdelta = datetime.now() - now

Загуглил это https://doc.rust-lang.org/time/time/index.html, но с си не знаком, а без подробных примеров пока что тяжко.

Каст red75prim, Virtuos86.

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

Извините, но я не из раст-сообщества. Кастаните DarkEld3r лучше.

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

В каком месте?

$ gcc -O1 -std=c99 -fopenmp fasta.c -o fasta
$ gcc -O1 -std=c99 -fopenmp fasta2.c -o fasta2
$ rustc -O fasta3.rs
$ ./fasta 25000000 > log
$ ./fasta2 25000000 > log2
$ ./fasta3 25000000 > log3
$ diff -q log log2
Файлы log и log2 различаются
$ diff -q log log3
$ 
anonymous
()
Ответ на: комментарий от anonymous

Пишу на Java, нравится Rust.
Осталось дождаться годной книжки, нормального автодополнения и возможно некоторых косметических улучшений в синтаксисе.
Была бы работа — уже бы перешел

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

доступ к llvm IR

Чего? Разве они не своё представление делают? В том числе, чтобы меньше к LLVM привязываться.

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

Смотри третий вариант. С любом случае, на скорость это существенно не влияет.

Зато теперь можно отправлять твой вариант. Вот результаты у меня.

$ gcc -O3 -march=bdver2 -std=c99 -fopenmp fasta.c -o fasta
$ gcc -O3 -march=bdver2 -std=c99 -fopenmp fasta-new.c -o fasta-new
$ rustc -C target-cpu=bdver2 -C opt-level=3 fasta3.rs -o fasta-rs
$ time ./fasta $N > /dev/null

real    0m1.422s
user    0m4.168s
sys     0m0.009s
$ time ./fasta-new $N > /dev/null

real    0m1.149s
user    0m4.387s
sys     0m0.005s
$ time ./fasta-rs $N > /dev/null

real    0m1.460s
user    0m5.261s
sys     0m0.020s
$ gcc --version
gcc (Gentoo 4.9.3 p1.5, pie-0.6.4) 4.9.3
$ rustc --version
rustc 1.9.0-nightly (e91f889ed 2016-03-03)
anonymous
()
Ответ на: комментарий от anonymous

Боюсь, что автор не примет, в конце мэйна говнокод:

generate_And_Wrap_Pseudorandom_DNA_Sequence(homo_Sapien_Nucleotides_Information,sizeof(homo_Sapien_Nucleotides_Information)/sizeof(nucleotide_info), 5*n);
    fputs("\n", stdout);//Вот где собака порылась!

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

Пока не запилят человеческие интерфейсы вместо УГ трейдов

И что тебе в трейтах не хватает по сравнению с «человеческими интерфейсами»?

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

как получить дельту времени.

Мне кажется, что вот это более удобное. Примеры выглядят простыми:

let now = Local::now();
println!("{}", now);

let tdelta = Local::now() - now;
println!("{}", tdelta);

Но если ты производительность меряешь, то есть смысл посмотреть в сторону специально предназначенного для этого инструмента. Правда пока «нестабильного»...

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

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

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

Факты наличия memory corruption

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

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

До первой проверки статическим анализатором.

http://www.viva64.com/ru/b/0378/ Проводили уже. давай начинай кукарекать про то, что псв студия это говно, вообще не честно, и что если ты и десяток другой школоты криворукие ипланы, то все остальные такие же.

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

В общем, нашел я косяк, и поправил. Антош, будь няшей, проверь пожалуйста «Вариант 4 исправленный». С меня как обычно.

Всё отлично. Прирост около 35-40%. Осталось только отправить.

How do I contribute my programs? 10–step

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

ЗдОрово. Но выпрямить всем руки не получится, а язык исправить можно.

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

Может Amazon-щики уже прогоняли через СА свой код.

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

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

...млекопитающие не защищены от рака.

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

Софистика же это, ну. Если у кого-то рак, это не значит, что он у всех вокруг. безотносительно защиты/незащиты.

К томуж от логических факапов тебя ничто не спасет. и точно так же можно потратить день на поиск

let result = if some_condition( ) { a() } else { b() } 


если там должно быть наоборот. Особенно если этот факап вылезет в другом месте и через рандомное время исполнения. и точно так же ты получишь дыру, потому что a(), например,  делает некую работу для защиты клиента, а b() нет. А еще четность ошибок и тд.
anonymous
()
Ответ на: комментарий от anonymous

чо за хрень с разметкой произошла

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

Не гриб, и грипп, грибы не по моей части. А баг там был всего один.

И пофикшен он был со второй попытки (первой попыткой был костыль, ибо принцип наименьшего действия в комплексе с ленью и раздолбайством).

Всегда ваш, Ко-лобок.

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

Когда в ПРОДАКШОН пишу, качество кода выше, чем это накаленное поделие.

Опыт писания БуруРТОС пригождается. Привык уже детально прорабатывать алгоритмы, протоколы, структуры данных, и тесты на каждый чих писать, с прохождением всех ветвлений...

И то иногда случается...

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

Как-то так не возникает проблем с памятью и синхронизацией задач...

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

К томуж от логических факапов тебя ничто не спасет.

Естественно. Но это не значит, что нет смысла пытаться защититься от остальных проблем.

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

А что особенно смешно, так это что найденные ошибки в google test, а не самом SDK, надо им сказать на всякий ;-)

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