A Rust 1.99.0 kiadása. A Microsoft a Rust-ot alapnyelvek közé sorolta

Megjelent a Rust 1.99 programozási nyelv kiadása, amelyet a Mozilla projekt alapozott meg, de jelenleg egy független, nonprofit szervezet, a Rust Foundation állítja elő. A nyelv a memória biztonságos kezelésére összpontosít, és eszközöket biztosít a feladatok magas fokú párhuzamos végrehajtásához, mindezt a szemétgyűjtő és futási idő (runtime) nélkül (a futási idő leredukálódik az alapvető inicializálásra és a standard könyvtár kísérésére).

A Rust memória kezelésének módszerei arra irányulnak, hogy kiküszöböljék a pointerekkel végzett manipuláció során fellépő hibákat, és megvédjék a memória alacsony szintű használatából adódó problémáktól, mint például a már felszabadított memória területekhez való hozzáférés, a null pointerek dereferálása, a buffer túlfolyás és hasonlók. A könyvtárak terjesztésére, a fordítás biztosítására és a projektek függőségeinek kezelésére a Cargo csomagkezelő fejlődik.

A memória biztonságos kezelése a Rustban a fordítási időben történik, a hivatkozások ellenőrzésén, az objektumok tulajdonjogának nyomon követésén, az objektumok élettartamának (láthatóságának) figyelembevételén és a memória hozzáférésének helyességének értékelésén keresztül a kód futtatásakor. A Rust emellett eszközöket biztosít az egész számok túllépésének elleni védelemhez, kötelezővé teszi a változók értékeinek inicializálását használat előtt, jobban kezeli a hibákat a standard könyvtárban, alkalmazza a változatlan (immutable) hivatkozások és változók fogalmát alapértelmezés szerint, és erős statikus típussal minimalizálja a logikai hibákat.

Főbb újítások:

  • Lehetővé vált a Rust nyelven variábilis számú argumentumokkal rendelkező funkciók létrehozása (variadic), amelyeket C nyelvű projektekből hívhatunk meg (C ABI). Az ilyen funkciók paraméterlistájának utolsó elemén a „...” konstrukciót lehet megadni, amelyet a Rust a VaList nevű speciális típussal dolgoz fel, hasonlóan a C nyelvben használt va_list-hoz. unsafe extern "C" fn sum(mut args: ...) -> i32 { let a = unsafe { args.next_arg::() }; let b = unsafe { args.next_arg::() }; a + b } fn foo() -> i32 { unsafe { sum(0i32, 2i32) } }
  • Stabilizálták a Layout::for_value_raw, mem::size_of_val_raw és mem::align_of_val_raw függvényeket, amelyek lehetővé teszik a méret és az igazítás biztonságos meghatározását nyers mutatók (raw pointer) esetén, beleértve a dinamikus méretű típusok, mint például szeletek (slices) esetén is, anélkül, hogy adatokra hivatkozásokat kellene létrehozni.
  • A dokumentációba felvették a javaslatot, hogy kerülni kell a memóriának a Box::leak hívásával történő felszabadítását, amelyre statikus hivatkozást kaptunk korlátlan élettartammal (&'static), mivel ez potenciálisan problémákhoz vezethet a jövőbeli fordítói optimalizálások és a memóriaallokációs mechanizmusok összeegyeztethetősége miatt. A statikus hivatkozás létrehozása helyett, amely a tulajdon átvitelére szolgál, javasolt a nyers mutatók használata, például a Box::into_non_null hívásával.
  • Új API-k kerültak a stabil kiadások közé, beleértve a metódusok és típusimplementációk stabilizálását:
    • IntoIterator for Box
    • IntoIterator for &Box
    • IntoIterator for &mut Box
    • VecDeque::retain_back
    • core::ffi::VaList
    • Box::into_non_null
    • Box::from_non_null
    • Vec::into_parts
    • Vec::from_parts
    • core::mem::size_of_val_raw
    • core::mem::align_of_val_raw
    • core::alloc::Layout::for_value_raw
    • String::from_utf8_lossy_owned
    • string::FromUtf8Error::into_utf8_lossy
    • FusedIterator for StepBy
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • A cargo package manager has implemented a new built-in profile named "debug", similar to the "dev" profile (in the future, debugging and development capabilities are planned to be separated). Incremental compilation is disabled by default when building in CI.
  • The target platform riscv64-unknown-linux-musl has been upgraded to the second support level, which implies a guarantee for building, but no guarantees when passing the test suite.

Érdemes megemlíteni a Rust-tal kapcsolatos, nemrégiben bejelentett projekteket és eseményeket:

  • Microsoft has elevated Rust to a first-level language and will provide full support at all stages of development within the company. Previously, first-level support was available for C++, C#, and TypeScript. It is noted that Rust is already being used in over 100 Microsoft repositories. Among other things, components written in Rust are already used in products like Microsoft 365 and Copilot, and a separate backend rustc_codegen_utc for Rust has been prepared for the MSVC compiler, based on the rustc compiler.

    The primary purpose of using Rust at Microsoft is to enhance the security of code that is critical from a security perspective. According to the Chief Technology Officer of Microsoft Azure, about 70% of all vulnerabilities in Windows are caused by memory handling issues that can be avoided with Rust.

  • Google has removed the old implementation of the Binder inter-process communication mechanism, written in C, from the Linux kernel in favor of the new Binder IPC driver, rewritten in Rust. It is noted that over 15 years of the old driver has accumulated significant technical debt and an abundance of complexities that hindered debugging, maintenance, and the addition of new features. The Binder IPC driver in Rust is now recognized as the primary implementation and is no longer presented as an experimental development.
  • The release of Arti 2.7.0, a Tor toolkit implementation written in Rust, has been published. When the Arti code reaches a level capable of fully replacing the C variant, Tor developers intend to elevate Arti to the status of the primary Tor implementation and gradually discontinue support for the C implementation. In the new version, enhancements for relays have been introduced. szerverek könyvtár (Directory Authority), amely dokumentumok elemzésével, könyvtárak tükörszerverének támogatásával és DNS-forgalom feldolgozásával foglalkozik. RPC megvalósítás került hozzáadásra a konfigurációk módosításához és ellenőrzéséhez. Számos sebezhetőség megszüntetve — az onion-szolgáltatások adminisztrátorainak sürgősen frissíteniük kell a rendszereiket.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster