Руст 1.65 Издание за програмски јазик

Објавено е објавувањето на програмскиот јазик за општа намена Rust 1.65, основан од проектот Mozilla, но сега развиен под покровителство на независната непрофитна организација Rust Foundation. Јазикот се фокусира на безбедноста на меморијата и обезбедува средства за постигнување на висок паралелизам на работните места, притоа избегнувајќи употреба на собирач на ѓубре и време на работа (времето на работа е сведено на основна иницијализација и одржување на стандардната библиотека).

Методите за ракување со меморијата на Rust го спасуваат развивачот од грешки при манипулирање со покажувачите и го штитат од проблеми што се јавуваат поради ракување со меморијата на ниско ниво, како што се пристап до мемориската област откако ќе се ослободи, дереференцирање на нула покажувачи, пречекорувања на баферот итн. За да се дистрибуираат библиотеки, да се обезбедат градби и да управуваат со зависности, проектот го развива менаџерот на пакети Cargo. Репозиториумот crates.io е поддржан за хостирање библиотеки.

Безбедноста на меморијата е обезбедена во Rust за време на компајлирањето преку проверка на референци, следење на сопственоста на објектот, следење на животниот век на објектите (обеми) и проценка на исправноста на пристапот до меморијата за време на извршувањето на кодот. Rust исто така обезбедува заштита од прелевање на цели броеви, бара задолжителна иницијализација на вредностите на променливите пред употреба, подобро се справува со грешките во стандардната библиотека, стандардно го применува концептот на непроменливи референци и променливи, нуди силно статичко пишување за да се минимизираат логичките грешки.

Главните иновации:

  • Додадена е поддршка за генерички поврзани типови (GAT, Generic Associated Types), кои овозможуваат креирање псевдоними на типови поврзани со друг тип и ви дозволуваат да ги поврзувате конструкторите на типови со карактеристики. особина Foo { тип Бар; }
  • Изразот „нека ... друго“ е имплементиран, што ви овозможува да ја проверите состојбата за совпаѓање на шаблонот директно во изразот „нека“ и да извршите произволен код ако шаблонот не се совпаѓа. нека Ok(count) = u64::from_str(count_str) else { паника!("Не може да се анализира цел број: '{count_str}'"); };
  • Дозволете употреба на изјава за пауза за предвремено излегување од именуваните блокови, користејќи го името на блокот (етикетата) за да се идентификува блокот што треба да се прекине. нека резултат = 'блок: {do_thing(); if condition_not_met() { break ‘block 1; } do_next_thing(); if condition_not_met() { break ‘block 2; } do_last_thing(); 3};
  • За Linux, додадена е можноста за одделно зачувување на информации за дебагирање (split-debuginfo), претходно достапна само за платформата macOS. При одредување на опцијата „-Csplit-debuginfo=unpacked“, податоците за отстранување грешки во формат DWARF ќе се зачуваат во неколку посебни објектни датотеки со екстензија „.dwo“. Наведувањето „-Csplit-debuginfo=packed“ ќе создаде единствен пакет во формат „.dwp“ кој ги вклучува сите податоци за дебагирање на проектот. За да ги интегрирате информациите за отстранување грешки директно во делот .debug_* од објектите ELF, можете да ја користите опцијата „-Csplit-debuginfo=off“.
  • Нов дел од API е преместен во категоријата стабилни, вклучувајќи ги и методите и имплементацијата на карактеристиките се стабилизирани:
    • std::backtrace::backtrace
    • Врзано::as_ref
    • std::io:: read_to_string
    • ::cast_mut
    • ::cast_const
  • Атрибутот „const“, кој ја одредува можноста да се користи во кој било контекст наместо константи, се користи во функциите ::offset_from и ::offset_from
  • Како дел од последната фаза на пренесување на имплементацијата на протоколот LSP (јазичен серверски протокол) на анализатор на 'рѓа, застарената имплементација на Rust Language Server (RLS) беше заменета со никулец сервер кој издава предупредување со предлог да се префрлите на со помош на анализатор на 'рѓа.
  • За време на компилацијата, овозможена е поддршка за внатрешно распоредување на средно кодот MIR, што го забрзува компилацијата на типични пакети за гајба за 3-10%.
  • За да се забрза планираното изработка, менаџерот на пакети Cargo обезбедува сортирање на работните места кои чекаат да се извршат во редот.

Дополнително, можете да го забележите интервјуто за употребата на јазикот Rust во Volvo за развој на компоненти на автомобилски информациски системи. Нема планови за препишување на постоечки и тестиран код во Rust, но за нов код, Rust е една од преферираните опции за подобрување на квалитетот по пониски трошоци. Работни групи поврзани со употребата на јазикот Rust се создадени и во автомобилските здруженија AUTOSAR (AUTomotive Open System ARchitecture) и SAE (Здружение на автомобилски инженери).

Дополнително, Дејвид Клајдермахер, потпретседател за инженерство на Google, зборуваше за преводот на кодот што се користи во Android платформата за управување со клучевите за шифрирање во Rust, како и за употребата на Rust во имплементацијата на протоколот DNS преку HTTPS во стекот за UWB- чипови (Ultra-Wideband) и во рамката за виртуелизација (Android Virtualization Framework) поврзана со Tensor G2 чипот. Нови стекови за Bluetooth и Wi-Fi, препишани во Rust, исто така се развиваат за Android. Општата стратегија е постепено зајакнување на безбедноста, прво со конвертирање на најранливите и највиталните софтверски компоненти во Rust, а потоа со проширување на други поврзани потсистеми. Минатата година, јазикот Rust беше вклучен во списокот на јазици дозволени за развој на платформата Android.

Извор: opennet.ru

Додадете коментар