LINUX.ORG.RU

Rust 1.34

 ,


2

11
  • cargo теперь умеет в сторонние репозитории

  • оператор ? теперь может использоваться в доктестах

  • стабилизированы трейты TryFrom и TryInto

  • стабилизированы типы AtomicU8AtomicU64 и AtomicI8AtomicI64 в дополнение к имевшимся ранее Atomic{Bool,Ptr,USize,ISize}

  • стабилизированы типы NonZeroI8NonZeroI128 и NonZeroISize в дополнение к имевшимся ранее беззнаковым аналогам

https://blog.rust-lang.org/2019/04/11/Rust-1.34.0.html

★★★★★

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

в обоих случаях компилятор уберет проверку на границы при наличии assert

Но вопрос в том, что сгенерирует сам ассерт. В случае axiom - ничего. Конечно, гарантии теперь на программисте.

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

Можно взять и сделать PR с линтом для таких тривиальных случаев. Но никто не озаботился, как никто и не мешает сделать этот PR самому.

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

Azul это детская игрушка с тьмой архитектурных проблем. Я бы не стал ожидать что он в ближайшее время станет пригодным к использованию.

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

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

С билдером все понятно, но это привязка к pattern’нам, мне например не заходи, как и куче людей. Т.к. вместо простого run("it", another_value=1) придется писать либо так: run("it", None, None, 1) либо городить из всего этого объект: RunBuilder::new().set_value("it").set_another_value(1) что бы можно было пускать. Но ведь куда проще писать run("it", another_value=1) если на установку значений никакой логики не планировалось, не так ли?

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

Есть тонкая грань между неявщиной и удобством. Я думаю что в данном случае попытка навязать паттерн билдер сделала разработку еще более неудобной. Хотя на самом деле для меня основная головная боль не это, а то что rls хватается за все только что дабавленные либы и пытается собрать их. На Win$ вообще систему вешает сборка sdl, которая вполне себе неожиданно происходит (угу, после попытки автодополнить что либо связанное с ним). Так что язык очень молодой, много косяков еще, для серьезной работы не взял бы. Слишком много проблем.

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

Так что язык очень молодой

Потому, что автодополнение в какой-то левой проге не работает? Логика / 0.

В C++ нормальное автодополнение только пару лет как завезли, тоже молодой язык?

В IDEA намного лучше с автодоплением и прочими фишками. VS Code и rls - это ерунда.

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

Ну да, IDEA хороша будет, когда на моем проекте перестанет жрать память (в начале года тестировал опять, так и осталось: 12Gb сам редактор + мне контейнеры с Java, не умещается в 16 гигах). А для одного языка его как-то брать не особо хочется. Да и не нужно, в принципе само рано или поздно до нужного уровня поддержки доползет (если). Я ничего не имею против него, но если вокруг языка нет нормальной, удобной инфраструктуры, то и время на него тратить нет смысла. Так же шляпа что и со Racket, все мне в нем нравиться, библиотеки, но популярность низкая и библиотек толком нет, все самому писать…

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

Ну так это ваши проблемы, а не раста. Хотите нормальную IDE - придётся использовать IDEA. Ничего не поделаешь.

Ну и про 12ГБ вы загнули. 3ГБ макс.

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

В C++ нормальное автодополнение только пару лет как завезли, тоже молодой язык?

Врёшь, балабол. Шланг завезли почти с его выката. Когда выкатили раст? 10лет назад. Где аналогичный libclang функционал? Нету его. libclang написано с нуля и не использует никакие ранние доработки, а значит можно считать, что в С++ автодополнение появилось сразу с выходом основанном на llvm компиляторе.

А до этого был kdevelop, который умел в С++ не хуже(а в чём-то лучше) libclang. Ты слишком палишься, маздайщик-балабол.

В IDEA намного лучше с автодоплением и прочими фишками. VS Code и rls - это ерунда.

С каких пор msvs стал компилятором и стал мочь в С++? Единственное что там могло - это плагины от jb.

Сама же idea - дристня немогущая ни во что. Их поддержка С++ в районе помойки - где-то на уровне ниже kdevelop"а старого, а это уже сколько лет прошло.

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

В rust пытаются избавится от неявного поведения.

Полная чушь. Т.е. возможность в любой момент переопределить переменную - это «явно», а вот всё остальное неявно?

Нет, я тебе подскажу в чём проблема. Все неявные штуки - сложные штуки. Кем являются адепты раста и какого уровня там компилятор - все знают. Это примитивная хрень, которая никогда не сможет ни во что сложное. А оправдания будут всегда.

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

Они все еще никак не запилят дефолтные аргументы функций...

Видимо, ты полагаешь, что это пустяковая задача, которую редиски не хотят решать из вредности?

Про инфраструктуру разработки я молчу.

Ладно.

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

Да, правда зачем тебе это убожество? Сейчас на рынке переизбыток пистон-джуниор-стундентоты, которых некуда девать. Поэтому большим проектам выгодно тянуть всё эту дристню, т.к. эта студентота ни во что не может. Её нужно учить чему-то, какому-нибудь башу и прочему.

Поэтому раньше надо было искать бородачей, которые могут в автотулзы, в баш, в ещё что-то. Тоже самое касательно того же cmake - ему за партой не учат. А тут бам - пистон и уже тонны студентоты бегут к тебе заниматься билдингом. Для нанимателя тоже есть профит. Раньше эту стундентоту некуда было девать, т.к. она ничего не может. Приходилось всякую муру делать параллельно, либо давать им возможность пинать говно.

А билдинг и скриптуха - это то, куда можно отправить студентоту. На совсем, либо до того момента - как она чему-то научится.

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

зачем тебе это убожество?

Мне оно не надо, просто видимо им скоро будут собираться многие проекты, да заинтересовал этот KDevelop... Ты его нахваливаешь.

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

Ну kdevelop это единственное, что адекватно умеет в semantic highlight. Без этого ide не ide, а блокнот убогий. А подсветка говно, а не подсветка. Правда многие пытаются оправдаться, т.к. юзают говно и привыкли к говну, но что поделать. Ещё кое как в неё умеет idea, но там всё достаточно убого.

Аналогично со всем остальным. Это единственная ide, которая может нормально в libclang(свой парсер они уже давно выкинули, и на самом деле много потеряли, но и много приобрели. Т.к. кресты уже давно не парсятся).

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

Даже с lex, yacc работает! Правда чому то нельзя выбрать c++17 в стандарте языка, наверное старая версия.

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

Модули это убожество, как и любые другие модули. Единственные нормальные модули - это инклюды, пусть и чуть импрувнутые. Всё остальное - мусор. В любом случае как только в этот «язык» завезут нормальный асист(никогда) - они будут эмулировать семантику инклюдов.

Я правда не понимаю - зачем выделять модули/пакетный менеджер именно для раста - т.к. это рядовая и посредственная имплементация. Оно везде такое, хотя нет - везде оно куда удобнее.

Если говорить о каком-то примере импрувнутых инклюдов - это dart. Там по-сути те же инклюды - только с возможностью импортировать их в неймспейс.

И по-сути это то, что можно бесспорно добавить в С++. Можно подумать над невидимыми из вне неймспейсами, но это очень спорно.

По поводу пакетного менеджера - я не особо понимаю смысл в нём. Если у нас есть инклюды и только инклюды - никакие системы сборки ненужны. Нужно только некий конфигуратор окружения. Для дистрибуции исходников есть git и подмодули.

Я вообще против любой конфигурации на недоязычках. Конфигурация С++-проекта должна быть на С++. Потому что недоязычок не обладает необходимым функционалом. Что из этого выходит - можно увидеть в том же расте и прочих помойках.

Вначале мы делаем один недоязычок - он получается говном. Мы делаем другом недоязчок, который менее говно и который генерит код на первом недоязычке. И так до бесконечности.

Т.к. раст не язык, а помойка - там даже с отдельными недоязычками не стали заморачиваться(на самом деле о нём вообще нет смысла рассуждеать, т.к. на нём написана одна перепаста и хелворды, а не проекты живущие тысячи лет и собирающиеся на тысячах платформ) - там просто пихают конфигурацию в комменты(привет пхп и прочее), в атрибуты(или как там это называется).

Проблема тут одна. Конфигуратор на конфигураторе без какой-либо статики, валидации, самодокументации и прочего.

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

Да, нужно ставить адекватную версию и kdevelop и clang. По поводу выбора стандарта - там можно задать кастомный. Туда можно писать флаги компилятора - он их подцепит. -std=c++2a и прочее(-fcoroutines-ts). Можно измерить то - какое окружение использовать(compiler for path). Шланговское или гццешное. Там будут разные stdlib и прочее.

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

Это всё, что ты можешь ответить? В целом - типичный адепт раста.

Дело в том, что я вижу в целом типичного Царя, который невменяем.

Обычный бот с 2/3 шаблонными фразами.

Ты научился брать простые дроби от текста? Силён).

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

Дело в том, что я вижу в целом типичного Царя, который невменяем.

Очень удобно обвинять тех, кому сказать нечего - невменяемыми. Обоснуешь свои убогие потуги? Не волнуйся, мамка знает, что на самом деле ты не перданул в лужу. Ты не балабол. Это просто плохой Царь.

Ты научился брать простые дроби от текста? Силён).

Кстати, типичный представитель мира пхп. Пациент целиком и полностью не может в контекст. Хотя в контекст не может и раст. Вы нашли друг друга.

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

Владимир

Вам представляется некая архитектура языка /«самая лучшая», но
которую вы и сами толком не представляете/, а остальное все - все знают вашу оценку.

Это мощная болезнь, которой и слово не подберешь - легион болезней.

PS: Не утверждаю, что все ваши утверждения плохи /как по мне они похожи на обрывки фраз из кошмарного сна/, но
в целом все подается в весьма негативной форме /а диалоги с оппонентами - сплошное хамство/.
Эта БОЛЕЗНЬ многогранна и одна из ее черт - высокоумие /кажущееся временами чем то полезным/.

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

Не видел развернутого аргумента. Лишь замечу, что в хорошо спроектированных языках нет и не будет такой фичи. А для других пишут специальные гайды, чтобы не накосячить случайно с неявными аргументами.

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

Это как с перегрузкой функций. Либо ее нет, и это правильно, либо имеем развесистые гайды и кучу нелепых ошибок при отладке. Единственное, где могу простить перегрузку функций, так это в языке Ада, потому что там ее возвели до абсолюта, и без нее просто никак.

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

Я понял, ок. Напиши когда ответ будет не «потому что».

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

Если что я ничего не имею против этого языка, просто говорю что все еще не может взлететь из-за своих ограничений и default function arguments не самая его большая проблема. Я думаю он найдет свою нишу, но будет сродни лиспам. Неплохой тест новой модели управления памятью.

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

Еще раз. Отсутствие default function arguments - это достоинство языка. Их наличие же скорее говорит об ошибке проектирования. Кто занимался отладкой нетривиальных и запутанных приложений на тех же Си++ - тот меня поймет.

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

не так часто это и требуется

сейчас можно делать так:

run("arg1", 2, RunParams {
  optional_value: 1,
  another_value: 1.5,
  ..RunParams::default()
})

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

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

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

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

Кто занимался отладкой нетривиальных и запутанных приложений на тех же Си++ - тот меня поймет.

Не поймет.

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

Какие гады? В нормальных языках это есть. И никаких гайдов не надо.

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

Это как с перегрузкой функций. Либо ее нет, и это правильно, либо имеем развесистые гайды и кучу нелепых ошибок при отладке

Где ты такие гайды видел? Java, C#, Kotlin и пр. имеют перегрузку функций. И никто не умер. Это тупо удобно. В Haskell достаточно этого через тайпклассы, да. Но у нас язык для повседневных задач.

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

Отсутствие default function arguments - это достоинство языка

Аминь.

Ох уж эти адепты.

А потом, когда фичу таки добавят в язык, ты будешь доказывать, что аргументы по умолчанию - это круто. Видели уже такое много раз от адептов разных языков - от крестов до го.

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

Кто занимался отладкой нетривиальных и запутанных приложений на тех же Си++ - тот меня поймет.

Опять какие-то мифы про кресты пошли. Страшилки от растоманов, которые C++ видели только в интернета.

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

Т.к. раст не язык, а помойка - там даже с отдельными недоязычками не стали заморачиваться(на самом деле о нём вообще нет смысла рассуждеать, т.к. на нём написана одна перепаста и хелворды, а не проекты живущие тысячи лет и собирающиеся на тысячах платформ) - там просто пихают конфигурацию в комменты(привет пхп и прочее), в атрибуты(или как там это называется).

Ути-пути, какая пусечка: понанёс развесистой клюквы и тут-же «о нём вообще нет смысла рассуждеать», и вишенкой на торте «спердобейся»: «на нём написана одна перепаста и хелворды, а не проекты живущие тысячи лет и собирающиеся на тысячах платформ)».

Какая мимимишная няшечка, какой розовощёкий засранчик: ну давай сюда свои тысячелетние нетленки. Или только сопливые пузырики можешь пускать? Так не кричи так много - опять обосрёшься... Хотя памперс ЛОР всё выдержит...

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

ну давай сюда свои тысячелетние нетленки.

Это же Царь. Он же ни одной работающей программы пока не написал. Какие нетленки?

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

В Haskell достаточно этого через тайпклассы, да. Но у нас язык для повседневных задач.

Ваще-то в Раст тоже есть классы типов... Только их назвали иначе как трейты. Довольно близкое соответствие. Даже ограничения на классы типов в полиморфных функциях перенесли в Раст, что очень полезно для практики.

Но встречал, что некоторые путают эти трейты с трейтами из языков ООП. Бывает.

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

A portion of the community (and of the core team) sees one or more of the following features as important

A portion

может и не дойдет

но имхо Vec::new(capacity=10) > Vec::with_capacity(10) > Vec::new(10)

может, в очередном edition-e и появится

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