Lëshimi i Rust 1.91

Ë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

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster