Команда разработчиков Rust рада сообщить о выпуске новой версии Rust, 1.32.0. Rust — это язык программирования, который дает возможность каждому создавать надежное и эффективное программное обеспечение.Если у вас установлена предыдущая версия Rust с помощью rustup, то для обновления Rust до версии 1.32.0 вам достаточно выполнить:$ rustup update stableЕсли у вас еще не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта. С подробными примечаниями к выпуску Rust 1.32.0 можно ознакомиться на GitHub.https://www.rust-lang.org/tools/installhttps://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1320-2019-01-17Что вошло в стабильную версию 1.32.0Rust 1.32.0 приобрел несколько упрощающих жизнь улучшений, сменил аллокатор памяти по умолчанию и сделал больше функций константными. Читайте об этих изменениях ниже или смотрите подробнее в примечаниях к выпуску.Макрос dbgНачнем с упрощающего жизнь улучшения. Вы используете "отладку принтом"? Если да, и вы хотите распечатать некоторое значение в процессе работы над кодом, вы вынуждены делать так:let x = 5;println!("{:?}", x);// или даже такprintln!("{:#?}", x);Это не самое большое препятствие, замедляющее разработку, но это требует чересчур много усилий для простого отладочного вывода значения x. Кроме того, тут не учитывается контекст. Если у вас есть несколько таких println!-ов, то становится сложно определить, что к чему относится в выводе, пока вы сами не добавите информацию о контексте к каждому вызову, что требует еще больше работы.Для этих целей в Rust 1.32.0 мы добавили новый макрос dbg!:fn main() { let x = 5; dbg!(x);}После запуска этой программы, вы увидите:[src/main.rs:4] x = 5Вместе с именем переменной и ее значением будет выведено название файла и номер строки, где был совершен вызов dbg!.Кроме того, println! печатает в стандартный поток вывода, поэтому лучше использовать eprintln! для печати в стандартный поток ошибок. Макрос dbg! выводит в stderr, и это правильно.Это работает даже в сложных случаях. Рассмотрим пример реализации факториала:fn factorial(n: u32) -> u32 { if n <= 1 { n } else { n factorial(n - 1) }}Для того, чтобы его отладить, мы можем использовать eprintln!:fn factorial(n: u32) -> u32 { eprintln!("n: {}", n); if n <= 1 { eprintln!("n <= 1"); n } else { let n = n factorial(n - 1); eprintln!("n: {}", n); n }}Мы хотим выводить n на каждой итерации и видеть контекст каждой из веток. Для factorial(4) будет выведено:n: 4n: 3n: 2n: 1n <= 1n: 2n: 6n: 24Это приемлемо, но не особенно хорошо. Возможно, мы могли бы поработать над улучшением вывода информации о контексте, чтобы сделать вывод понятнее. Но тогда, вместо отладки своего кода, мы будем заниматься улучшением кода отладки.Рассмотрим тот же пример с использованием dbg!:fn factorial(n: u32) -> u32 { if dbg!(n <= 1) { dbg!(1) } else { dbg!(n factorial(n - 1)) }}Мы просто обернули макросом каждое из выражений, которое мы хотим вывести. В результате мы получим:[src/main.rs:3] n <= 1 = false[src/main.rs:3] n <= 1 = false[src/main.rs:3] n <= 1 = false[src/main.rs:3] n <= 1 = true[src/main.rs:4] 1 = 1[src/main.rs:5] n factorial(n - 1) = 2[src/main.rs:5] n factorial(n - 1) = 6[src/main.rs:5] n factorial(n - 1) = 24[src/main.rs:11] factorial(4) = 24Так как макрос dbg! возвращает само отлаживаемое значение, в отличии от eprintln!, который возвращает (), то нам не нужно делать никаких изменений в структуре нашего кода. Дополнительно мы получаем гораздо более полезный вывод.Мы уделили много внимания такому маленькому макросу, так как мы надеемся, что он упростит ваш процесс отладки. Конечно, мы также продолжаем работу над поддержкой gdb и Ко.По умолчанию убран jemallocДавным-давно у Rust был большой рантайм, подобный Erlang'овому. Для него был выбран jemalloc вместо системного аллокатора, потому что он часто был производительнее. Постепенно мы все больше и больше избавлялись от рантайма и в конце-концов он почти весь был удален, но jemalloc остался. У нас не было способа выбирать пользовательский аллокатор, и поэтому мы не могли окончательно убрать jemalloc, чтобы не навредить тем, кто нуждался в нем.Кроме того, утверждение, что jemalloc был всегда аллокатором по умолчанию, относилось преимущественно к UNIX-миру, так как он был по умолчанию только на некоторых платформах. В частности цель MSVC на Windows уже давно использует системный аллокатор.Наконец, хотя jemalloc обычно имеет хорошую производительность, это не всегда так. К тому же он добавляет около 300 килобайт к каждому исполняемому файлу. Также у нас накопилось множество других проблем с jemalloc. И вообще, это странно, что системный язык по умолчанию не использует системный аллокатор.По этим причинам, как только Rust 1.28 предоставил способ выбирать глобальный аллокатор, мы начали планировать переход на системный аллокатор по умолчанию и предоставление jemalloc в качестве внешней библиотеки. В Rust 1.32 мы наконец завершили эту работу, и теперь по умолчанию ваша программа будет использовать системный аллокатор.Если вы хотите продолжать использовать jemalloc, используйте библиотеку jemallocator. Для этого в Cargo.toml укажите:jemallocator = "0.1.8"И в корневом файле вашего проекта:#[global_allocator]static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;Вот и все! Если вам не нужен jemalloc, вас больше не заставляют его использовать, но если он вам нужен, то проблема решается несколькими строчками кода.Заключительные улучшения системы модулейВ последних двух выпусках мы говорили о нескольких улучшениях системы модулей. В 1.32.0 и редакцию 2018 мы добавили последнее изменение. Оно называется "единообразные пути" ("uniform paths") и разрешает работать с путями импорта также, как с остальными путями, что до этого работало некорректно. Например:enum Color { Red, Green, Blue }use Color::;Этот код ранее не компилировался, поскольку пути в use должны были начинаться с super, self или crate. Теперь, благодаря поддержке компилятором единообразных путей, этот код будет работать и сделает то, что вы ожидаете: импорт вариантов определенного выше перечисления Color.Этим изменением завершается наша ревизия системы модулей. Мы надеемся, что вы получите удовольствие от работы с упрощенной системой!Улучшения макросовВ Rust 1.32.0 выпущено несколько улучшений макросов. Во-первых, был добавлен новый спецификатор фрагмента literal:macro_rules! m { ($lt:literal) => {};}fn main() { m!("some string literal");}Фрагмент literal сопоставляется литералам любого типа: строковым, числовым и символьным.В редакции 2018 в макросе macro_rules можно использовать также и ?:macro_rules! bar { ($(a)?) => {}}Фрагменту с ? будет сопоставлено ноль или одно вхождение, подобно тому, как фрагменту с уже сопоставляется "ноль или более" вхождений, а с + — "одно или более" вхождений.Стабилизация стандартной библиотекиМакрос dbg!, о котором мы уже рассказали выше, стал важным добавлением к стандартной библиотеке. Помимо этого, 19 функций были сделаны константными и все числовые примитивные типы получили функции преобразования в байтовый массив и обратно с указанным порядком байтов. Всего шесть функций с именами to_<endian>_bytes и from_<endian>_bytes, где <endian> это:ne — нативный порядок (native endianness)le — порядок от младшего к старшему (little endian)be — порядок от старшего к младшему (big endian)Подробности смотрите в примечаниях к выпуску.Улучшения в CargoCargo получил псевдоним cargo c для команды cargo check, и теперь разрешает использовать имена пользователей в URL репозиториев.Подробности смотрите в примечаниях к выпуску.
>>4460184 (OP)>Rust — это язык программирования, который дает возможность каждому создавать надежное и эффективное программное обеспечение>>4460184 (OP)>Вы используете "отладку принтом">>4460184 (OP)>создавать надежное и эффективное программное>>4460184 (OP)>принтом
>>4460184 (OP)Ну и нахуй нужна эта поделка? Хочешь выябываться перед одноклассниками - есть одноглазый питон, хочешь код - есть плюсы и шарподжава, хочешь аутировать - есть пхп и my little admin.
>>4460244>хочешь код - есть плюсы Сабж типа дешевле плюсов при сравнимой производительности.>и шарподжаваТуу нтюрпрайз. Слишком зависишь от настроений корпораций.
>> Rust — это язык программирования, который дает возможность каждому создавать надежное и эффективное программное обеспечение.Очередной недоязык...
>>4460244В плюсах легко проебатся с памятью и указателями, там совершить ошибку которую компилятор может пропустить.Раст же безопастный язык.
пока макаки учат код аи вовсю учится кодить лет через 10 жду слезных постов от нынешней ати элитке что работы нет ибо аи кодит в 100 раз быстрее и лучше
>>4460288Нет ничего сложного в том, чтобы научить ИИ писать код по ТЗ. Осталось научить макак писать ТЗ.
>>4460285>В плюсах легко проебатся с памятью и указателямиДля них в с++ уже лет 10 есть смартпоинтеры, в бусте уже лет 20, а они все проебываются с памятью и указателями, прости их б-жэ.
>>4460300Ты тупой или слепой? Писать код по ТЗ может любой. Создание ТЗ - сложная, до сих пор не формализованная задача, макаки никуда не денутся, равно как юристы никуда не пропали с появлением экспертных систем.
>>4460223Ну давай, расскажи, как ты ставишь бряки на какую-нибудь хуйню, которая происходит дохуя раз в секунду и ломается один раз на дохуя.
>>4460324А что не так - все как сейчас. Просто появится язык более высокого уровня и программисты на языке ИИ
>>4460349манек в чем проблема объяснить аи что я например хочу что бы что то происходило в зависимости от чего то и к какому результату он должен стремиться
>>4460184 (OP)>Это свершилось!!!>научились в примитивный дебаг>научились в выбор аллокатораХуясе вы там на переднем крае технологий. Вот поэтому кресты ещё долго будут жить.
>>4460372>в чем проблема объяснить аи что я например хочу что бы что то происходило в зависимости от чего то и к какому результату он должен стремиться В том, что это действительно сложно сделать рядовому человеку.
>>4460372>в чем проблема объяснить аи что я например хочу что бы что то происходило в зависимости от чего то и к какому результату он должен стремиться В том, что это действительно сложно сделать рядовому человеку. И ему нужная вспомогательная прослойка в виде формализующей хотелки макаки.
>>4460382лол чтосложно объяснить что хочу что бы напримертурбина переходила на другую ступень при резком нажатии на педаль?
>>4460387я могу и еще более формально поставить задачунапример максимальная экономия топливапринять все мерыгде тут макака?
>>4460395>>4460408Да, ебически сложно, потому что эту маняфразу надо перевести в "если динамическая характеристика нажатия педали превысит пороговое значение, то сделать такое-то, такие-то проверки и переслать сигнал управляющему устройству турбиной в соответствии с документацией такой-то". И даже это пороговое значение кто-то должен определить в формате диалога.
>>4460395>турбина переходила на другую ступень при резком нажатии на педаль?Какая турбина?Из какого материала сделана турбина?Каких параметров и размеров педаль?И таких вопросов наберется тысяча если небольше.
>>4460436>аи без доступа к сетиДля этого нужен АИ общего назначения. Такого нет и в ближайшей перспективе не ожидается.
>>4460442>>4460436>>4460408>>4460372Хотел написать большую простыню о том, почему ты не прав, потом понял что ты слишком туп или слишком толст. Нахуй пиздуй со своими маняфантазиями, ты понятия не имеешь как работает ИИ.
>>4460184 (OP)Говно из жопы для хипстеров и сойбоев. Очередной маняязык, про который через пару лет никто не вспомнит
>>4460184 (OP)>Начнем с упрощающего жизнь улучшения. Вы используете "отладку принтом"? Вот и все что надо знать про этот говноязык. Раст = Пидераст.
>>4460496какую науку маня аи вытеснет людей из множества сфербудут и аи менты и аи бухгалтерасудьба макак наиболее печальна
>>4460509Это вряд ли. На нем лису активно переписывают, так что жить будет. Правда, кроме лисы вряд ли он куда-то еще доберется - хипстеры не осилят, а те, кто мог бы его осилить, не видят в нем никаких преимуществ перед старым добрым С++
>>4460352АИ ничего не понимает. Это тупая решалка-подставлялка по результатам перемножения коэффициентов.
>>4460525>аи вытеснет людей из множества сферТем более что ИИ запретит людям редактировать и изменять ИИ- скайнет всё более
>>4460426У турбины ещё могуть быть запрещённые состояния (привет Саяно-Шушенской ГЭС), так что нужен будет граф переходов состояний турбины, а она аналоговая, поэтому граф - неформализуемый
>>4460575Вот забавно, PHP-макак больше десяти лет обоссывали и пиздили плюс не брали в приличные компании если этот говноязык в сиви был - и наконец с седьмой версии они начали кое-как становиться людьми.И тут на тебе - новые дебилы повылезали, с улучшенной отладкой принтом как главным (!!!) сука упоминанием фич новой версии.
>>4460184 (OP)>создавать надежное и эффективное программное обеспечение>RustЧто-то уровня целителя Гробового или хирурга с фамилией Коновалов.
>>4460352>аи скоро будет понимать тебя даже по мимикеЛюди сами себя не понимают, а ты тут говоришь, что аи поймет
>>4460525АИ до сих пор не научился решать ничего кроме формализованных задач. И предпосылок к этому на сегодня никаких.
>>4460436При искусственном интеллекте все будет заебись. Он наступит скоро, надо только подождать. И сразу все будет бесплатно и в кайф, наверное даже умирать не нужно будет.
>>4460184 (OP)>println!Нихуя не пынял, нахуя они команду с восклицательным знаком сделали, что за дрuст?
>>4460660>нахуя они команду с восклицательным знаком сделали, что за дрuст? Это отличительная черта макроса
>>4460569>GOD TIER language>гад тир лангвейдж>ЯЗЫК-УГАДАЙ_С_ТРЕХ_РАЗ_КАК_ПРОИЗНЕСТИ_ЭТУ_БУКВУ_В_ЭТОМ_СЛОВЕ>GOD TIER
>>4460673То есть у них вывод в сосноль - это макрос? Они там, что ебнутые наглухо? Сразу сделать нормальную команду нельзя было? Или у них там шизянка как в сиблядии с выносом всего в библиотеки?
>>4460293>Осталось научить макак писать ТЗ.Сука, это ад. После того как меня уволили, мудачки с дипломами из топ вузиков тут же поменяли сайт. А вдруг ты подашь на нас в суд из-за дизайна/кода?!?! это одна из фирм моей тяночки куда она меня устроила тим лидом. 99% кода - купленный или бесплатный. На дизайн похуй.В итоге они написали ТЗ захотели автоматики. Сайт был на блоггере т.к. доссили конкуренты. А покупать защиту не хотелось. и заказали у буржуев сайт. Буржуй же продал им настроенный ломаный шаблон ВП. Вместе с вирусами.Через неделю у них украли всю БД. Клиентам сказали что это не они обосрались, а бывший тим лид.
>>4460184 (OP)Нафиг ваша ржавчина не уперлась, все можно написать на няшной сишечке и божественной дишечке.https://www.youtube.com/watch?v=5BVM3C9BUJ8
>>4460558>хипстеры не осилят, а те, кто мог бы его осилить, не видят в нем никаких преимуществ перед старым добрым С++На самом деле дофига софта сейчас пишется на расте: https://github.com/rust-unofficial/awesome-rustДа что там про раст говорить, даже на голанге сейчас состоявшиеся продукты встречаются.
>>4460802>На самом деле дофига софта сейчас пишется на растеТы сам-то туда смотрел? Там 9/10 списка - биндинги к имеющимся библиотекам. Остальное все уровня "cat clone with wings", "client-server GNU Parallel alternative" (охуеть, клиент-серверная альтернатива скрипту на перле), "implementation of ненужно (WIP)", "ненужно clone (may work someday)" и прочее. Люди просто балуются с новым (и относительно интересным, надо сказать) языком в простеньких наколенных проектах, но каких-то особо серьезных/выдающихся софтин там нет. Оно понятно, что все языки так начинали, но у ржи просто нет ничего, что могло бы его выделить - ни грамотной и удобной архитектуры языка, ни офигенной скорости программ, ни поддержки крупными игроками рынка, ни простоты написания программ - ни-ху-я. Тот же D в стопиццот раз круче по всем вышеперечисленным параметрам, но так и не взлетел. У ржи это точно не выйдет, она так и останется "театром одного актера".
>>4460802Потому что на гитхаб огромное число студентиков выкладывает хелловоролды на всех известных им языках?
>>4461035Тащемта, новые плюсы в этом плане весьма и весьма улучшились. То, что многие разработчики до сих пор относятся к C++ как к "C с классами" и соответственно пишут на чем-то уровня C++98, избегая новых плюшек - совсем другая проблема.
>>4460575А теперь поясни, почему я не должен дебажить принтом, если так получится быстрее. Просто потому что так НИПРАВИЛЬНА, эта для быдлакодиров, пацаны во дворе засмеют?
>>4461229>Просто потому что так НИПРАВИЛЬНА, эта для быдлакодиров, пацаны во дворе засмеют? Именно так, а еще потому что ты думаешь что это быстрее, сэкономив 10 секунд на установке брейка, но потратив пол дня потом на бесконечный перезапуск, вписывая в свой принт все новые и новые локалы.
>>4461079> проблемаВовсе нет. Если программист умеет следить за памятью без всяких новомодных shared_ptr - это хорошо.
>>4461246>ты думаешь что это быстрее, сэкономив 10 секунд на написание принта, но потратив пол дня потом на бесконечный перезапуск, вписывая в свой кондишонал бряк все новые и новые условия
>>4461290Если умеет. Нынешние - не умеют, увы.>>4461246Ты долбоеб? Отладчик - штука, бесспорно, полезная, но нужна она бывает в реальности настолько редко, что я даже не помню, когда в последний раз его запускал. Отладочного вывода хватает в 99% случаев. Не говорю уж про ситуации, когда отладчика вообще нет.>>4461287Все что угодно лучше божественного C#, но в данном случае работает аксиома Эскобара.
Как корёжит старпёров-крестоблядков в этом итт тредике. Скоро, очень скоро, ваше умение разгребать сороколетнее нагромождение костылей станет никому не нужно.
>>4461306> Все что угодно лучше божественного C#, но в данном случае работает аксиома Эскобара.это хуйня хуже, т.к. на ней вакансий нет
>>4461306> Отладчик - штука, бесспорно, полезная, но нужна она бывает в реальности настолько редко, что я даже не помню, когда в последний раз его запускалтак ты попробуй разработать что-то сложнее лаба2 и может поймешь необходимость отладчика
>>4461323Мне 21 и я крестоблядок. Хули ты мне сделаешь?shared_ptr не использую, нахуй они нужны ёпту бля
>>4461357Платят 85к, я доволен.Вот сейчас мне дали разработку на 3 дня, 2 из которых я буду пинать хуи. Красота.
>>4461336Поясни как сейчас реально?За отсутствие всей этой хуйни в коде (пиздатый_ptr, контейнерблять<нахуй, впизду>, шаблон<шаблона<изшаблона<шаблоноблядский>>>>) разраба не обоссывают всей командой и не увольняют нахуй?
>>4461333>так ты попробуй разработать что-то сложнее лаба2 и может поймешь необходимость отладчикаВ одного тащу проект в 1.3М строк кода на C/ASM, мой код работает в ядре Linux и GCC. Все еще тебя не понимаю.
>>4460184 (OP)Растопараша не нужна, единственное весомое преимущество языка было реализовано в крестах в виде move семантики. Все остальное небольшие перделки, ценность которых полностью нивелируются околонулевой распространенностью и поддержкой языка
>>4461306>Отладчик - штука, бесспорно, полезная, но нужна она бывает в реальности настолько редко, что я даже не помню, когда в последний раз его запускал.С точки зрения долбоеба хеллоуворда - безусловно
>>4462761Тупой крестодебич не догоняет, что его параша говно не потому, что в ней чего-то нет, а потому что там навалена гора несовместимых между собой говн отовсюду.
>>4463879Мне всегда не нравились кресты, поэтому по совету двачефорсеров я некоторое время пописал на расте. После него кресты показались мне языком богов(офкоз новые стандарты 11, 14, 17. Раст какое то поделие продвинутых школьников, даже на objective c проще, производительнее и приятнее писать