Vydání Rust 1.89. Přibližně 8 % balíčků src v Debian Sid je závislých na Rustu.

Byl zveřejněn vydání programovacího jazyka Rust 1.89, založeného projektem Mozilla, ale nyní rozvíjeného pod záštitou nezávislé neziskové organizace Rust Foundation. Jazyk se zaměřuje na bezpečné manipulace s pamětí a poskytuje nástroje pro dosažení vysokého paralelismu vykonávání úloh, přičemž se obejde bez použití garbage collectoru a runtime (runtime se omezuje na základní inicializaci a správu standardní knihovny).

Metody práce s pamětí v Rustu zbavují vývojáře chyb při manipulaci s ukazateli a chrání před problémy, které vznikají z nízkoúrovňové manipulace s pamětí, jako je přístup k oblasti paměti po jejím uvolnění, dereferencování nulových ukazatelů, přetečení bufferu atd. Pro distribuci knihoven, zajištění sestavení a správu závislostí se vyvíjí balíčkový manažer Cargo. Pro hostování knihoven je k dispozici repozitář crates.io.

Bezpečné manipulace s pamětí jsou v Rustu zajištěny během kompilace prostřednictvím kontroly referencí, sledování vlastnictví objektů, zohlednění doby života objektů (viditelnosti) a hodnocení správnosti přístupu k paměti při vykonávání kódu. Rust také poskytuje prostředky pro ochranu proti přetečení celých čísel, vyžaduje povinnou inicializaci hodnot proměnných před použitím, lépe zpracovává chyby ve standardní knihovně, aplikuje koncept neměnnosti (immutable) referencí a proměnných ve výchozím nastavení a nabízí silnou statickou typizaci pro minimalizaci logických chyb.

Hlavní novinky:

  • Byla umožněna možnost použití znaku „_“ jako argumentu generických parametrů s označením „const“ pro vyvozování hodnot těchto parametrů na základě okolního kontextu. pub fn all_false<const LEN: usize>() -> [bool; LEN] { [false; _] }
  • Bylo přidáno nové lint upozornění „mismatched_lifetime_syntaxes“ pro řešení problému nejednoznačného určení doby života ve funkcích při použití mechanismu „lifetime elision“ (automatically určuje dobu života odkazů, což umožňuje vyhnout se jejímu ručnímu uvedení). Upozornění provádí kontrolu toho, že vstupní a výstupní parametry funkce patří do stejné skupiny typů. Skupiny jsou vytvářeny na základě podpory explicitního určování doby života a schopnosti kompilátoru automaticky vyvodit dobu života (například u typů „&’a T“ a „ContainsLifetime<‘a>“ může explicitně existovat doba života, ale kompilátor nemůže automaticky určit dobu života; u typů „&T“, „&’_ T“ a „ContainsLifetime<‘_>“ je přípustné jak explicitní určení, tak automatické určování).
  • V atributu „target_feature“ pro systémy x86 byla implementována možnost kontroly podpory rozšířených instrukcí sha512, sm3, sm4, kl a widekl, stejně jako jednotlivých funkcí avx512. #[target_feature(enable = „avx512bw“)] pub fn cool_simd_code( /* .. */) -> /* … */ { /* … */ }
  • Bylo zajištěno spuštění doctest (testy zabudované do dokumentace) nejen pro aktuální cílovou platformu, ale také pro další platformy specifikované při spuštění správce balíčků „cargo“ („cargo test —doc —target other_target“).
  • Pro funkce ‘extern „C”‘ při sestavení pro cílovou platformu „wasm32-unknown-unknown“ byl implementován standardní C ABI pro WebAssembly.
  • S jistými výhradami ohledně kompatibility typů je povoleno používat typy i128 a u128 ve vnějších C funkcích (extern "C"), pro které byl dříve vykázán lint-varování "improper_ctypes_definitions".
  • Nová sada API byla převedena do stabilního stavu, včetně stabilizovaných metod a implementací typů:
    • Mnoho vestavěných funkcí v kompilátoru (intrinsics) pro procesory x86, včetně funkcí pro AVX512, SHA512, SM3 a SM4.
    • NonZero
    • File::lock
    • File::lock_shared
    • File::try_lock
    • File::try_lock_shared
    • File::unlock
    • NonNull::from_ref
    • NonNull::from_mut
    • NonNull::without_provenance
    • NonNull::with_exposed_provenance
    • NonNull::expose_provenance
    • OsString::leak
    • PathBuf::leak
    • Result::flatten
    • std::os::linux::net::TcpStreamExt::quickack
    • std::os::linux::net::TcpStreamExt::set_quickack

    Příznak „const“ byl použit ve funkcích:

    • ::as_mut_slice
    • ::eq_ignore_ascii_case
    • str::eq_ignore_ascii_case
  • Začal proces převodu cílové platformy «x86_64-apple-darwin» z prvního stupně podpory na druhý (Apple plánuje ukončit podporu architektury x86_64). První úroveň podpory zahrnuje vytváření binárních sestavení, provádění důkladného testování a poskytování nejvyšší záruky podpory platformy — každá změna v kompilátoru je ověřena provedením kompletního testovacího balíku. Druhá úroveň podpory zahrnuje záruku sestavení, ale bez garance při absolvování testovacího balíku.
  • Byla implementována třetí úroveň podpory platforem «loongarch32-unknown-none» a «loongarch32-unknown-none-softfloat». Třetí úroveň předpokládá základní podporu, ale bez automatizovaného testování, zveřejňování oficiálních sestavení a kontrolování možnosti sestavení kódu.

Dále je možné zmínit s Rustem související události a projekty:

  • Byla zveřejněna zpráva o stavu balíčků v programovacím jazyce Rust v Debianu. Je zmíněno, že ve větvi Debian Unstable (Sid) je přibližně 8 % src-b balíčků v hlavním repozitáři spojeno s instalačními závislostmi alespoň s jedním balíčkem «librust-*». V Debianu 12 bylo těchto balíčků 4,5 %. Bylo také zaznamenáno, že přes 3000 balíčků obsahuje kód v programovacím jazyce Rust, vyjmutý do balíčků librust-..-dev, a 150 src-balíčků dodává zkompilované spustitelné soubory nebo knihovny Rust.

    Mezi balíčky zajímavé pro Debian byly zmíněny sudo-rs, ntpd-rs, uutils, Sequoia, rpgp, hickory (DNS), Rustls, rav1d a fish. Volitelná podpora Rust byla implementována v APT, QEMU (virtiofsd), Linuxovém jádru a Muse, a očekává se také v LibreOffice. Pro převod crate-balíčků na src-balíčky Debianu byl realizován nástroj debcargo.

  • Byl prezentován projekt tmux-rs, který rozvíjí klon multiplexoru terminálu tmux (správce oken pro konzoli), přepsaný z C na Rust.
  • Vývojář ovladače Tyr ze společnosti Collabora publikoval článek o zařízeních s ovladači fungujícími na úrovni jádra pro GPU a principech vývoje těchto ovladačů v jazyce Rust.
  • Byla předvedena univerzální aplikace napsaná v jazyce Rust, která může běžet jak na CPU, tak na různých GPU platformách: CUDA pro NVIDIA, SPIR-V pro GPU podporující Vulkan, Metal pro Apple, DirectX 12 pro Windows, WebGPU pro prohlížeče.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster