LINUX.ORG.RU

Rust 1.36

 


1

9

Команда разработчиков с радостью представляет вам Rust 1.36!

Что нового в Rust 1.36? Стабилизирован трейт Future, из нового: крейт alloc, MaybeUninit<T>, NLL для Rust 2015, новая реализация HashMap<K, V> и новый флаг --offline для Cargo.

А теперь подробнее:

  • В Rust 1.36 наконец-то стабилизировали трейт Future.
  • Крейт alloc.
    Начиная с Rust 1.36, части std, которые зависят от глобального аллокатора (например, Vec<T>), находятся в крейте alloc. Теперь std реэкспортирует эти части. Больше об этом.
  • MaybeUninit<T> вместо mem::uninitialized.
    В предыдущих релизах mem::uninitialized позволяла вам обходить проверку инициализации, использовалось это для ленивой аллокации массивов, но эта функция довольно-таки опасна (подробнее), поэтому был стабилизирован тип MaybeUninit<T>, который безопаснее.
    Ну и так как MaybeUninit<T> является более безопасной альтернативой, то, начиная с Rust 1.38, mem::uninitialized будет являться устаревшей функцией.
    Если хотите больше узнать про неинициализированную память, можете прочесть запись в блоге (Alexis Beingessner).
  • NLL для Rust 2015.
    В анонсе Rust 1.31.0 разработчики рассказывали нам о NLL (Non-Lexical Lifetime), улучшении для языка, которое делает borrow checker умнее и более дружелюбнее к пользователю. Пример:
    fn main() {
        let mut x = 5;
        let y = &x;
        let z = &mut x; // This was not allowed before 1.31.0.
    }
    
    В 1.31.0 NLL работал только в Rust 2018, с обещанием, что разработчики добавят поддержку и в Rust 2015.
    Если хотите больше узнать про NLL, можете прочитать больше в этой записи в блоге (Felix Klocks).
  • Новый флаг для Cargo - --ofline.
    В Rust 1.36 стабилизировали новый флаг для Cargo. Флаг --offline говорит Cargo использовать локально кешированные зависимости, для того, чтобы позже их можно было использовать без интернета. Когда нужные зависимости не доступны оффлайн, и если интернет все-таки нужен, то Cargo вернет ошибку. Для того, чтобы предварительно скачать зависимости, можно использовать команду cargo fetch, которая скачает все зависимости.
  • Здесь вы можете прочитать более детальный обзор изменений.

Также есть и изменения в стандартной библиотеке:

Другие изменения Rust, Cargo и Clippy.

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

★★★

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

Скоро количество кракозябр, разработанных командой Rust — превысит количество кода.

anonymous
()

Почему никто не запилит новость о свежем Pale Moon ? Лорочка потихоньку сдыхает ?

anonymous
()

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

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

Согласен.
Впиливают толпу возможностей, но ничего не успевают стабилизировать. Язык «без стандарта», постоянно меняющийся.
Скоро они сами запутаются, потеряют «идею» языка, и просто утонут под необходимостью поддерживать всё это.
Косяков и дыр особо не видно, потому как используется только «хипстерами» и «создателями», если станет массовым - им уже не будет возможности разгрести. Даже C++ страдает от этой проблемы, и походу давно, IMXO
И да, всегда кричали что он «системный», но сейчас в ентой новости умолчали, и википедия почему-то молчит о «системности», видать до микроконтроллеров им как до Луны...

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

Ну NLL упрощает работу с лайфтаймами. Вроде это одно из самых сложных

snake266 ★★★
() автор топика

трейт
крейт

Подождите. Я думал это одно и тоже, просто люди коверкают слово. А тут такое открытие.

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

Не, это плиз к пёрлу и его встроенному регэкспу...

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

так он и так пока более-менее простой, успевайте вливаться пока не кресты

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

hbee ★★★★
()

это поделие все больше и больше напоминает плюсы ...

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

пора закапывать это хипстоподелку.

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

а фреймворк pedeRust еще не придумали?

С федорой справились и с этим справятся, ждите :3

А вот и короли юмора подтянулись, все в машину.

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

Все расширения синтаксиса, которые я припомню, сугубо уменьшали количество бойлерплейта и делали язык более интуитивным. Я хз, где тут плюсы. Нет концепции наследования ни в каком виде, поэтому любая структура - это тупой набор байт, нет исключений и связанных с этим минных полей. Т.е. единственные нетривиальные концепции во всём языке - это борроу чекер, interior mutability, замыкания и, в будущем, async/await. В остальном - это ссаный Паскаль на максималках.

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

это поделие все больше и больше напоминает плюсы …

и чем же тебе 1.36 напоминает плюсы больше, чем 1.35?

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

концепции во всём языке - это борроу чекер, interior mutability, замыкания и, в будущем, async/await.

это ссаный Паскаль на максималках.

/0

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

а фреймворк pedeRust еще не придумали?

:))) походу, это у них давно стандартная либа

anonymous
()

как и анонимусов выше, интересует вопрос

этим хоть ктото пользуется?

изменени джавы раз в 5 лет и то отпугивают(хотя обратная совместимость тамто хоть работает), а тут каждый месяц по новости

Раст конечно больший и крутой проект, темнеменее начинает напоминаь «студенческую поделку» компилятора с нулем проектов на нем

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

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

Пару страниц с «ненужно» уже удалили.

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

Пока трансформеры пометили главную страницу debian.org

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

И да, всегда кричали что он «системный», но сейчас в ентой новости умолчали, и википедия почему-то молчит о «системности», видать до микроконтроллеров им как до Луны...

Начиная с Rust 1.36, части std, которые зависят от глобального аллокатора (например Vec<T>, находятся в крейте alloc. Теперь std ре-экспортирует эти части

как думаешь, для чего это делается? В любом случае, для микроконтроллеров языком номер 1, 2 и 3 был и останется Си.

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

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

Все как в плюсах, сам язык усложняется, но писать на нем становится проще. Как пример выше уже привели NLL.

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

В остальном - это ссаный Паскаль на максималках.

Еще чуть OCaml'а добавлено, который тоже несложный язык.

anonymous
()

// Команда разработчиков с радостью представляет вам Rust 1.36! // Команда разработчиков с радостью // с радостью

ну точно школота этот руст писала

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

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

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

Как скучно мы живём! В нас пропал дух авантюризма... (с)

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

Неверно. В нём нету даже 10% возможностей плюсов. Как бы тебе объяснить. Это достаточно сложно понять адептам, которые нихрена в теме не понимают. Если попроще. С++ сложный не потому, что он какой-то там системный, лоулевел и прочая херня. Он сложный чисто номинально. Базовая сложность у него обычная.

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

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

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

В другом языке тебе добавляют попросту набор новой магии, новой семантики. Допустим, берём макросы недораста. Хомячки всегда орали «вот у си препроцессор и он говно, типа другой язык». И тут им дали «другой язык», но их это не волнует.

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

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

Что-то уровня тех же говномакросов в С++ есть - это всякие parameter pack. Там так же запилена некая новая семантика, но в любом случае всё это сделано не так убого и в гораздо меньших масштабах.

И parameter pack в С++ является проблемой и примером ошибки. Хотя для С++ это не является ошибкой. У С++ не было опыта, были уже паки в макросах и подобная семантика в языке(с ...). И не было попросту возможностей сделать иначе.

У недоязычков есть все возможности. Это делается крайне просто. Т.е. если ты не сделал в новом язычке то, что может С++ - ты говно, по определению. Но они не сделали.

Дак вот, parameter pack вполне себе типичный пример той самой плохой сложности. И С++ состоит из неё на 5%, но даже это проблема. недоязычок состоит из неё на 95%. И пока он ничего не может - он ещё не превысил предел убогости, и чем больше в него будут пытаться впихнуть - тем больше оно будет разваливаться. Оно уже разваливается.

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

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

К тому же, нужно понимать, что основная ЦА ничего не понимает. Я уж думал, что ладно лор - тут одни дошколята, но пописав на хабре я понял где реальные дошколята.

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

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

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

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

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

Этот низкоуровневый язык создавался с другими целями

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

Цели поменялись. Кстати, попроси его рассказать как проверить ошибку у аллоката и как там нету никаких проблем с исключениями, когда везде используются ворованная из крестов(из llvm) логика для паник. И паники можно поймать и пожрать говна.

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

Кстати, попроси его рассказать как проверить ошибку у аллоката

Кроме системного аллокатора, в расте можно создавать самописный ?
Чем они отличаются ?

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

ворованная из крестов(из llvm) логика для паник

А ещё используются ворованные вызовы системных API и библиотек. llvm же не был создан, что бы упростить написание компиляторов, рука-лицо.

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

Это не мозг встал раком, это твоя методичка сломалась. Раст-адепт, был помножен на ноль, своим же растом.

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