Rust 1.68 Rilaxx tal-Lingwa ta' Programmazzjoni

Ġiet rilaxxata l-lingwa ta 'programmar għal skopijiet ġenerali Rust 1.68, imwaqqfa mill-proġett Mozilla iżda issa żviluppat taħt l-awspiċi tal-organizzazzjoni indipendenti mingħajr skop ta' qligħ Rust Foundation. Il-lingwa tiffoka fuq is-sikurezza tal-memorja u tipprovdi l-mezzi biex tikseb paralleliżmu għoli tax-xogħol filwaqt li tevita l-użu ta 'ġbir ta' żibel u runtime (runtime huwa mnaqqas għal inizjalizzazzjoni bażika u manutenzjoni tal-librerija standard).

Il-metodi tal-immaniġġjar tal-memorja ta 'Rut isalvaw lill-iżviluppatur minn żbalji meta jimmanipula l-indikazzjonijiet u jipproteġu kontra problemi li jinqalgħu minħabba t-tqandil tal-memorja ta' livell baxx, bħall-aċċess għal żona tal-memorja wara li tkun ġiet meħlusa, dereferencing null pointers, buffer overruns, eċċ. Biex iqassam il-libreriji, jipprovdi bini u jimmaniġġja d-dipendenzi, il-proġett jiżviluppa l-maniġer tal-pakkett tat-Tagħbija. Ir-repożitorju crates.io huwa appoġġjat għall-hosting tal-libreriji.

Is-sikurezza tal-memorja hija pprovduta f'Rut fil-ħin tal-kompilazzjoni permezz ta 'verifika ta' referenza, iżżomm kont tal-pussess tal-oġġett, iżżomm kont tal-ħajja tal-oġġetti (ambiti), u tivvaluta l-korrettezza tal-aċċess għall-memorja waqt l-eżekuzzjoni tal-kodiċi. Rust jipprovdi wkoll protezzjoni kontra overflows integer, jeħtieġ inizjalizzazzjoni obbligatorja ta 'valuri varjabbli qabel l-użu, jimmaniġġja l-iżbalji aħjar fil-librerija standard, japplika l-kunċett ta' referenzi immutabbli u varjabbli b'mod awtomatiku, joffri tajpjar statiku qawwi biex jimminimizza l-iżbalji loġiċi.

Innovazzjonijiet ewlenin:

  • В пакетном менеджере Cargo и репозитории crates.io стабилизирована поддержка протокола Sparse, определяющего новый способ работы с индексом, в котором отражены доступные версии всех существующих в репозитории пакетов. Новый протокол позволяет существенно повысить скорость работы с crates.io и решить проблемы с масштабированием при дальнейшем росте числа пакетов в репозитории.

    Для сокращения задержек, возникающих из-за загрузки полного индекса, в Sparse вместо доступа к индексу с использованием Git задействована прямая загрузка по HTTPS только необходимых индексных данных, охватывающих зависимости конкретного проекта. Для отдачи индексных данных задействован новый сервис index.crates.io. По умолчанию новый протокол планируют задействовать в ветке Rust 1.70, а до этого для его включения можно установить переменную окружения «CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse» или добавить в секцию «[registries.crates-io]» файла .cargo/config.toml параметр ‘protocol = «sparse»‘.

  • Добавлен макрос «pin!», позволяющий создать структуру Pin<&mut T> из выражения «T» с локальным закреплением его состояния (в отличие от Box::pin не выделяет память в куче, а выполняет привязку на уровне стека).
  • Предложен применяемый по умолчанию обработчик ошибок распределения памяти, применяемый при использовании штатного пакета alloc. Приложения в которых включается только alloc (без std) при сбоях выделения памяти отныне будут вызывать обработчик «panic!», который при желании может быть перехвачен при помощи «#[panic_handler]». Программы, использующие библиотеку std, как и раньше будут выводить информацию об ошибке в stderr и аварийно завершать выполнение.
  • Porzjon ġdid tal-API ġie mċaqlaq għall-kategorija ta 'stabbli, inklużi l-metodi u l-implimentazzjonijiet tal-karatteristiċi ġew stabbilizzati:
    • {core,std}::pin::pin!
    • impl From<bool> for {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut для PathBuf
  • Признак «const», определяющий возможность использования в любом контексте вместо констант, применён в функции VecDeque::new.
  • Для работы на платформе Android теперь требуется как минимум NDK r25 (API 19), т.е. минимальная поддерживаемая версия Android повышена до 4.4 (KitKat).
  • Реализован третий уровень поддержки для платформы Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). Третий уровень подразумевает базовую поддержку, но без автоматизированного тестирования, публикации официальных сборок и проверки возможности сборки кода.

Sors: opennet.ru

Żid kumment