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)

Как же тут много экспердов....

anonymous
()

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

пока только интерпритатор PythoRust...

anonymous
()

А что это такое вообще?

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

Асинхронный синтаксис и сейчас можно юзать в nightly же. Главное - дождаться, пока tokio, hyper и остальные перейдут на std::future, чтобы async/await работал искаропки.

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

дождаться, пока tokio, hyper и остальные перейдут на std::future

про токио мне доложили, что уже вот-вот

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

Расскажи, почему у тебя так бомбит от раста?

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

Изменения джавы мне чаще ломают проекты чем изменения в rust.

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

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

Дык вроде ЛОР самый продвинутый из руснета, это ж просто по уровню тем легко определять.

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

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

red75prim ★★★
()

Когда я был в первом классе, ко мне подошел старшеклассник и предложил писать с ним программу на Rust. Я стал отказываться, но он меня заставил. С тех пор я пишу программы только на Rust. Иногда, когда родители уходят, мы собираемся группой по 6-8 ребят и пишем программы на Rust вместе.

Год назад я познакомился с девушкой, и она предложила мне писать программу на C++. У меня ничего не вышло: меня стошнило и потом долго болела голова.

Зовут меня Валерий Павлович, в сентябре мне исполнится 47 лет. Моя жизнь сломана.

Deleted
()

Let a = 3? Серьезно? Как в турбо бейсике? А чо нумерацию строк не прикрутили? А есть хоть один полноценный рабочий проект в массовом пользовании на расте? Есть ли своя полноценная рабочая иде? Или это так, чисто на побаловаться?

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

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

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

В 46 познакомился с девушкой? Скорее с бабушкой. Поэтому такие и последствия.

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

Когда выходит новая версия моего рабочего инструмента, я бегу не лог изменений смотреть, не тулчейн обновлять, нет. Я бегу на лор. Я знаю, что царь копрофилии будет здесь. И да, он опять будет доказывать, что это не он жрёт говно (кстати, именно этим и объясняется количество слов «говно» и производных в твоём недоопусе). В целом, здесь нечему стыдиться. Любой психолог знает, что перенос своего влечения на окружающих — общая черта для сторонников пикацизма, кем этот персонаж и является. Тщетные попытки доказать, что говно это и не говно вообще, а полезное сочетание сероводорода, индола, скатола и т.д., а значит говном нужно называть как раз обычную еду, избавленную от столь замечательных ингредиентов.

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

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

А как можно было бы сделать? Ну теоретически. Раз пример ошибки.

anonymous
()

Интересно, почему некоторые языки и технологии вызывают бурные невыразимые чувства, а некоторые — нет?

ugoday ★★★★★
()

Что как, ноющих адептов примитивных язычков, вроде сишки, уже завезли?

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

Потому что, если ты пишешь на с++ или java, то всем насрать - таких миллионы. А если на rust или cl - это повод задуматься «а что с ним не так»?

anonymous
()

желаю вам, поскорее вытеснить C нафиг!

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

тебе ещё повезло, многие вообще в психушке кончают

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

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

Потому что, если ты пишешь на с++ или java, то всем насрать

Море срачей раньше было c++ vs xxx.

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

Ну, вот есть Go, Swift или Ruby и никого они особо не волнуют. Ну вышла новая версия и Господь с ней, кому надо, те обновятся, остальные проходят мимо. А rust или cl — пена изо рта и буря телесных жидкостей.

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

А есть хоть один полноценный рабочий проект в массовом пользовании на расте?

из того что сразу пришло на ум - alacritty (эмулятор терминала такой, очень быстрый) многие пользуются, особенно в тайловых WM. ripgrep опять же.

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

Слишком непохоже на привычное, наверно. Психика защищает от разрыва шаблонов.

У кого есть опыт и с крестами, и с ML/Haskell - они как-то сразу понимают, что это и зачем. Но таких мало.

anonymous
()

Растом убили Фурефокс, ЛГБТ недоязык.

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

Может быть что-то вроде эффекта зловещей долины? ML или R на С совсем не похоже, и утята проходят мимо, а тут вроде бы и всё привычное, и понятное, но вот неправильное-неправильное и это прям бесит.

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

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

А можно ссылку?

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

У кого есть опыт и с крестами, и с ML/Haskell - они как-то сразу понимают, что это и зачем

Опыт есть. Но не понимаю=) Со стороны крестов смотришь и не понимаешь, что все «преимущества» получены за счет ограничения возможностей. Современные подходы к разработки и для крестов делают жизнь нормальной(pr, CI&CD со статическими анализаторами, санитайзерами и пр.). При том, что язык дает больше возможностей и не надо выкручиваться, чтобы в очередной раз обойти растовские проверки компилятора(он часто не понимает даже очевидные вещи).

Со стороны Haskell смотришь и не понимаешь, а зачем, собственно? И почему вместо нормальных тайпклассов какая-то поделка(забавно, но концепты из крестов понятно зачем)

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

Да, похоже на то.

Сам умом понимаю что хорошо сделано, а всё равно внутри дискомфорт от растокода. И C++ такой родной и правильный...

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

Наверное потому, что в основе Rust лежат идеи с большим потенциалом, а срачи о нём крутятся лишь вокруг реализации этих идей.

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

в основе Rust лежат идеи с большим потенциалом

Например? Вот аноним выше, считает, «все «преимущества» получены за счет ограничения возможностей» и потом, как вы измеряете потенциал идеи, почему потенциал borrow checker'а больше, чем у зависимых типов?

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

Со стороны крестов смотришь и не понимаешь, что все «преимущества» получены за счет ограничения возможностей

Ну, современные кресты действительно подходят близко. Особенно если допилят лайфтаймы. Но всё равно C++ позволяет писать хороший код, а раст заставляет. В большом масштабе надо заставлять :D

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

Со стороны Haskell смотришь и не понимаешь, а зачем, собственно?

Чтобы избежать GC, ленивости и толстых бинарников, очевидно. Если оно надо.

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

QuantumCSS + WebRender

Сервер-сайд NPM Registry, а так еще используется внутри в Facebook, Dropbox, Amazon, etc.

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

Наверное потому, что в основе Rust лежат идеи с большим потенциалом, а срачи о нём крутятся лишь вокруг реализации этих идей.

И дебилов, которые этими реализациями все запороли?

anonymous
()

новые версии Rust выходят только чтобы поддерживать лоро-срач.

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

иначе частоту выходов «новых релизов с киллер-фичами» не объяснить.

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

Понятия не имею. Ну кроме системного можно украсть какой-то другой. Это без проблем. Один же украли, значит и другой можно.

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

Раст в принципе разрабатывался с целью дестабилизации мирового медиапространства. На сегодня лучшая разработка, после исчерпания потенциала C++ и CL и слабых результатов D, Go и Swift.

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

изменени джавы раз в 5 лет и то отпугивают

Потому и отпугивают что раз в 5 лет и большие, тут изменения очень маленькие и инкрементальные.

хотя обратная совместимость тамто хоть работает

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

темнеменее начинает напоминаь «студенческую поделку» компилятора

Интересно посмотреть на таких студентов.

с нулем проектов на нем

То что вы о них не знаете — не говорит о том что их нет.

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

моей критики раст-адепты боятся как огня.

ЧСВ распухло? Удалял лично я поливание помоями. И дальше буду удалять. Будешь вести себя в рамках правил и приличий - посты будут оставаться на месте, я гарантирую это.

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

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

Хм... а как насчет использования разных модулей компилируемых разными релизами 2015 и 2018. Такое возможно?

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

Разных крейтов — конечно, в 2018 можно притянуть зависимостью крейт 2015. Именно модулей — нет, модуль не является единицей трансляции.

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

Разных крейтов — конечно, в 2018 можно притянуть зависимостью крейт 2015. Именно модулей — нет, модуль не является единицей трансляции.

Получается можно на уровне библиотек?

То есть ответ - нет.

Замечательно!

anonymous
()

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

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

ЧСВ распухло?

Это объективная реальность. Хочешь поспорить? Ты, по моему, уже пытался со мною спорить и продержался пару постов, а потом начал тереть.

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

Методичка у вас одна на всех. Это как раст-сектанты пытаются табунами меня минусовать, что-бы я не мог отвечать. Угрожают наскоками, а потом «это не мы, мы то ничего».

Удалял лично я поливание помоями.

Зачем врёшь? Я уже приводил тысячи примеров ещё больше «поливания помоями» - где ты был? Поливали говном меня - где ты был? Как я выше уже говорил, мы вроде как обсуждали это. А потом твои гарантии куда-то делись. Ну ничего. Затёр и будто бы не было.

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

Ты страх путаешь с раздражением. Твое вайтишное мировосприятие уровня менеджера по продажам софта всех порядком уже задолбало, вот и всё. Называть воровством целевое использование LLVM — это сверхразум.

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