Главная
Форумы
Новые сообщения
Поиск сообщений
Что нового?
Новые сообщения
Новые ресурсы
Последняя активность
Ресурсы
Последние отзывы
Поиск ресурсов
Помощь форуму
ЧатTG
Вход
Регистрация
Что нового?
Поиск
Поиск
Искать только в заголовках
От:
Новые сообщения
Поиск сообщений
Меню
Вход
Регистрация
Приложение
Установить
Форумы
Новости
Новости из сети интернет
Выпуск языка програмирования Rust 1.57
JavaScript отключён. Чтобы полноценно использовать наш сайт, включите JavaScript в своём браузере.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать
другой
.
Ответить в теме
Сообщение
[QUOTE="Candellmans, post: 307200, member: 10598"] [URL='https://blog.rust-lang.org/2021/12/02/Rust-1.57.0.html']Опубликован[/URL] релиз языка системного программирования [URL='http://www.rust-lang.org/']Rust 1.57[/URL], основанного проектом Mozilla, но ныне [URL='https://www.opennet.ru/opennews/art.shtml?num=54555']развиваемого[/URL] под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью, обеспечивает автоматическое управление памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования [URL='https://prev.rust-lang.org/en-US/faq.html#is-rust-garbage-collected']сборщика мусора[/URL] и [URL='https://prev.rust-lang.org/en-US/faq.html#does-rust-have-a-runtime']runtime[/URL] (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки). Автоматическое управление памятью в Rust избавляет разработчика от ошибок при манипулировании указателями и защищает от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер [URL='http://blog.rust-lang.org/2014/11/20/Cargo.html']Cargo[/URL]. Для размещения библиотек поддерживается репозиторий [URL='https://crates.io/']crates.io[/URL]. Основные [URL='https://github.com/rust-lang/rust/blob/master/RELEASES.md']новшества[/URL]: [LIST] [*]Стабилизировано использование макроса "panic!" в контекстах, создаваемых при компиляции, таких как объявления "const fn". Кроме того, помимо использования "panic!" в const-объявлениях разрешено использование макроса "assert!" и некоторых других API стандартной библиотеки. Стабилизация пока не охватывает всю инфраструктуру форматирования, поэтому в текущем виде макрос "panic!" может использоваться только со статическими строками (panic!("...")) или с одним интерполированным значением "&str" при подстановке (panic!("{}", a)), которое должно ограничиваться подстановкой "{}" без спецификаторов форматирования и других типажей. В будущем применимость макросов в константных контекстах будет расширена, но стабилизированных возможностей уже достаточно для выполнения assert-проверок на этапе компиляции: const _: () = assert!(std::mem::size_of::<u64>() == 8); const _: () = assert!(std::mem::size_of::<u8>() == 1); [*]В пакетном менеджере Cargo разрешено использование профилей с произвольными именами, не ограниченными "dev", "release", "test" и "bench". Например, для включения оптимизации на этапе связывания (LTO) только при формирования финальных сборок продукта можно в Cargo.toml создать профиль "production" и добавить в него флаг "lto = true". При этом при определении собственных профилей обязательно требуется указать существующий профиль для наследования из него настроек по умолчанию. В примере ниже создаётся профиль "production", который дополняет профиль "release" включением флага "lto = true". Сам профиль активируется при вызове cargo с опцией "--profile production", а сборочные артефакты будут размещены в каталоге "target/production". [profile.production] inherits = "release" lto = true [*]Стабилизировано использование [URL='https://doc.rust-lang.org/std/vec/struct.Vec.html#method.try_reserve']try_reserve[/URL] для типов Vec, String, HashMap, HashSet и VecDeque, что позволяет заранее резервировать место для определённого числа элементов заданного типа для того, чтобы снизить частоту выполнения операций выделения памяти и избежать аварийного завершения в процессе работы из-за нехватки памяти. [*]Разрешено указание макросов с фигурными скобками в выражениях подобных "m!{ .. }.method()" и "m!{ .. }?". [*]Оптимизировано выполнение функций File::read_to_end и read_to_string. [*]Поддержка спецификации Unicode обновлена до версии 14.0. [*]Расширено число функций, помеченных "#[must_use]" для вывода предупреждения в случае игнорирования возвращаемого значения, что помогает выявить ошибки, вызванные предположением, что функция изменит значения, а не вернёт новое значение. [*]Добавлен экспериментальный бэкенд для генерации кода с использованием [URL='https://www.opennet.ru/opennews/art.shtml?num=38075']libgccjit[/URL]. [*]В разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей: [LIST] [*][URL='https://doc.rust-lang.org/std/primitive.array.html#method.as_mut_slice'][T; N]::as_mut_slice[/URL] [*][URL='https://doc.rust-lang.org/std/primitive.array.html#method.as_slice'][T; N]::as_slice[/URL] [*][URL='https://doc.rust-lang.org/std/collections/struct.TryReserveError.html']collections::TryReserveError[/URL] [*][URL='https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.try_reserve']HashMap::try_reserve[/URL] [*][URL='https://doc.rust-lang.org/std/collections/hash_set/struct.HashSet.html#method.try_reserve']HashSet::try_reserve[/URL] [*][URL='https://doc.rust-lang.org/alloc/string/struct.String.html#method.try_reserve']String::try_reserve[/URL] [*][URL='https://doc.rust-lang.org/alloc/string/struct.String.html#method.try_reserve_exact']String::try_reserve_exact[/URL] [*][URL='https://doc.rust-lang.org/std/vec/struct.Vec.html#method.try_reserve']Vec::try_reserve[/URL] [*][URL='https://doc.rust-lang.org/std/vec/struct.Vec.html#method.try_reserve_exact']Vec::try_reserve_exact[/URL] [*][URL='https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.try_reserve']VecDeque::try_reserve[/URL] [*][URL='https://doc.rust-lang.org/std/collections/struct.VecDeque.html#method.try_reserve_exact']VecDeque::try_reserve_exact[/URL] [*][URL='https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.map_while']Iterator::map_while[/URL] [*][URL='https://doc.rust-lang.org/std/iter/struct.MapWhile.html']iter::MapWhile[/URL] [*][URL='https://doc.rust-lang.org/proc_macro/fn.is_available.html']proc_macro::is_available[/URL] [*][URL='https://doc.rust-lang.org/std/process/struct.Command.html#method.get_program']Command::get_program[/URL] [*][URL='https://doc.rust-lang.org/std/process/struct.Command.html#method.get_args']Command::get_args[/URL] [*][URL='https://doc.rust-lang.org/std/process/struct.Command.html#method.get_envs']Command::get_envs[/URL] [*][URL='https://doc.rust-lang.org/std/process/struct.Command.html#method.get_current_dir']Command::get_current_dir[/URL] [*][URL='https://doc.rust-lang.org/std/process/struct.CommandArgs.html']CommandArgs[/URL] [*][URL='https://doc.rust-lang.org/std/process/struct.CommandEnvs.html']CommandEnvs[/URL] [/LIST] [*]Признак "const", определяющий возможность использования в любом контексте вместо констант, применён в функции [URL='https://doc.rust-lang.org/std/hint/fn.unreachable_unchecked.html']hint::unreachable_unchecked[/URL]. [*]Реализован третий уровень поддержки для платформ armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi и armv7a-kmc-solid_asp3-eabihf. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода. [/LIST] Opennet [/QUOTE]
Вставить цитаты...
Проверка
Ответить
Форумы
Новости
Новости из сети интернет
Выпуск языка програмирования Rust 1.57
Сверху
Снизу