ĂshtĂ« publikuar lana e gjuhĂ«s sĂ« programimit Rust 1.91, qĂ« fillimisht ishte projekt i Mozilla, por tani zhvillohet nĂ«n kujdesin e njĂ« organizate jo-fitimprurĂ«se tĂ« pavarur, Rust Foundation. Gjuha fokusohet nĂ« punĂ«n e sigurt me kujtesĂ«n dhe ofron mjete pĂ«r arritjen e paralelizmit tĂ« lartĂ« nĂ« ekzekutim, pa pĂ«rdorur mbledhĂ«sin e plehrave dhe runtime (runtime reduktohet nĂ« inicializimin themelor dhe mbĂ«shtetje pĂ«r bibliotekĂ«n standarde).
Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit të treguesve dhe mbrojnë nga problemet që lindin nga puna me nivel të ulët me kujtesën, siç janë referimi në një zonë kujtese pas çlirimit të saj, dereferimi i treguesve null, tejkalimi i kufijve të tamponëve etj. Për shpërndarjen e biblioteka, për të siguruar ndërtimin dhe menaxhimin e varësive, projekti zhvillon menaxherin e paketave Cargo. Për ruajtjen e bibliotekave, mbështetet depoja crates.io.
Përdorimi i sigurt i memories sigurohet në Rust gjatë kompilimit përmes verifikimit të lidhjeve, gjurmimit të pronësisë së objekteve, përllogaritjes së kohëzgjatjes së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në memorie gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtje nga tejkalimet e numrave të plotë, kërkon inicializim të detyrueshëm të vlerave të variablave para përdorimit, menaxhon më mirë gabimet në bibliotekën standarde, aplikon konceptin e lidhjeve dhe variablave të pandryshueshëm (immutable) si parazgjedhje, dhe ofron tipizim të fortë statik për minimizimin e gabimeve logjike.
TĂ« rejat kryesore:
- PĂ«rmirĂ«simi i mbĂ«shtetjes pĂ«r sistemet ARM me 64-bit qĂ« pĂ«rdorin sistemin operativ Windows. Platforma e synuar "aarch64-pc-windows-msvc" Ă«shtĂ« pĂ«rmirĂ«suar nga niveli i dytĂ« nĂ« nivelin e parĂ« tĂ« mbĂ«shtetjes. Niveli i dytĂ« i mbĂ«shtetjes Ă«shtĂ« siguruar pĂ«r arkitekturat aarch64-pc-windows-gnullvm dhe x86_64-pc-windows-gnullvm. Niveli i parĂ« i mbĂ«shtetjes nĂ«nkupton ndĂ«rtimin e binarĂ«ve, kryerjen e testeve tĂ« plota dhe ofrimin e garancisĂ« mĂ« tĂ« lartĂ« tĂ« mbĂ«shtetjes pĂ«r platformĂ«n â çdo ndryshim nĂ« kompajler verifikohet duke kryer tĂ« gjithĂ« grupin e testeve. Niveli i dytĂ« i mbĂ«shtetjes pĂ«rfshin ndĂ«rtimin e binarĂ«ve dhe garancinĂ« e ndĂ«rtimit, por nuk garanton kalimin e grupit tĂ« testeve. Niveli i tretĂ« mbulon mbĂ«shtetje bazĂ«, por pa testim automatizuar, publikimin e ndĂ«rtimeve zyrtare dhe verifikimin e mundĂ«sisĂ« pĂ«r tĂ« ndĂ«rtuar kodin.
- Shtesa e paralajmërimit lint "dangling_pointers_from_locals" për identifikimin e kthimeve nga funksionet të treguesve raw që mbeten të varur (dangling raw pointer), që tregojnë për të dhënat që ruhen në variablat lokale të përcaktuara në funksionin e thirrur. Të tilla variabla fshihen pas përfundimit të funksionit, dhe treguesit raw për të dhënat e lidhura me këto variabla bëhen të varur, dmth tregojnë për kujtesë të çliruar. Dereferencing e mëtejshme e një treguesi të tillë çon në sjellje të pacaktuar. fn f() -> *const u8 { let x = 0; &x // paralajmërim: një tregues i varur do të prodhohet sepse variabli lokal «x» do të fshihet }
- Shtesa e paralajmërimit lint "integer_to_ptr_transmutes", që informon për shndërrimin e numrave të plotë në tregues duke përdorur funksionin std::mem::transmute.
- Në menaxherin e paketave Cargo, u stabilizua mbështetje për parametrin "build.build-dir", që përcakton katalogun për ruajtjen e artefakteve të përkohshme të ndërtimit, të krijuara nga cargo dhe rustc gjatë fazës së ndërtimit.
- Për ABI sysv64, win64, efiapi dhe aapcs, u stabilizua mbështetje për shpalljen e funksioneve me numër të ndryshueshëm argumentesh në stilin C.
- U stabilizua mbështetje për assembler në linjë për arkitekturën LoongArch32.
- Një sasi e re API është kaluar në kategorinë stabile, përfshirë stabilizimin e metodave dhe implementimeve të tipazheve:
- Path::file_prefix
- AtomicPtr::fetch_ptr_add
- AtomicPtr::fetch_ptr_sub
- AtomicPtr::fetch_byte_add
- AtomicPtr::fetch_byte_sub
- AtomicPtr::fetch_or
- AtomicPtr::fetch_and
- AtomicPtr::fetch_xor
- {integer}::strict_add
- {integer}::strict_sub
- {integer}::strict_mul
- {integer}::strict_div
- {integer}::strict_div_euclid
- {integer}::strict_rem
- {integer}::strict_rem_euclid
- {integer}::strict_neg
- {integer}::strict_shl
- {integer}::strict_shr
- {integer}::strict_pow
- i{N}::strict_add_unsigned
- i{N}::strict_sub_unsigned
- i{N}::strict_abs
- u{N}::strict_add_signed
- u{N}::strict_sub_signed
- PanicHookInfo::payload_as_str
- core::iter::chain
- u{N}::checked_signed_diff
- core::array::repeat
- PathBuf::add_extension
- PathBuf::with_added_extension
- Duration::from_mins
- Duration::from_hours
- impl PartialEq<str> for PathBuf
- impl PartialEq<String> for PathBuf
- impl PartialEq<str> for Path
- impl PartialEq<String> for Path
- impl PartialEq<PathBuf> for String
- impl PartialEq<Path> for String
- impl PartialEq<PathBuf> for str
- impl PartialEq<Path> for str
- Ipv4Addr::from_octets
- Ipv6Addr::from_octets
- Ipv6Addr::from_segments
- impl<T> Default for Pin<Box<T>> where Box<T>: Default, T: ?Sized
- impl<T> Default for Pin<Rc<T>> where Rc<T>: Default, T: ?Sized
- impl<T> Default for Pin<Arc<T>> where Arc<T>: Default, T: ?Sized
- Cell::as_array_of_cells
- u{N}::carrying_add
- u{N}::borrowing_sub
- u{N}::carrying_mul
- u{N}::carrying_mul_add
- BTreeMap::extract_if
- BTreeSet::extract_if
- impl Debug for windows::ffi::EncodeWide<â_>
- str::ceil_char_boundary
- str::floor_char_boundary
- impl Sum for Saturating<u{N}>
- impl Sum<&Self> for Saturating<u{N}>
- impl Product for Saturating<u{N}>
- impl Product<&Self> for Saturating<u{N}>
- T symboli «const» është aplikuar në funksionet:
- <[T; N]>::each_ref
- <[T; N]>::each_mut
- OsString::new
- PathBuf::new
- TypeId::of
- ptr::with_exposed_provenance
- ptr::with_exposed_provenance_mut
- Kompilatori është përditësuar në degën LLVM 21.
Burimi: opennet.ru
