LINUX.ORG.RU

Rust 1.49

 


2

6

Опубликован релиз 1.49 языка программирования Rust.

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

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

  • Уровень 3. Система поддерживается компилятором, но не предоставляются готовые сборки компилятора и не прогоняются тесты.

  • Уровень 2. Предоставляются готовые сборки компилятора, но не прогоняются тесты

  • Уровень 1. Предоставляются готовые сборки компилятора и проходят все тесты.

Список платформ и уровней поддержки: https://doc.rust-lang.org/stable/rustc/platform-support.html

Новое в релизе 1.49

  • Поддержка 64-bit ARM Linux переведена на уровень 1 (первая система, отличная от систем на x86, получившая поддержку уровня 1)

  • Поддержка 64-bit ARM macOS переведена на уровень 2.

  • Поддержка 64-bit ARM Windows переведена на уровень 2.

  • Добавлена поддержка MIPS32r2 на уровне 3. (используется для микроконтроллеров PIC32)

  • Встроенный тестовый фреймворк теперь выводит консольный вывод, сделанный в другом потоке.

  • Перенесены из Nightly в Stable три функции стандартной библиотеки:

  • Две функции теперь помечены const (доступны на этапе компиляции):

  • Повышены требования к минимальной версии LLVM, теперь это LLVM9 (было LLVM8)

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: atsym (всего исправлений: 8)

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

сразу в дурку увозить?

Санитары и в роддоме есть.

Сурово.

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

в смысле, тех кто ошибки в кодировании делает, сразу в дурку увозить? Сурово.

Не, Маску на опыты. Вживлять нейролинк и прошивать валгинд прямо в мозг :)

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

да г-но с метатипом ваш руст. васяны пишут «операционные системы» в которых в менеджере памяти течёт память, а потом берут и всё переписывают потому что баги в русте не исправляются, это write-only г-цо типа перла.

идите программировать поучитесь перед тем как про метатипы кукарекать. ну там про сишечку что-нибудь почитайте например.

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

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

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

нафига такой ерундой страдать …

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

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

быстрее занял рынок

Где рынок?

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

да г-но с метатипом ваш руст. васяны пишут «операционные системы» в которых в менеджере памяти течёт память, а потом берут и всё переписывают потому что баги в русте не исправляются, это write-only г-цо типа перла.

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

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

идите программировать поучитесь перед тем как про метатипы кукарекать. ну там про сишечку что-нибудь почитайте например.

Идите поучать свои голоса в голове, ваше мнение будет очень важно для меня, только когда:

  1. Мы будем хорошо знакомы.
  2. Вы научитесь адекватно выражаться, а не испражняться через рот в комментах.
  3. Вы покажете мне свой высококачественный код, который докажет вашу квалификацию. 100500 способов передёрнуть вприсядку таковым кодом не является.
anonymous-angler ★☆
()
Ответ на: комментарий от mkam

Протоколы (QUIC) и форматы (WEBP) от охреневшего жирноГугля - НЕ нужны.

Видели мы как там относятся к продвинутым пользователям. Их ненавидят и стремятся связать по рукам и пихнуть в песочницу к хомякам.

«tighten up security» (c) корпорастный новояз

Пусть сначала кнопку «View image», фильтр по разрешениям и порно в Image search вернут. И уберут завал Pinterest’a с первых страниц. А уж потом мы очень и очень хорошо подумаем, сделать ли одолжение — потестировать ли собой их велосипеды.

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

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

Только в силу привычки (синдром утенка), потому что или начинали обучение программированию с С-подобных языков или еще с чего-нибудь похуже, типа бейсика и с радостью запрыгивали в поезд java, C, C++, C#, js, php etc - потому что «это промышленные языки» и «там есть работа». Вот и все причины.

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

Монструозный синтаксис

Так то у Раста всё хуже по синтаксису.

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

поощряемые плохие практики

Какие например?

Метапрограммирование на шаблонах плюсов - это адок (хотя сам инструмент достаточно мощный) - поэтому в проектах много копипаста, большие системы подвержены тому, что часть кода будет написана на С, С с классами, в другой части будут использоваться умные указатели, где-то функциональный стиль (на сколько он возможен в С++), еще где-то многоуровневые шаблоны, внутри которых может быть некорректное обращение к памяти - отладить это все анриал. И еще момент - в разных стилях нет *ничего* плохого, плохо то, что у реализации в основном торчат уши исторических причин (С с классами), препроцессор и шаблоны - от того, что в языке нет нормальных макросов, фп-стиль смотится чужеродно. И все это сдобрено перегруженным синтаксисом - во многом по историческим причинам, но не только. Сама архитектура любого алголо-подобного языка не подразумевает других подходов в принципе. При этом я не говорю, что на плюсах писать нельзя. Можно. Но как для низкоуровневого языка С++ слишком монструозен, как для высокоуровневого кругом протекают абстракции и отсутствует вменяемое метапрограммирование (от попытки отладить чьи-то шаблоны, да и свои тоже, можно серьезно психически приболеть).

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

сможешь, но на друпале быстрей и проще.

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

C++ компилируется довольно быстро. По крайней мере точно быстрее чем:
Rust, Kotlin, Haskell, Scala

Не могу сравнить, у меня нет опыта больших проектов на этих языках. Но интуитивно кажется, что C# должен компилироваться быстрее. Меня не устраивает _абсолютная_ скорость компиляции плюсов (хотя сейчас уже плевать, я на них не пишу), а не относительно раста и скалы. И вообще имхо нормальный язык этот тот, где есть инкрементальная разработка / repl (и если речь идет о компиляторе - то инкрементальная компиляция). В плюсах ты можешь внести небольшие изменения в хидере и придется перекомпилировать полпроекта на 2 млн строк. Для меня во всем этом происходит что-то совсем неправильное.

alienclaster ★★★
()

Компилятор Rust поддерживает широкий спектр систем, но команда Rust не может

интересно - существует единственный компилятор языка, права на код остаются за контрибуторами. Через пару лет разочарованные начнут требовать свой код взад - куда будут ломиться все остальные подсевшие на сомнительный язычок ?

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

Написал пост и не стал публиковать, но раз пошла «такая пьянка» …

Далее не критика Rust.

Любой язык программирования создается для возможности записи алгоритмов.
Поэтому конечно язык должен «из коробки» предоставлять возможность создания абстракций и использование на основании них созданных объектов.

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

"Вольности" приводят к тому, что программы становятся трудно понимаемыми.  

Вот взять тот же C++ к примеру.
У него сотни «нельзя».

Зачем программисту знать о сотнях нельзя?  

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

О многом не сказал, да изложил «не ахти», но суть надеюсь ясна …

Владимир

anonymous
()

И зачем этот хайп вокруг странной пародии на D? Какие реальные преимущества я получу при переходе с «маргинального D» на «немаргинальный божественный Rust»?

Rust — попытка получить максимально безопасный код, задав максимально строгие правила на этапе проектирования. Для драйверов и крайне ответственного кода может и подходит (хотя, например, Ada ничуть не хуже). Писать на Rust всё — плохая идея. Зубодробительный синтаксис в хакерском стиле стоит слишком дорого (трудоёмкость).

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

Вообще у D для меня много преимуществ: шаблоны, подстановка кода, интроспекция (из чего следует мощная стандартная библиотека, которая тоже неотъемлемая часть языка), синт. сахар. В двух словах, конечно, не получится всё рассказать.

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

С D опасно связываться взбредет завтра в голову Вальтеру опять выпустить несоместимую версию 3.0 и все приплыли.

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

Всё бы ничего, но D c GC, а без него там большинство стандартных библиотек не работает, а сторонние так и подавно.

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

С D опасно связываться взбредет завтра в голову Вальтеру опять выпустить несоместимую версию 3.0 и все приплыли.

Так можно сказать о любом языке программирования …

Владимир 123456

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

Волтер хотел включить по умолчанию атрибут @safe, что сломало бы весь код, где есть low-level операции, а указателями можно было бы пользоваться с помощью unsafe блоков, как в Rust. Хорошо, что демократия порешала, и это предложение отклонили.

Думаю, сейчас D стабильнее, чем когда-либо, и каких-то сильных перекосов не будет.

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

Всё бы ничего, но D c GC

У Nim, Vala и Swift тоже GC(ARC тот же GC, только ещё медленнее), а их тут уже предлагали как убийц С++ и конкурентов Rust…

Rust 1.49 (комментарий)

Rust 1.49 (комментарий)

Rust 1.49 (комментарий)

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

Так можно сказать о любом языке программирования …

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

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

Можно погуглить «C++ совместимы ли стандарты».

https://www.osp.ru/os/2020/02/13055493 Комитет по стандартам C++ готов отказаться от обратной совместимости

Владимир

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

Так можно сказать о любом языке программирования …

Можно, но Вальтер уже один раз это проделал, чем очень сильно сбил популярность языка. А такое даже для очень популярных языков (например для питона) не проходит бесследно, а для таких как D вовсе почти смертельно.

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

Многочасовая компиляция и десятки гигабайт используемой памяти при линковке? Спасибо, не надо.

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

Невыразительное говно для идиотов? Спасибо, не надо. Си с классами – та причина, по которой люди выбирают раст.

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

Нет. Он на голову выше.

Обоснуй.

Cравни как выглядит указатель на функцию в сишечке и расте, или как массив таких функций.

Ну покажи. Я могу предположить, но неужели ты ретранслируешь тезисы из статейки на хабре?

Боязнь синтаксиса раста исходит от нотаций лайфтаймов

В том числе, и не боязнь, а смех.

но такой текст содержит дополнительную информацию

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

Во-вторых у тебя появляется ещё одна проблема. Ведь в С++-тексте содержится в разы больше информации, чем в раст-тексте, но почему-то это не учитывается при сравнении. Разъясни это противоречие.

понятно что он будет страшнее.

Нет, непонятно.

Для сравнения, посмотри как выглядят объявления с C++ core guidelines.

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

Почему в твоих попытках так много противоречий? Расскажи об этом.

nullable указатели.

У указателей нет никаких nullable - это идиома. К тому же они такие же и в расте.

Это вообще бред

Это свойство реальности.

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

Нигде нельзя. Ты же не можешь указать для инта ограничение вида >0.

Или flexible array members. В язык специально добавили фичу чтоб говнокодить было удобнее, не нужно было бы вычитать единицу при маллоке.

Чего ты несёшь? Какой маллок, какую единицу? Зачем ты говоришь о том, в чём ничего не понимаешь? Если ретранслируешь чушь из интернетов - смени источник. Тот, который ты используешь слишком поломался.

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

Какая функция по значению, что значит выводить автоматически?

В С/С++ есть тип-функция и указатель над типом-функцией.

Указатели на функции в Расте есть. Замыкания тоже. Их можно передавать в другие функции.

Нельзя. И нет. То, что там есть - лишь малая часть семантики С++.

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

Нету там таких указателей. Показывай. Именно конструкции языка, не unsafe-либы поверх него.

Тип указателя на функцию выводится в расте автоматически

Нет, не выводится.

как и любой другой тип, но только внутри тела функции.

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

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

Тип нужно описать тебе, а мне ненужно. У меня есть полиморфизм и вывод типов. В очень редких случаях, если только. К тому же указатели на функции в С++ не используются, потому как подобная функция не имеет контекста.

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

Выразите мне на си с классами следующий простой пример: структура, параметризованная произвольным числом типов, удовлетворяющая требованиям trivially destructible тогда, когда все эти типы trivially destructible.

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

Не устроит. Это не-полиморфный вызов. И туда нельзя передать замыкание.

К тому же void-функций у тебя быть не может, зачем обманываешь? Как ты собрался ошибки передавать? Ах да, как я мог забыть. Ты же о них даже не знаешь и твоё foo в любой момент может упасть с паникой.

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

В любом стиле. Код раста компилирует С++-компилятор с кастомным огрызком фронта. Причём далеко не самые быстрый из компиляторов, да и находится он в вечной регрессии.

Поэтому все основные фазы компиляции - это С++-компилятор. Сам огрызок фронта мало на что влияет. Всё бы было хорошо, если бы скриптуха была скриптухой.

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

Не стоит забывать о околонулевом качестве самого огрызка фронта. Не смотря на то, что он в 10 раз проще крестового - он ещё более тормозной. И не смотря на отсутствие полиморфизма, в 100 более слабую систему типов и прочее - оно не может.

Причина проста. Если С++ решает все проблемы на уровне языка, то здесь «язык» ничего не решает. И хоть и есть всякие мономорфные подули и прочие признаки скриптухи - качественного кода там не добиться.

Поэтому приходится эксплуатировать С++-компилятор, его основные части. Это значит собирать много кода вместе, обмазываться lto и всякими иными фичами С/С++, которые «плохо лежат».

sutrasarki
()
Ответ на: комментарий от anonymous-angler
for (dst, src) in dst.zip(src) {
    *dst = *src;
}

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

Только он на порядки удобнее.

Нет.

Говорю как человек, заколебавшийся писать имплементацию adl_serializer

Ничего писать ненужно.

на каждую очередную структуру вместо богоугодного #[derive(Deserialize, Serialize)].

Никакого отношения к языку не имеет. Это внешний кодоген. Иди и обмазывайся таким же в С++, если нужно.

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

Зачем ты показываешь фейковый мусор, вместо кода?

-> Result<()>

Куда делись ошибки? Ты зачем пытаешься врать?

r#"
        {
            "name": "John Doe",
            "age": 43,
            "phones": [
                "+44 1234567",
                "+44 2345678"
            ]
        }"#

Это строка. Какое отношение это имеет к тому, что тебе показывали?

println!(«Please call {} at the number {}», v[«name»], v[«phones»][0]);

Это так работать не может. В первом и втором случае там не может быть string, как это должно быть.

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

Во первых он не сторонний.

Сторонний. Это отдельный язык, доказывается это очень просто. И это построено - это явно видно.

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

Скролль до «Untyped example» или открой доку как сделать Serialize/Deserialize без #[derive(…)].

Это невозможно. Язык не полиморфный.

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

Нет, в С++ ничего писать ненужно. Ты опять пытаешься врать/повторять враньё.

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

Да и вообще кодогенерация в С++ попросту мало используется. Язык не для этого предназначен.

То, что есть у тебя - это банальная скриптушная херня. Есть в любой скриптухе. Вообще в любой. В жаве, пистоне, жабаскрипте, шарпе - тысячи их.

Проблема только в том, что в С++ другой подход, не скриптушный. И ты берёшь не скриптуху и скриптуху и говоришь «ну вот как в расте». Это не так, как в расте. Это так, как в любой другой скриптухе. Это свойство скриптухи, а не раста. Не выдавай это за свойство раста.

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

И сделать это никакой проблемы нет. Только никому это ненужно. Всё это было тысячи лет назад, в той же odb. Только вот для чего?

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

Ты не прав уже в том, что макросы rust называешь отдельным языком.

Прав. Это другой язык. Доказывается это очень просто - у них разный синтаксис и вообще разная семантика. Т.е. макрос не работает с объектами языка на уровне языка.

Если бы сам язык мог бы это делать - никакие макросы бы не нужны были.

Уже это показывает степень глубины твоих познаний.

Скорее твоих, а не его.

Ты ещё расскажи что плюсовые темплейты это отдельный язык.

Нет, они никак не могут являться отдельным языком. Они существуют в рамках языка и оперируют его объектами.

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

Слышь говно, а что ты опять раскукурекался ? Из дурки выпустили или таблетки закончились ?

Ты уж если кукарекать начал, так с примерами. И побыстрей.

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

В случае с растом можно копипастить готовый json, или прочитать из файла.

Зачем ты продолжаешь повторять чушь из интернета? То, что тебе нужно только пастить - то понятно, но что из этого следует? С++ так же может распарсить json из строки, причём на уровне языка, а не вызовов внешнего рантайма.

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

Молодцом!
В том году ваши посты удаляли не из-за того, что они «не верные» …

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

Да. Но ты говоришь, почти буквально, «В C++ впаяны initializer lists и это хорошо, а в Rust такого нет - и это плохо». Я тебя и спрашиваю - почему?

Потому что это базовое свойство этой реальности. Есть язык А, есть фича. Ты соглашаешься с тем, что фича нужна. Есть язык Б, в котором фичи нет и для реализации пародии на неё к Б добавляется новый язык C. На самом деле даже не язык добавляется, а просто внешний вызов добавляется.

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

Ну это попросту неконсистентно. Почему вызов функции от определённого кол-ва аргументов - это вызов функции, а вот вызов не от определённого - уже макросня?

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

С++ так же может распарсить json из строки, причём на уровне языка, а не вызовов внешнего рантайма.

Rust так же может распарсить json из строки, причём на уровне языка, а не вызовов внешнего рантайма.

P.S. все примеры сразу после твоих.

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

Я осилил. Просто тебе ответить нечего и ты начал съезжать с темы. Ну сообщи мне о том, что же я там не осилил?

Пацан сказал, что С++ может определять произвольные структуры в списках инициализации. Начались какие-то оправдания и в качестве альтернативы был предложен хардкодинг текста в исходник. Потому пацан показал, что живую струтуру можно вшивать данные. Ты поплыл и начал рассказывать про «ну спастить текст нельзя», что значит нельзя?

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

Ты мне там объясни - в чём проблема контекста?

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