ரஸ்ட் 1.57 நிரலாக்க மொழி வெளியீடு

கணினி நிரலாக்க மொழியான ரஸ்ட் 1.57 இன் வெளியீடு, மொஸில்லா திட்டத்தால் நிறுவப்பட்டது, ஆனால் இப்போது சுயாதீனமான இலாப நோக்கற்ற அமைப்பான ரஸ்ட் அறக்கட்டளையின் அனுசரணையில் உருவாக்கப்பட்டது, வெளியிடப்பட்டது. மொழி நினைவக பாதுகாப்பில் கவனம் செலுத்துகிறது, தானியங்கி நினைவக நிர்வாகத்தை வழங்குகிறது, மேலும் குப்பை சேகரிப்பான் அல்லது இயக்க நேரத்தைப் பயன்படுத்தாமல் உயர் பணி இணைநிலையை அடைவதற்கான வழிமுறைகளை வழங்குகிறது (இயக்க நேரம் நிலையான நூலகத்தின் அடிப்படை துவக்கம் மற்றும் பராமரிப்புக்கு குறைக்கப்படுகிறது).

ரஸ்டின் தானியங்கி நினைவக மேலாண்மை சுட்டிகளை கையாளும் போது ஏற்படும் பிழைகளை நீக்குகிறது மற்றும் குறைந்த அளவிலான நினைவக கையாளுதலில் இருந்து எழும் சிக்கல்களிலிருந்து பாதுகாக்கிறது, அதாவது நினைவகப் பகுதியை விடுவித்த பிறகு அணுகுவது, பூஜ்ய சுட்டிக்காட்டி குறைபாடுகள், இடையக மீறல்கள் போன்றவை. நூலகங்களை விநியோகிக்க, அசெம்பிளியை உறுதிப்படுத்த மற்றும் சார்புகளை நிர்வகிக்க, திட்டம் சரக்கு தொகுப்பு மேலாளரை உருவாக்குகிறது. நூலகங்களை வழங்குவதற்கு crates.io களஞ்சியம் துணைபுரிகிறது.

முக்கிய கண்டுபிடிப்புகள்:

  • Стабилизировано использование макроса «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
  • Стабилизировано использование try_reserve для типов Vec, String, HashMap, HashSet и VecDeque, что позволяет заранее резервировать место для определённого числа элементов заданного типа для того, чтобы снизить частоту выполнения операций выделения памяти и избежать аварийного завершения в процессе работы из-за нехватки памяти.
  • Разрешено указание макросов с фигурными скобками в выражениях подобных «m!{ .. }.method()» и «m!{ .. }?».
  • Оптимизировано выполнение функций File::read_to_end и read_to_string.
  • யூனிகோட் விவரக்குறிப்புக்கான ஆதரவு பதிப்பு 14.0 க்கு புதுப்பிக்கப்பட்டது.
  • Расширено число функций, помеченных «#[must_use]» для вывода предупреждения в случае игнорирования возвращаемого значения, что помогает выявить ошибки, вызванные предположением, что функция изменит значения, а не вернёт новое значение.
  • Добавлен экспериментальный бэкенд для генерации кода с использованием libgccjit.
  • API இன் ஒரு புதிய பகுதி நிலையான வகைக்கு நகர்த்தப்பட்டது, இதில் பண்புகளின் முறைகள் மற்றும் செயலாக்கங்கள் உறுதிப்படுத்தப்பட்டுள்ளன:
    • [T; N]::as_mut_slice
    • [T; N]::as_slice
    • collections::TryReserveError
    • HashMap::try_reserve
    • HashSet::try_reserve
    • String::try_reserve
    • String::try_reserve_exact
    • Vec::try_reserve
    • Vec::try_reserve_exact
    • VecDeque::try_reserve
    • VecDeque::try_reserve_exact
    • Iterator::map_while
    • iter::MapWhile
    • proc_macro::is_available
    • Command::get_program
    • Command::get_args
    • Command::get_envs
    • Command::get_current_dir
    • CommandArgs
    • CommandEnvs
  • Признак «const», определяющий возможность использования в любом контексте вместо констант, применён в функции hint::unreachable_unchecked.
  • Реализован третий уровень поддержки для платформ 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. Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.

ஆதாரம்: opennet.ru

கருத்தைச் சேர்