Lëshimi i Rust 1.91

ËshtĂ« publikuar versioni i gjuhĂ«s sĂ« programimit Rust 1.91, i bazuar nĂ« projektin Mozilla, por tani i zhvilluar nĂ«n mbikĂ«qyrjen e organizatĂ«s jo-fitimprurĂ«se Rust Foundation. Gjuha fokusohet nĂ« punĂ«n e sigurt me kujtesĂ«n dhe ofron mjete pĂ«r arritjen e njĂ« paralelizmi tĂ« lartĂ« tĂ« ekzekutimit tĂ« detyrave, duke mos pĂ«rdorur mbledhĂ«s mbetje dhe runtime (runtime reduktohet nĂ« inicializimin bazĂ« dhe mbĂ«shtetje pĂ«r bibliotekĂ«n standarde).

Metodat e punës me kujtesën në Rust e çlirojnë zhvilluesin nga gabimet gjatë manipulimit me treguesit dhe e mbrojnë atë nga problemet që lindin për shkak të punës me kujtesën në nivel të ulët, si qasja në një zonë kujtese pas çlirimit të saj, dereferencimi i treguesve null, dalja jashtë kufijve të buffers etj. Për shpërndarjen e bibliothekave, sigurimin e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me menaxherin e paketave Cargo. Për mbështetje të bibliothekave, ekziston një repository crates.io.

Puna e sigurt me kujtesën sigurohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve, llogaritjes së kohëzgjatjes së jetës së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në kujtesë gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtjen nga tejkalimet e numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave para përdorimit, trajton më mirë gabimet në bibliotekën standarde, aplikon konceptin e referencave dhe variablave të pandryshueshëm (immutable) si standard dhe ofron tipizimin e fortë statik për të minimizuar gabimet logjike.

Novitetet kryesore:

  • PĂ«rmirĂ«suar mbĂ«shtetja pĂ«r sistemet 64-bit ARM me OS Windows. Platforma e synuar «aarch64-pc-windows-msvc» u kalua nga niveli i dytĂ« nĂ« nivelin e parĂ« tĂ« mbĂ«shtetjes. U sigurua niveli i dytĂ« i mbĂ«shtetjes pĂ«r arkitekturat aarch64-pc-windows-gnullvm dhe x86_64-pc-windows-gnullvm. Niveli i parĂ« i mbĂ«shtetjes parashikon formimin e ndĂ«rtimit binar, kryerjen e testimit tĂ« detajuar dhe ofrimin e garancisĂ« mĂ« tĂ« lartĂ« tĂ« mbĂ«shtetjes pĂ«r platformĂ«n - çdo ndryshim nĂ« kompilator kontrollohet pĂ«rmes ekzekutimit tĂ« njĂ« grupe tĂ« plotĂ« testesh. Niveli i dytĂ« i mbĂ«shtetjes pĂ«rfshin formimin e ndĂ«rtimit binar dhe garancinĂ« pĂ«r ndĂ«rtim, por nuk garanton kalimin e grupit tĂ« testimeve. Niveli i tretĂ« mbulon mbĂ«shtetje bazĂ«, por pa testim automatizuar, publikimin e ndĂ«rtimeve zyrtare dhe verifikimin e mundĂ«sisĂ« pĂ«r ndĂ«rtimin e kodit.
  • Shtuar paralajmĂ«rimi lint «dangling_pointers_from_locals» pĂ«r tĂ« identifikuar kthimet nga funksionet tĂ« treguesve tĂ« varur (dangling raw pointer), qĂ« tregojnĂ« nĂ« tĂ« dhĂ«na tĂ« mbajtura nĂ« variabla lokalĂ« tĂ« pĂ«rcaktuar nĂ« funksionin e thirrur. KĂ«to variabla hiqen pas pĂ«rfundimit tĂ« funksionit, dhe treguesit raw nĂ« tĂ« dhĂ«nat e lidhura me kĂ«to variabla bĂ«hen tĂ« varur, dmth. tregojnĂ« nĂ« memorie tĂ« liruar. ShkĂ«putja e mĂ«tejshme e njĂ« treguesi tĂ« tillĂ« rezulton nĂ« sjellje tĂ« pasigurt. fn f() -> *const u8 { let x = 0; &x // paralajmĂ«rim: do tĂ« prodhohet njĂ« tregues i varur sepse variabli lokal «x» do tĂ« hiqet }
  • Shtuar paralajmĂ«rimi lint «integer_to_ptr_transmutes», qĂ« informon pĂ«r konvertimin e numrave tĂ« plotĂ« nĂ« tregues pĂ«rmes funksionit std::mem::transmute.
  • NĂ« menaxherin e paketave Cargo u stabilizua mbĂ«shtetja pĂ«r parametrin «build.build-dir», qĂ« pĂ«rcakton katalogun pĂ«r ruajtjen e artefakteve temporale 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Ă«shtetja pĂ«r shpalljen e funksioneve me numĂ«r variabil argumentesh nĂ« stilin C.
  • U stabilizua mbĂ«shtetja pĂ«r assembler-in inline pĂ«r arkitekturĂ«n LoongArch32.
  • NjĂ« grup i ri API u kalua nĂ« kategorinĂ« e stabilizuar, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« trait-Ă«ve:
    • 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}>
  • Priznaku «const» aplicohet nĂ« funksione:
    • <[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

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster