LINUX.ORG.RU

Релиз языка программирования Rust 1.39

 ,


1

8

Rust — мультипарадигмальный компилируемый язык программирования общего назначения, спонсируемый Mozilla, сочетающий парадигмы функционального и процедурного программирования с объектной системой, основанной на типажах, и с управлением памятью через понятие «владения».

Что нового в версии 1.39:

  • стабилизирован новый синтаксис асинхронного программирования, основанный на функции «async», блоке async move { … } и операторе «.await»;
  • разрешено указание атрибутов при определении параметров функций, замыканий и указателей на функции. Поддерживаются атрибуты условной компиляции (cfg, cfg_attr), управляющие диагностикой через lint и вспомогательные атрибуты вызова макросов;
  • стабилизирован «#feature(bind_by_move_pattern_guards)», который позволяет использовать переменные с типом привязки «by-move» в шаблонах;
  • предупреждения о проблемах при проверке заимствования переменных c использованием NLL переведены в разряд фатальных ошибок;
  • в пакетный менеджер cargo добавлена возможность использования расширения «.toml» для файлов конфигурации.

С полным списком изменений можно ознакомиться на сайте разработчика.

>>> Источник

★★★★★

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

Rust уже победил. На нём столько helloworld’ов написано, что в ближайшие 100 лет рекорд не будет бит. А если ещё лабораторные посчитать…

perl5_guy ★★★★★
()

Видел тред на одной странице. С чистым «Показать удалённые сообщения».

А по теме. Зачем отдельный синтаксис для асинхронщины? Ладно ещё языки, прибитые гвоздями к своей ВМ, но ЯП, который позиционируется для системного программирования, зачем? На С/С++, предполагаю, решали задачи асинхронщины ещё когда я не родился, и вроде как нету требований о новом синтаксисе для асинхронщины.

Дальше, вакансии. Напомните причины малого количества вакансий. Возраст ЯП сопоставим с ГОшкой. Более того, вроде бы, каждая первая вакансия на раст содержит «обязателен» или хотя бы «желателен» «опыт С/С++». С учётом количества растофанатов на одну вакансию это «желательно» превращается в «обязательно» для трудоустройства. Ладно если бы был питон - его можно быстро выучить. Но для работы на С++ нужно выучить С++, С. Для работы на расте нужно выучить С, С++ (что само по себе весьма не быстро) и наконец сам раст. Это аргумент для бОльшей оплаты, но не аргумент для «зато писать на современном ЯП(+ ещё гора субъективных плюсов)».

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

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

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

ну да, одни плюсы ) кроме сложности языка

jtad
()

Взлетит ли тема про новомодныц раст? Писать ли что видел на 11 комментариях?

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

спасибо, выглядит интересно. Завтра займусь

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

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

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

где такие уроки. Если на pornohub то я пас, максимум что могут научить как пользоватся вибратором

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

Ну расскажи нам про асинхронщину в цпп. Остальной бред оствлю без комментариев.

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

Зачем отдельный синтаксис для асинхронщины?

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

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

Требование с++ оттого что переписывают легаси на раст, собственно с с++. Так что количество вакансий увеличится сотвременем.

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

На С/С++, предполагаю, решали задачи асинхронщины ещё когда я не родился

Ага, если бы.

Возраст ЯП сопоставим с ГОшкой.

Нет.

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

Ухаха! Я думал, ты пошутил. Вот это номер! Нормальные уроки, уже много нового узнал! Таких учителей надо на руках носить.

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

На С/С++, предполагаю, решали задачи асинхронщины ещё когда я не родился

Этот вопрос встал остро ровно 20 лет назад в виде 10k problem. Всеобщей проблемой, если судить по времени появления asio (чуть раньше), торнадо и ноды, это стало около лет 10 назад. А сегодня, когда только ленивый не имеет встроенную поддержку асинхрона, и сервисы пишут асинхронными by default, странно такой поддержки не иметь. Всё правильно сделали.

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

Как же Линус люто плюсы ненавидел…

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

Мои комментарии воспринимаются странно если читать по диагонали.

Между «заниматься асинхронщиной» и «запилить специальный синтаксис для асинхронщины» - большая пропасть. Специальный СИНТАКСИС для асинхронщины для js, c#, python - норм, они не лоулевел, нужно было поправить рантайм для другой модели выполнения кода. Но для лоулевел языка типа си и раста, раз он претендует на замену си, зачем - машинный код, а не ограниченная ВМ!

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

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

После macOS 10.14, даже винда верх стабильности. Так что бежать некуда.

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

Так это подсказка компилятору, правильно же регистрант сказал. Я в вопросе не разбирался, но судя я по тому, что мне мельком попадалось, async-await лапша должна в state machine разворачиваться. Заявляют zero-cost, что со стандартным подходом невозможно.

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

Заявляют zero-cost, что со стандартным подходом невозможно. На подобных тебе раст-пропаганда и рассчитана. В шарпе такое же «zero-cost», да и везде оно может быть zero-cost, даже в жабаскрипте. Генераторам ничего не мешает быть зерокост. Да и асинкам.

Никакого стандартного подхода нет. В крестах это запили 3-4 года назад. Начали пилить почти 10 лет назад.

Опять убогие тебе впаривает ворованное за инновации. Хотя даже украсть нормально эти бездарности не смогли.

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

Никакого стандартного подхода нет. В крестах это запили 3-4 года назад. Начали пилить почти 10 лет назад.

Дай ссылку и ключевой слово для плюсов. std::async про другое же.

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

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

или ключевое слово для поиска

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

Все в этой теме и так в курсе, а речь про шарп. Ты немного не уловил суть дискуссии.

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

В шарпе они есть тысячи лет + не такие мусорные как в говнорасте. Реализованы «зерокостом», т.е. из функции создаётся стейт-машина.

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

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

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

Чего? Каким костылями? К тому же тысячи лет это было в в виде ts, да и вообще к чему это?

По поводу костылей - чини методичку. Корутины со стеком были всегда. Юзаются они ещё проще - никаких мусорных кейвордов. Костыли - это кейворды.

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

Много - понятия не имею. Как минимум о говнорасте тогда никто даже не знал. Корутины в текущих крестах из шарпа. Начали их пилить в начале 10. Значит ещё тогда они были в шарпе.

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

Что стековая корутина, что duff’s-device — и есть костыли. Впрочем нет смысла спорить, ты за explicit code топишь, makes sense.

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

Что стековая корутина

Наоборот. Очень сложно сделать управляемую не-стековую корутину. В какой-то мере в С++ они такие, но не полностью. Опять же - синтаксический мусор никуда не делся.

А далее всё это потребуется шедулить и ты нагородишь уже почти целые стековые корутины.

Единственный профит от не-стековых - это производительность и потенциал статический. Но если тебе нужна производительность - корутины идут нахрен, сроду. В любом виде.

ты за explicit code топишь

Наоборот. Хотя неясно что ты здесь понимаешь под code.

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

В гошечке как раз нет async-await синтаксиса, там асинхрон неявный и вообще CSP.

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

Зачем отдельный синтаксис для асинхронщины?

Это костыль для компилятора. Или интерпретатора, или что там у языка есть. Для человека или семантики языка он не нужен. Он нужен только компилятору, точнее его разработчикам — им так проще писать компилятор.

Да и что такое «асинхронщина»? Каждый называет этим словом что-то своё. Для кого-то это yield в питоне, чтобы выпрыгнуть из кода, а потом вернуться с сохранением всех локальных переменных. Для кого-то это вызов connect(), за время которого другой «поток» однопоточного языка может что-то сделать. Для кого-то это возможность выполнить кусок кода в потоке GUI, что нужно почти всем тулкитам (кроме, наверное, единственного исключения: python-tk).

На С/С++, предполагаю, решали задачи асинхронщины ещё когда я не родился

Задачи-то решали. Просто код писали не в «асинхронном стиле». Синтаксис нужен только тем, кому очень хочется вот именно в таком стиле писать код.

Да, можно без отдельного синтаксиса: Техника написания аналога await/async для C++. И это работает даже без дописывания того костыльного слова «async» в заголовок каждой функции.

Но это сложно, надо думать, а думать это — редкость. За десяток лет существования этой статьи мне этот метод больше нигде не попадался, дажа в туториалах. Он и для опытного плюсовика не очевиден, не говоря уже о начинающих. А асинхронщину требуют именно начинающие, которые о ней узнали в другом языке, и тут оказалось, что в С++ так не пишется.

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

Есть, конечно. Начиная с С++11 пошли попытки его добавить. Да, оно бесполезно, да, можно без него. Но проще добавить этот отдельный синтаксис, чем каждый раз объяснять, что писать можно без него, а отлаживать без него даже удобнее.

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

Он нужен только компилятору, точнее его разработчикам — им так проще писать компилятор.

Нет.

Задачи-то решали. Просто код писали не в «асинхронном стиле». Синтаксис нужен только тем, кому очень хочется вот именно в таком стиле писать код.

Зачем тебе асинхронный код? У тебя есть корутины, нативные. Ты можешь писать как в го, да и везде.

Да, можно без отдельного синтаксиса:

Дристня какая-то. Попытка пожрать говна.

За десяток лет существования этой статьи мне этот метод больше нигде не попадался

Мало смотрел. Хотя такое метод говна, конечно, крайне сомнительный. Но куда более лучшие методы есть.

https://www.boost.org/doc/libs/1_71_0/doc/html/boost_asio/example/cpp11/spawn/echo_server.cpp - им тыща лет asio, да и не только.

Единственная проблема тут - нужно передавать контекст явно. Его можно передавать неявно без проблем. Просто в asio унификация.

Засунь этот yield в глобалы и код не будет отличатся от обычного. Можешь сунуть полем в классе - я так и делаю. Но глобалом куда проще.

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

И C++ тебе позволяет писать асинхронщину как синхронщину. Без всей херни.

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

Нет, там вполне понятный был мотиватор. Оно без стека, оно генераторы. Это вообще совершенно другое - более общая фича.

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