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)

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

Потому что свифт для убийства objc и создали и собственно он objc и убил

Это я понимаю, но ты написал, вроде как, что-то совсем другое, цитирую:

Swift

Убийца С, а не Objective-C.

всё стало совсем по-другому, и objc практические изчез из той же iOS разработки.

Ты пишешь для iOS? Если да, то там реально Objective-C стал полным легаси?

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

Причём тут «миллиардером»?

потому что у того анонима был «профит на миллиард»

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

ну и что, в чем проблема? им не надо, толстоуму надо. И жили они долго и счастливо.

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

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

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

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

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

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

Синтаксис взяли многие, в основном те, которые как языки плохие - java, C# (и то там далеко не только влияние С), javascript, php, perl, golang и прочий шлак. Но есть много других языков, в которых от С достаточно мало или вообще нет ничего - Lisp (common lisp, racket, scheme), TCL, Rebol, Forth, Smalltalk, Haskell и даже Ruby с Python - и *все* они намного лучше (каждый в своей нише) синтаксических наследников С. «Всё» не взял никто, потому что С это вообще не отправная точка, но N-ное поколение в семействе алголоподобных.

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

которые как языки плохие - java, C# (и то там далеко не только влияние С), javascript, php, perl, golang и прочий шлак

горшочек LOR’а начинает варить :) Как работает твоя определялка хороший/плохой?

в которых от С достаточно мало или вообще нет ничего - Lisp

Lisp ничего не мог взять от C, т.к. появился значительно раньше, и из соображений и идей, ничего не имевших общего с портированием UNIX.

И ни один из лиспов не собирался решать традиционные для сишки задачи, с тех пор как зафейлилась идея лисп-машин.

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

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

а можно по пунктам, что входит в это «всё», кроме синтаксиса?

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

вот у меня вопрос: зачем убивать с\спп?

Создаётся ощущение, что заявление об убийстве, ровно как и о бессмертии С и С++, пишут либо люди далёкие от разработки, либо, в случае C и C++, застрявшие в своей молодости.

Месяц назад работал в питерском офисе Хуавей и лично лицезрел эталонного фанбоя, который был вчерашним студентом и признавался в любви к Расту на основании того, что:

  • Раст не течёт;
  • в Расте ниипаца какая простая и безопасная многопоточка;
  • в Плюсах на каждом шагу UB.

При этом его опыт состоял из «почти получил ч0рный пояс по C++ в Яндекс.Практикум» и «сделал две лабы на Расте». Таких же клоунов полон ЛОР.

Раст и Плюсы могут нормально уживаться друг с другом, что демонстрирует Mozilla Foundation в том же Firefox. И это надо использовать, а не пытаться есть кактус, применяя неподходящий инструмент. Хейтить язык - это какое-то бездонное непрофессиональное и эмоциональное днище.

Но вот, что грустно лично мне, как человеку почти 20 лет пользующему Netscape 6 – Firefox. Тот же Firefox местами дохнет из-за решения начинать пилить какие-то массивные части на Расте. Посмотрите их neqo. Его пилят 1.5 гребца. Не в последнюю очередь из-за того, что это пилят на Расте. И сравните с гугловым Quiche. Качество кода явно говорит не в пользу Раста. Полнота поддержки протокола в Firefox при текущем положении просто несравнима с Chromium.

Всё это выглядит очень забавно на фоне заявления ЛОРовских аналитиков о ниипической крутости Раста и скорой кончине C и C++.

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

Хейтить язык - это какое-то бездонное непрофессиональное и эмоциональное днище.

Качество кода явно говорит не в пользу Раста.

Хех. А может не в пользу программистов, раз хейтить язык нельзя?

Каноническое соблюдение взаимоисключающих параграфов забавляет.

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

Как работает твоя определялка хороший/плохой?

Даже неинтересно начинать, обсуждалось уже тыщу раз в том числе и на лоре.

Lisp ничего не мог взять от C, т.к. появился значительно раньше

Держи в курсе. А еще лучше перечитай на что я отвечал. «современные языки взяли от сей почти всё» - нет, не взяли. Lisp - современный язык.

И ни один из лиспов не собирался решать традиционные для сишки задачи, с тех пор как зафейлилась идея лисп-машин.

Не связанные между собой вещи, but who cares.

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

Кто угодно может запустить тесты и выложить результат в интернет. Не нужно ждать пока это сделают разработчики.

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

Новые код никто в здравом уме не будет писать на objc, но если это какой-то «ентерпрайз» а его еще навалом, то там да, мешанина из всего что только было в истории ios будет присутствовать, а убирать это никто сам не полезет.

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

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

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

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

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

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

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

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

медленная компиляция

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

Rust, Kotlin, Haskell, Scala

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

Да они просто видимо сравнивают время компиляции хелоуворд-пет-проект на Расте, и какого-нибудь огромного проекта вроде Опен-Оффиса на Плюсах. :)

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

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

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

Zig как язык точно интереснее раста. Проблема в том что за ним не стоят пиарщики из гуглов с мозиллами, вот о нем и не слышно.

На нем недавно начали пилить WM, например. https://github.com/ifreund/river

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

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

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

Cравни как выглядит указатель на функцию в сишечке и расте, или как массив таких функций. Боязнь синтаксиса раста исходит от нотаций лайфтаймов, но такой текст содержит дополнительную информацию, понятно что он будет страшнее. Для сравнения, посмотри как выглядят объявления с C++ core guidelines.

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

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

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

Ты в слове молоко две ошибки сделал, о чем с тобой вообще можно говорить?

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

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

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

Перед тем как делать выводы следует понять о чём ты вообще.

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

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

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

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

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

Zig как язык точно интереснее раста. Проблема в том что за ним не стоят пиарщики из гуглов с мозиллами, вот о нем и не слышно.

ИМХО, он не только НЕ интереснее раста, но ещё и не интересен даже если бы раста вовсе не было. Он выглядит как какой-то шаг назад после C++.

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

Rust всё-таки не то чтобы совсем экзотика. Помнится на нём прошивку видеокамер делали. Т.е. вполне себе промышленное решение. Но сишечку тут да, не уделаешь, пока.

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

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

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

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

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

В поле структуры, в параметр или возвращаемое значение разве можно передать НЕ указатель на функцию, а саму функцию?

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

Что значит «передать саму функцию»? Тебе нужен синтаксис для этого, или что бы инструкции копипастились каждый раз? Или ты вообще про значения, которые с собой таскают замыкания?

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

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

Это синтаксис сишки:

while(*to++ = *src++);
for(int x, y;x < y && x + 10 > z;f1(), y = f2(), x++)
  if(f3() < 100) x--;
Покажите мне растовый.

Где аналог такого? https://github.com/nlohmann/json

Rust берет сокращениями, как и Lisp, но выразительность у них плохая.

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

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

anonymous-angler ★☆
()
Ответ на: комментарий от MOPKOBKA
while(*to++ = *src++);
for(int x, y;x < y && x + 10 > z;f1(), y = f2(), x++)
  if(f3() < 100) x--;

А x и y точно не нуждаются в инициализации?

for (dst, src) in dst.zip(src) {
    *dst = *src;
}

let (mut x, mut y): (i32, i32) = /* (0, 0) например */;
while x < y && x + 10 > z {
    if f3() < 100 {
        x -= 1;
    }
    f1();
    y = f2();
    x += 1;
}

Можно всё это тоже в 3 строчки свернуть, но зачем?

Где аналог такого? https://github.com/nlohmann/json

https://docs.serde.rs/serde

https://docs.serde.rs/serde_json

Только он на порядки удобнее. Говорю как человек, заколебавшийся писать имплементацию adl_serializer на каждую очередную структуру вместо богоугодного #[derive(Deserialize, Serialize)].

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

В одном анекдоте была такая фраза: «нашла, дура, сем гордиться».

Вот как мне кажется, она про этот самый случай.

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

А что ты будешь делать с самой функцией, чего не можешь делать с указателем?

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

Можно всё это тоже в 3 строчки свернуть

Нельзя.

https://docs.serde.rs/serde_json

Построено на стороннем язычке ака препроцессоре, мы о синтаксисе раста говорим.

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

Построено на стороннем язычке ака препроцессоре,

В этой фразе глупость на глупосте глупостью погоняет.

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

В общем и целом - ничем.

Зачем тогда нужно такое отдельное понятие как УКАЗАТЕЛЬ НА ФУНКЦИЮ?

Вот есть тип целое и тип указатель на целое. Между ними есть разница? Есть. Разницы между функция принимающая целое и возвращающая целое, и указатель на функцию принимающую .. возвращающую .. Какое? никакого.

Зачем нужно это лишнее понятие? Как смысл его использования? Какой смысл существования этого ЛИШНЕГО понятия?

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

А мне не нужны структуры, хочу инициализировать сразу обджектом. Как нибудь так:

json j2 = {
  {"pi", 3.141},
  {"happy", true},
  {"name", "Niels"},
  {"nothing", nullptr},
  {"answer", {
    {"everything", 42}
  }},
  {"list", {1, 0, 2}},
  {"object", {
    {"currency", "USD"},
    {"value", 42.99}
  }}
};

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

https://github.com/serde-rs/json#operating-on-untyped-json-values

use serde_json::{Result, Value};

fn untyped_example() -> Result<()> {
    // Some JSON input data as a &str. Maybe this comes from the user.
    let data = r#"
        {
            "name": "John Doe",
            "age": 43,
            "phones": [
                "+44 1234567",
                "+44 2345678"
            ]
        }"#;

    // Parse the string of data into serde_json::Value.
    let v: Value = serde_json::from_str(data)?;

    // Access parts of the data by indexing with square brackets.
    println!("Please call {} at the number {}", v["name"], v["phones"][0]);

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