что такое stable в rust
Rust 1.57.0: константный panic!, пользовательские профили в Cargo и обработка ошибок выделения памяти
Команда Rust рада сообщить о выпуске новой версии — 1.57.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Что стабилизировано в 1.57.0
Rust 1.57 привносит panic! в константные контексты, добавляет поддержку настраиваемых профилей в Cargo и стабилизирует ошибочные API резервирования.
panic! в константных контекстах
Эта стабилизация ещё не включает в себя полную инфраструктуру форматирования, так что макрос panic! должен вызываться либо со статической строкой ( panic!(«. «) ), либо с одним интерполированным значением &str ( panic!(«<>«, a) ), которое должно использоваться с <> (без формата спецификаторов или других типажей).
Ожидается, что в будущем эта поддержка будет расширяться, но такая минимальная стабилизация уже позволяет проверять простые утверждения во время компиляции, например проверки размера типа:
Поддержка пользовательских профилей в Cargo
Обработка ошибок при выделении памяти
Rust обычно прерывает процесс, если глобальный распределитель памяти даёт сбой, что не всегда желательно. Этот API предоставляет метод, позволяющий избежать такого прерывания при работе с коллекциями из стандартной библиотеки. Однако Rust не гарантирует, что возвращаемая память фактически выделена ядром: например, если в Linux включён overcommit, память может быть недоступна при попытке её использования.
Стабилизированные API
Стабилизированы следующие методы и реализации типажей.
Следующие ранее стабилизированные API стали const :
Прочие изменения
Участники 1.57.0
Множество людей собрались вместе, чтобы создать Rust 1.57.0. Мы не смогли бы сделать это без всех вас. Спасибо!
От переводчиков
С любыми вопросами по языку Rust вам смогут помочь в русскоязычном Телеграм-чате или же в аналогичном чате для новичковых вопросов. Если у вас есть вопросы по переводам или хотите помогать с ними, то обращайтесь в чат переводчиков. Также можете поддержать нас на OpenCollective.
Пять лет Rust
В этом бардаке, который сейчас происходит в мире, легко забыть, что прошло уже пять лет с выпуска 1.0 в 2015 году! Rust за эти пять лет сильно изменился, так что мы хотели бы вспомнить о работе всех участников сообщества, начиная с момента стабилизации языка.
Напомним, если кто забыл: Rust — это язык программирования общего назначения, который обладает средствами, позволяющими строить надёжное и эффективное программное обеспечение. Rust может быть использован в любой области: от ядра вашей операционной системы до вашего следующего web-приложения. Этот язык полностью построен участниками открытого многоликого сообщества, в основном волонтёрами, кто щедро делился своим временем и знаниями для того, чтобы помочь сделать Rust таким, какой он есть сейчас.
Основные изменения с версии 1.0
1.2 — Параллельная кодогенерация: уменьшение времени компиляции всегда являлось главной темой в каждом выпуске Rust, и сейчас трудно представить, что когда-то был короткий период времени, когда Rust вообще не имел параллельной кодогенерации.
1.3 — The Rustonomicon: наш первый выпуск фантастической книги «The Rustonomicon», книги, которая исследует тёмную сторону языка Rust, Unsafe Rust и смежные темы. Она стала прекрасным источником сведений для любого, кто хочет изучить и понять самые трудные аспекты языка.
1.4 — Поддержка Windows MSVC уровня 1: продвижение платформы на уровень поддержки 1 принесло нативную поддержку 64-битной Windows с инструментарием Microsoft Visual C++ (MSVC). До 1.4 вам нужно было устанавливать MinGW (порт окружения GNU под Windows) чтобы использовать и компилировать ваши программы на Rust. Поддержка Windows стала одним из самых больших улучшений Rust за эти пять лет. Лишь недавно Microsoft анонсировала публичный пре-релиз официальной поддержки Rust для WinRT API! И наконец, сейчас стало значительно легче строить высококачественные и кроссплатформенные приложения, нежели это было когда-либо ранее.
1.5 — Cargo Install: добавлена поддержка возможности сборки исполняемых файлов с помощью компилятора Rust вместе с поддержкой предустановленных дополнений cargo породило целую экосистему приложений, утилит и инструментов для разработчиков, которые сообщество обожает и от которых зависит. Cargo теперь поддерживает довольно много команд, которые сначала были просто плагинами, сделанными участниками сообщества и выложенными на crates.io!
1.6 — Libcore: libcore — это подмножество стандартной библиотеки, содержащее только API, которое не требует функций выделения памяти или функций уровня операционной системы. Стабилизация libcore позволила компилировать Rust без выделения памяти или зависимости от операционной системы, что стало одним из первых основных шагов к поддержке Rust для разработки встраиваемых систем.
1.10 — Динамические библиотеки с C ABI: крейт типа cdylib компилируется в динамическую библиотеку с C-интерфейсом, что позволяет встраивать проекты Rust в любую систему, которая поддерживает ABI языка C. Некоторые из самых больших историй успеха Rust среди пользователей — это возможность написать небольшую критическую часть системы на Rust и легко интегрировать в большую кодовую базу. И теперь это стало проще, чем когда-либо.
1.12 — Cargo Workspaces: позволяют организовать несколько проектов Rust и совместно использовать один и тот же lock-файл. Рабочие пространства были неоценимы при создании крупных многоуровневых проектов.
1.14 — Rustup 1.0: Rustup — это менеджер инструментальных средств. Он позволяет беспрепятственно использовать любую версию Rust или любой его инструментарий. То, что начиналось как скромный скрипт, стало тем, что персонал по эксплуатации нежно называет «химера». Возможность обеспечить первоклассное управление версиями компилятора в Linux, macOS, Windows и десятке целевых платформ была мифом ещё пять лет назад.
1.17 — Rustbuild: одним из самых больших улучшений для наших контрибьюторов в разработке языка стал переход от начальной системы сборки на основе make на использование Cargo. Благодаря этому участникам и новичкам rust-lang/rust стало намного проще создавать и вносить свой вклад в проект.
1.20 — Ассоциированные константы: ранее константы могли быть связаны только с модулем. В 1.20 мы стабилизировали ассоциативные константы для структур, перечислений и, что важно, для типажей. Это упростило добавление богатых наборов предустановленных значений в типы вашего API, таких как общие IP-адреса или использующиеся числовые константы.
1.24 — Инкрементальная компиляция: до версии 1.24, когда вы вносили изменения в библиотеку, компилятору приходилось перекомпилировать весь код. Теперь он стал намного умнее в плане кэширования, насколько это было возможно, и ему нужно только заново перегенерировать изменения.
1.26 — impl Trait : добавление impl Trait дало вам выразительные динамические API с преимуществами и производительностью
статической диспетчеризации.
1.31 — 2018 редакция: выпуск 2018 редакции стал нашим самым большим выпуском языка после версии 1.0, добавив изменения синтаксиса и улучшения в код на Rust, написанного полностью обратно совместимым образом. Это позволяет библиотекам, созданным с разными редакциями, беспрепятственно работать вместе.
1.34 — Альтернативный реестр крейтов: поскольку Rust всё больше и больше используется в производстве, возникает большая потребность в возможности размещении и использовании проектов в приватных пространствах. Вместе с этим в Cargo всегда разрешены зависимости из git-репозиториев. С помощью альтернативных реестров ваша организация может легко создать и делиться своим собственным реестром крейтов, которые можно использовать в ваших проектах, как если бы они были на crates.io.
1.39 — Async/Await: стабилизация ключевых слов async / await для обработки Future была одной из главных вех в превращении асинхронного программирования в «объект первого класса» Rust. Уже через шесть месяцев после его выпуска, асинхронное программирование превратилось в разнообразную и производительную экосистему.
Диагностики и ошибки
Одна вещь, которую мы не упомянули, это то насколько улучшены сообщения об ошибках и диагностика в Rust с 1.0. Глядя на старые сообщения об ошибках кажется, что это теперь другой язык.
Мы выделили несколько примеров, которые лучше всего демонстрируют насколько мы улучшили сообщения об ошибках. Теперь они показывают пользователям, где они допустили ошибки, и помогают понять почему код не работает, а также подсказывают, как можно их исправить.
Строительные блоки в игре Rust: полный гайд
Для того чтобы выживать в Rust, требуется собственный дом. На данный момент в расте существует 20 строительных блоков, начиная от фундамента, заканчивая крышей. Все строительные блоки в расте можно разделить на категории: фундаменты, стены, потолки, каркасы, лестницы, крыши. Чтобы строить, потребуется так же чудо-листочек, величавый планом постройки и киянка, которые крафтятся за 20 и 100 дерева соответственно.
Фундаменты:
В Rust’е существует 2 вида фундаментов – это квадратный и треугольный, каждый из них может существовать в виде: соломенного, деревянного, каменного, железного, бронированного фундамента. Итак, разберемся по порядку.
Соломенный квадратный фундамент: его стоимость составляет 50 дерева. Разрушается абсолютно чем угодно, начиная от камня, заканчивая ракетницей, разница лишь идет во времени. Прочность соломенного фундамента – 10 единиц (HP – health point — здоровье).
Соломенный треугольный фундамент: стоимость постройки составляет ровно половину от квадратного фундамента – 25 дерева. По разрушаемости такой же, как и квадратный. Прочность соломенного фундамента – 10 единиц (HP).
Деревянный квадратный фундамент: стоимость улучшения составляет – 200 дерева. Хорошо горит, можно сломать примитивными орудиями труда (Копьями, топорами, кирками и тд.). Служит на ранней стадии развития. Прочность деревянного фундамента составляет 250 единиц (HP).
Деревянный треугольный фундамент: стоимость улучшения – 100 дерева, половина от квадратного фундамента. Как и квадратный деревянный фундамент хорошо горит. Прочность треугольного фундамента – 250 единиц (HP).
Каменный треугольный фундамент: стоимость улучшения составляет – 150 камня. Отлично подходит для буферных зон. Прочность – 250 единиц (HP).
*Каменные фундаменты (особенно треугольные) хорошо используются для внешних буферных зон.
Железный квадратный фундамент: стоимость улучшения – 200 металлических фрагментов. Улучшается, обычно, на средней стадии развития. Прочность фундамента – 1000 единиц (HP).
Железный треугольный фундамент: стоимость улучшения составляет 100 металлических фрагментов. Прочность составляет – 1000 единиц (HP).
*Железные фундаменты эффективно ставить между сердцевиной дома и его внешними слоями.
Бронированный квадратный фундамент: стоимость улучшения – 25 металла высокого качества. Ломать фундамент копьями смысла нет, если только добить пару последних HP. Используется на поздней стадии развития. Прочность составляет – 2000 единиц (HP).
Бронированный треугольный фундамент: стоимость улучшения равна 13 металла высокого качества. Долбить по-прежнему смысла нет. Прочность – 2000 единиц (HP).
*Армированные фундаменты отлично подходят для сердцевины базы.
Стены:
В Rust’е существует 4 вида стен – это цельная стена, полустенка, и низкая стена, и окно, и дверной проём, все они могут быть: соломенными, деревянными, каменными, железными и бронированными. У всех стен есть 2 стороны – правильная и неправильная.
Цельные стены:
Соломенная стена: стоимость постройки – 50 дерева. Сломать можно чем угодно. Прочность – 10 единиц (HP).
Деревянная стена: стоимость улучшения – 200 дерева. Обе стороны легко можно сломать чем угодно, разве что по неправильной стороне проходит больше урона. Деревянная стена очень хорошо горит. Прочность стены – 250 единиц (HP).
Каменная стена: стоимость улучшения – 300 камня. Неправильную сторону стены легко можно сломать чем угодно. Прочность стены – 500 единиц (HP).
Железная стена: стоимость улучшения – 200 металлических фрагментов.
Примитивными орудием труда сломать стену будет, довольно, проблематично. Прочность стены – 1000 единиц (HP).
Полустены:
Деревянная полустена: стоимость улучшения – 200 дерева. Ломается точно так же, как и целая деревянная стена. Прочность – 250 единиц (HP).
Каменная полустенка: стоимость улучшения – 300 камня. Прочность – 500 единиц (HP).
Железная полустенка: стоимость улучшения – 200 металлических фрагментов. Прочность – 1000 единиц (HP).
Бронированная полустенка: стоимость улучшения 25 металла высокого качества. Прочность – 2000 единиц (HP).
*Полустенки ничем не отличаются от цельных стен, разве что только размером.
*Полустенки лучше использовать для потолочных буферных зон.
Низкие стены:
Соломенная низкая стена: стоимость постройки – 25 дерева. Как и все соломенные постройки ломаются чем угодно. Точно так же, как и у остальных стен есть 2 стороны: правильная и неправильная. Прочность – 10 единиц (HP).
Деревянная низкая стена: стоимость улучшения – 100 дерева. Прочность – 250 единиц (HP).
Каменная низкая стена: стоимость улучшения – 150 камня. Прочность – 500 единиц (HP).
Железная низкая стена: стоимость улучшения — 100 металлических фрагментов. Прочность – 1000 единиц (HP).
Бронированная низкая стена: стоимость улучшения – 13 металла высокого качества. Прочность – 2000 единиц (HP).
*Низкие стены ничем не отличаются от остальных стен (полустены и цельной стены), только размером.
*Низкие стены обычно используются для декорации или антирейд систем.
Пожалуй, один из одиночных строительных блоков, может быть так же соломенным, деревянным, каменным, железным и бронированным. Имеет 2 стороны – правильная и неправильная.
Соломенное окно: стоимость постройки – 35 дерева. Ломается, как и вся солома. Прочность – 10 единиц (HP).
Деревянное окно: стоимость улучшения – 140 дерева. Прочность – 250 единиц (HP).
Каменное окно: стоимость улучшения – 210 камня. Прочность – 500 единиц (HP).
Железное окно: стоимость улучшения – 140 металлических фрагментов. Прочность – 1000 единиц (HP).
Бронированное окно: стоимость улучшения – 18 металла высокого качества. Прочность – 2000 единиц (HP).
*Все окна, как и остальные строительные блоки, ломаются точно так же.
Дверной проём:
Дверные проёмы служат местом, куда устанавливаются двери. Бывают соломенные, деревянные, каменные, железные, бронированные. Также имеют 2 стороны – правильную и неправильную. По неправильной стороне дверного проёма проходит больше урона.
Соломенный дверной проём: стоимость постройки – 35 дерева. Прочность – 10 единиц (HP).
Деревянный дверной проём: стоимость улучшения – 140 дерева. Прочность – 250 единиц (HP).
Каменный дверной проём: стоимость улучшения – 210 камня. Прочность — 500 единиц (HP).
Железный дверной проём: стоимость улучшения – 140 металлических фрагментов. Прочность – 1000 единиц (HP).
Бронированный дверной проём: стоимость улучшения – 18 металла высокого качества. Прочность – 2000 единиц (HP).
*Все дверные проёмы, как и остальные строительные блоки (стены) ломаются точно так же.
Потолки:
В Rust’е существует 2 типа потолков – квадратный и треугольный, они могут существовать в виде: соломенного, деревянного, каменного, железного и бронированного потолка.
Соломенный треугольный потолок: стоимость постройки – 13 дерева. Точно такой же, как и соломенный квадратный потолок, только треугольный. Прочность – 10 единиц (HP).
Деревянный квадратный потолок: стоимость улучшения – 100 дерева. Хорошо горит, можно сломать примитивными орудиями труда. Прочность – 250 единиц (HP).
Деревянный треугольный потолок: стоимость улучшения – 50 единиц. Прочность – 250 единиц (HP).
Каменный квадратный потолок: стоимость улучшения – 150 камня. Хорошо ломается каменными патронами. Прочность – 500 единиц (HP).
Каменный треугольный потолок: стоимость улучшения – 75 камня. Прочность – 500 единиц (HP).
Железный квадратный потолок: стоимость улучшения – 100 металлических фрагментов. Чтобы сломать такой потолок, потребуется намного больше времени и ресурсов, чем каменный. Прочность – 1000 единиц (HP).
Железный треугольный потолок: стоимость улучшения – 50 металлических фрагментов. Прочность – 1000 единиц (HP).
Бронированный квадратный потолок: стоимость улучшения – 13 металла высокого качества. Ломать этот потолок смысла не имеет, если только добить пару последних HP. Прочность – 2000 единиц (HP).
Бронированный треугольный потолок: стоимость улучшения – 7 металла высокого качества. Прочность – 2000 единиц (HP).
*Треугольные потолки являются аналогами квадратных и ломаются точно так же.
Каркасы:
В Rust существует 2 типа каркасов – это настенный и потолочный каркас, могут существовать в виде соломенного, деревянного, каменного, железного и бронированного каркаса.
Настенный каркас: обычно служит для расстановки в него двойных дверей, гаражных дверей, витрин и т.п.
Соломенный настенный каркас: стоимость постройки – 25 дерева. Прочность – 10 единиц (HP).
Деревянный настенный каркас: стоимость улучшения – 100 дерева. Прочность – 250 единиц (HP).
Каменный настенный каркас: стоимость улучшения – 150 камня. Прочность – 500 единиц (HP).
Железный настенный каркас: стоимость улучшения – 100 металлических фрагментов. Прочность – 1000 единиц (HP).
Бронированный настенный каркас: стоимость улучшения – 13 металла высокого качества. Прочность – 2000 единиц (HP).
Потолочный каркас: служит для поддержания люков, решеток.
Соломенный потолочный каркас: стоимость постройки – 25 дерева. Прочность – 10 единиц (НР).
Деревянный потолочный каркас: стоимость улучшения – 100 дерева. Прочность – 250 единиц (HP).
Каменный потолочный каркас: стоимость улучшения – 150 камня. Прочность – 500 единиц (HP).
Железный потолочный каркас: стоимость улучшения – 100 металлических фрагментов. Прочность – 1000 единиц (HP).
Бронированный потолочный каркас: стоимость улучшения – 13 металла высокого качества. Прочность – 2000 единиц (HP).
*Все каркасы разрушаются так же, как и остальные строительные блоки.
Лестницы:
Всего в Rust существует 2 типа лестниц – это U-образная лестница и L-образная лестница, они могут быть соломенными, деревянными, каменными, железными и бронированными.
Соломенная лестница: стоимость постройки – 50 дерева. Прочность – 10 единиц (НР).
Деревянная лестница: стоимость улучшения – 200 дерева. Прочность – 250 единиц (НР).
Каменная лестница: стоимость улучшения – 300 камня. Прочность – 500 единиц (НР).
Железная лестница: стоимость улучшения – 200 металлических фрагментов. Прочность – 1000 единиц (НР).
Бронированная лестница: стоимость улучшения – 25 металла высокого качества. Прочность – 2000 единиц (НР).
Крыши:
В расте существуют крыши, используемые для отстрела и некоторых антирейд систем. Крыши, как и все остальные строительные блоки, могут быть: соломенными, деревянными, каменными, железными и бронированными.
Крыши
Соломенная крыша: стоимость постройки – 50 дерева. Прочность – 10 единиц (НР).
Деревянная крыша: стоимость улучшения – 200 дерева. Прочность – 250 единиц (НР).
Каменная крыша: стоимость улучшения – 300 камня. Прочность – 500 единиц (НР).
Металлическая крыша: стоимость улучшения – 200 металлических фрагментов. Прочность – 1000 единиц (НР).
Бронированная крыша: стоимость улучшения – 25 металла высокого качества. Прочность – 2000 единиц (НР).
*Крыши, особенно металлические, очень хорошо делать для отстрельных этажей, из них можно сделать маленький пиксель, из которого можно спокойно убивать противников.
Треугольные крыши
Соломенная крыша: стоимость постройки – 25 дерева. Прочность – 10 единиц (НР).
Деревянная крыша: стоимость улучшения – 100 дерева. Прочность – 250 единиц (НР).
Каменная крыша: стоимость улучшения – 150 камня. Прочность – 500 единиц (НР).
Металлическая крыша: стоимость улучшения – 100 металлических фрагментов. Прочность – 1000 единиц (НР).
Бронированная крыша: стоимость улучшения – 13 металла высокого качества. Прочность – 2000 единиц (НР).
Строительные блоки после обновления Companion app UPDATE
Обновление “Companion app UPDATE” привнесло в игру несколько новых строительных блоков – рампы, ступени, треугольный потолочный каркас, а также 2 вида винтовых лестниц.
Рампа
Рампа – строительный блок, созданный для подъёма модульных автомобилей на более высокие этажи.
Стоимость установки рамы из соломы – 25 единиц дерева.
Стоимость улучшения до дерева – 100 единиц дерева. До камня – 150 единиц камня. До металла – 100 фрагментов металла. До бронированного уровня – 13 единиц МВК.
Рампы
Ступени
Ступени позволяют игроку перемещаться с одного уровня на другой, правда поднимут они разве что на пол уровня.
Стоимость установки ступеней из соломы – 25 единиц дерева.
Стоимость улучшения до дерева – 100 единиц дерева. До камня – 150 единиц камня. До металла – 100 фрагментов металла. До бронированного уровня – 13 единиц МВК.
Ступени
Треугольный потолочный каркас
Треугольный потолочный каркас – это аналог обычного потолочного каркаса.
Стоимость установки треугольного потолочного каркаса из соломы – 13 единиц дерева.
Стоимость улучшения до дерева – 50 единиц дерева. До камня – 75 единиц камня. До металла –50 фрагментов металла. До бронированного уровня – 7 единиц МВК.
Треугольные потолочные каркасы
Винтовые лестницы
Всего в игре есть 2 типа винтовых лестниц – квадратные и треугольные. Преимущество винтовых лестниц в том, что их можно устанавливать друг на друга.
Стоимость установки винтовой лестницы из соломы – 50 единиц дерева.
Стоимость улучшения до дерева – 200 единиц дерева. До камня – 300 единиц камня. До металла – 200 фрагментов металла. До бронированного уровня – 25 единиц МВК.
Винтовые лестницы
Треугольные винтовые лестницы
Разрушаемость блоков взрывчаткой
Взрывчатка | Деревянный блок | Каменный блок | Железный блок | Бронированный блок |
С4 | 1 | 2 | 4 | 8 |
Ракета | 2 | 4 | 8 | 16 |
Разрывной патрон | 48 | 182 | 400 | 800 |
Сумка с зарядом | 3 | 10 | 23 | 46 |
Бобовая граната | 13 | 46 | 112 | 223 |
F1 граната | 125 | 250 | 1000 | 2000 |
Гниение строительных блоков:
В расте все строительные блоки могут разрушаться, если они не привязаны к шкафу или в шкафу нет ресурсов, чтобы содержать те или иные строительные блоки. К примеру, начинает гнить каменные блоки, значит в шкафу нет камня. Время разрушения блоков: