Релиз языка программирования Rust 1.32
18 января 2019 года
Состоялся релиз языка системного программирования Rust 1.32, развиваемого проектом Mozilla. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime.
Автоматическое управление памятью в Rust избавляет разработчика от манипулирования указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo, позволяющий получить нужные для программы библиотеки в один клик. Для размещения библиотек поддерживается репозиторий crates.io.
В подготовке нового выпуска приняли участие 152 разработчика. Основные новшества:
- Добавлен новый макрос "dbg!", позволяющий упростить наблюдение за состоянием переменных в отладочных целях. Кроме непосредственного значения переменной, предложенный макрос также показывает имя файла, номер строки и название переменной, что делает его более удобным инструментом для отладки, чем вывод при помощи "println". Информация выводится в поток "stderr". Макрос также можно применять для анализа вычисления выражений и условных операторов, например, можно указывать "if dbg!(n
- Прекращено использование по умолчанию библиотеки распределения памяти jemalloc в пользу штатных системных функций выделения и освобождения блоков памяти. Несмотря на то, что jemalloc обычно обеспечивает более высокую производительность, его применение приводит к увеличению размера исполняемого файла приблизительно на 300 Кб. Кроме того, jemalloc специфичен для Unix-подобных систем и в некоторых ситуациях приводит к возникновению проблем. При необходимости продолжения использования jemalloc теперь нужно явно подключать пакет jemallocator;
- Пути к модулям в выражении "use", не начинающиеся с ключевых слов "super", "self" и "crate", теперь приводят к извлечению определённого в модуле элемента (структуры, перечисления и т.п.), до попытки определения внешнего пакета. Например, указание "use Color::*;" при наличии определения "enum Color { Red, Green, Blue };" до выражения "use", приведёт к импорту вариантов значений перечисления "Color";
- В макросы добавлен новый проверочный признак "literal", позволяющий определить является ли переменная литералом, независимо от типа (строковым, числовым, символьным);
- В определениях макросов теперь можно использовать оператор "?", позволяющий определить, что шаблон встречается 0 или 1 раз, по аналогии с тем как операторы "*" и "+" проверяют наличие шаблона 0 и более раз или один и более раз;
- В разряд стабильных переведена новая порция API, в том числе стабилизированы методы to_be_bytes (big endian), to_le_bytes (little endian) и to_ne_bytes (native) в модулях i8, i16, i32, i64, i128, isize, u8, u16, u32, u64, u128 и usize;
- 19 различных функций определены с признаком "const" и могут применяться не только как обычные функции, но и использоваться в любом контексте вместо констант;
- В пакетном менеджере Cargo обеспечена возможность указания имени пользователя внутри URL реестра и добавлена команда "cargo c", которая является сокращённым псевдонимом команды "cargo check".
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.