LINUX.ORG.RU

Rust 1.34

 ,


3

8

Вышел релиз 1.34 языка системного программирования Rust, развиваемого проектом Mozilla.

Ключевое-долгожданное:

  • Начиная с этого выпуска, Cargo может поддерживать альтернативные реестры. (Эти реестры сосуществуют с crates.io, так что вы можете писать программы, которые зависят и от crates.io и от вашего реестра.)
  • Трейты TryFrom и TryInto были стабилизированы для поддержки ошибок при преобразовании типов.

>>> Полный анонс



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

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

Ну или можешь представить что там без const везде. Суть не меняется.

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

но для примера

У нас бы такой код не прошел ревью.

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

И это иногда бывает нужно.

Мне трудно представить такое, да, может где то нужно... Где то...

С -Wall выдаст предупреждение кстати. Вы там чем компилируете Watcom C++?

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

Ну для новых файлов можно и включить то, лол... В чем же тогда плюсы виноваты?) В Rust тоже можно игнорировать и подавлять все что угодно.

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

Мы игнорим ворнинги как и в любом большом проекте.

Не в любом.

Особенно когда проекту 20 лет.

В таких случаях сначала добавляют файлы в исключения, но когда кто-то трогает файл, то для него включаются все проверки и код правится. Не всегда все происходит именно по такой гладкой схеме, но таки постепенно код вычищается.

Зря вы обобщаете свои плохие практики на всех.

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

Я не обобщаю, я просто к тому что язык должен быть как Аэропорт, с нулевым доверием к пассажиру/программисту. Не можешь доказать компилятору что твой код сейфовый - юзай unsafe {} и доказывай это тимлиду, или коммит не пройдёт. Вот и всё. На С++ же страшно людей нанимать. Надо первые пол года следить и смотреть все ревью чтоб человек не коммитил говнокод.

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

В том что эта штука должна давать не ворнинг а ошибку компиляции, без false-positive'ов желательно.

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

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

В твой Rust однажды добавят новые правила, и старый код перестанет собираться, и что, все переписывать? Это хорошо? Ну так включите Werror, и переписывайте на плюсцах... Или компиляторы C/C++ должны были с 70х годов на все еррорами сыпать? Ну не смогли да, сейчас могут если анализаторы подключить, вперед! Зачем новый язык нужен?

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

Ну вот я до того, как попробовал, тоже думал, что хороший язык.

А я наоборот, долго не пробовал, так как казался страшным. На практике писать на нем даже легче и удобнее чем на С++ но очень крутая кривая обучения (если досконально разбираться со владением).

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

В том что эта штука должна давать не ворнинг а ошибку компиляции

Поставь Werror на эту штуку, что мешает?

Типичное отношение уровня «скомпилировалось - можно тикет закрывать» всё-равно останется.

А могут работники вообще повесить всех, потому что решили что пришло время революции! А что, и такое может быть. Если захотят то сделают что угодно, и Rust со своим включенным по умолчанию Werror тут не поможет.

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

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

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

В твой Rust однажды добавят новые правила, и старый код перестанет собираться,

Не перестанет. У rust есть редакции в которых гарантировано сохраняется совместимость, так что добавишь в проект например edition = «2018» и все будет собираться так как будто это старый компилятор.

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

Есть такая штука, называется прогресс

Да, когда то был Cfront, C++98, теперь у нас современные компиляторы, современный стандарт языка, современные инструменты. И это прекрасно, хорошо что прогресс есть.

Время это уже заканчивается

Пока что даже нету прототипа языка который смог бы его заменить.

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

Не перестанет. У rust есть редакции в которых гарантировано сохраняется совместимость, так что добавишь в проект например edition = «2018» и все будет собираться так как будто это старый компилятор.

Значит новые предупреждения показываться не будут.

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

Пока что даже нету прототипа языка который смог бы его заменить.

Разве что черновик по C++20 %)

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

Еще эти звездочки непонятные в С++, ужасный язык.

macro_rules! diagnostic_method {
    ($name:ident, $level:expr) => (
        #[unstable(feature = "proc_macro_diagnostic", issue = "54140")]
        pub fn $name<T: Into<String>>(self, message: T) -> Diagnostic {
            Diagnostic::spanned(self, $level, message)
        }
    )
}
pub struct Context<'a> { _marker: PhantomData<fn(&'a ()) -> &'a ()> }

fn arg_local_refs<'a, 'tcx: 'a, Bx: BuilderMethods<'a, 'tcx>>(
    bx: &mut Bx,
    fx: &FunctionCx<'a, 'tcx, Bx>,
    memory_locals: &BitSet<mir::Local>,
    va_list_ref: &mut Option<PlaceRef<'tcx, Bx::Value>>,
) -> Vec<LocalRef<'tcx, Bx::Value>> {
   let ty = if let (true, &ty::Ref(_, ty, _)) = (by_ref, &ty.sty) {
       ty
   } else {
       ops = &ops[..ops.len() - 1];
       ty
   };
}

(@object $object:ident ($($key:tt)*) ($tt:tt $($rest:tt)*) $copy:tt) => { json_internal!(@object $object ($($key)* $tt) ($($rest)*) ($($rest)*)); };

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

Разве что черновик по C++20 %)

Угу только скорее С++24, и боюсь будет проще изучить три языка типа раста чем одну последнюю версию C++ :)

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

Еще проще будет изучить brainfuck, правда написать на нем практически ничего нельзя, как и на Rust, библиотеки то все для C/C++.

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

библиотеки то все для C/C++.

Библиотеки на Си также доступны в Раст как и в С++. Библиотеки на С++ не доступны нигде кроме С++ (а иногда недоступны и на С++ из-за бурного появления новых стандартов).

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

Библиотеки на Си также доступны в Раст

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

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

На каждый чих оборачивать функции в unsafe? Тогда же можно будет с указателями ошибиться, проверок то особо и нету. У С++/C уже развитые анализаторы, да даже ворнинги компилятора у них лучше, нужен этот Rust...

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

На каждый чих оборачивать функции в unsafe?

Не на каждый чих, а библиотеки на сях.

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

Вместо 100% кода ошибки с указателями могут быть только в сяшных обёртках.

У С++/C уже развитые анализаторы

Следствие старости и предрасположенности к ошибкам.

У С++/C уже развитые анализаторы, да даже ворнинги компилятора у них лучше

У C++ ... ворнинги ... лучше

лол

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

Не на каждый чих, а библиотеки на сях.

На каждый чих юзаю что то из библиотеки на сях.

Вместо 100% кода ошибки с указателями могут быть только в сяшных обёртках.

Нет.

Следствие старости

Ахах, и что теперь? Эти анализаторы автоматически исчезают из нашего мира?

лол

См.Выше!

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

На каждый чих юзаю что то из библиотеки на сях.

юзая*

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

Написал один раз библиотеку и переиспользуешь ее когда хочешь. Если честно, то Москва тоже не сразу строилась - это мое субъективное виденье на ситуацию с растом

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

Написал один раз библиотеку и переиспользуешь ее когда хочешь.

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

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

Толстишь ты, Котечка. Признавайся, сколько времени ты потратил на то, чтобы всё это собрать? И почему функцию arg_local_refs не целиком привёл? (И где ты взял контекст без данных?)

~~@~~

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

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

Это на существующей кодовой базе на C++ было бы затруднительно провернуть.

Но ничего у него нет, а то что есть (реализуется || реализовано) в плюсах без нового язычка.

Ну вот, как показывает опыт glib, ООП можно и на чистом C сделать, но обычно, если требуется ООП, берут всё-таки что-то более подходящее.

~~@~~

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

Признавайся, сколько времени ты потратил на то, чтобы всё это собрать?

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

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

Это на существующей кодовой базе на C++ было бы затруднительно провернуть.

ATTR_A | ATTR_B?

Ну вот, как показывает опыт glib, ООП можно и на чистом C сделать

Это разные вещи, не нужно сравнивать.

если требуется ООП

Которого в Rust нет и никогда не будет))

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

Чет я ваще мимо, все таки прочел статью. Какой то бред, анализаторы подскажут про уничтожение вектора, плюс можно юзать умные указатели, а «вдруг вектор изменят!!!» это вообще смешно, ну дай константный указатель, лол.

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

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

В смысле? Ревью всегда нужно. И для любых языков.

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

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

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

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

Тут или тимлид/техлид без яиц или (если agile) херовая команда.

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

То есть ты не осилил и теперь пытаешься спихнуть на то, что это бред.

Осилил.

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

А я писал что они нужны? Я у тебя еще и текст не осилил, найс. Тоже растофанатик как и автор статьи?

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

писать на нем даже легче и удобнее чем на С++

Даже после полугода работы на раст, на крестах получается быстрее.

А еще, хз как сформулировать, но пропало позитивное подкрепление при программировании. Никакого удовольствия при написании на расте. Думаешь больше не об алгоритме или задаче, а о компиляторе. На C++/Scala/Python тупо приятнее кодить. Подозреваю, что на Kotlin со Swift тоже норм.

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

Время это уже заканчивается

Знал бы ты, сколько десятилетий об этом говорят=)

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

На каждый чих юзаю что то из библиотеки на сях.

Мне это безразлично.

Нет.

Да.

Ахах, и что теперь? Эти анализаторы автоматически исчезают из нашего мира?

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

См.Выше!

Что?

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

Чай работы меньше чем для крестов.

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

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

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

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

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

Сишечке уже вагон лет, а модули там только планируют.

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

Сишечке уже вагон лет, а модули там только планируют.

Никто их не планирует, и не будет планировать, у нее другая логика. Зачем ей модули то?

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

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

И ни один из них даже -Wall не использовал осознанно, не говоря уже о том, чтобы компилировать под конкретный стандарт, все использовали то, что IDE, тот же Code::Blocks выставляет по-умолчанию.

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