Rust 1.77 Programming Language Release

Ang pagpagawas sa Rust 1.77 nga kinatibuk-ang katuyoan nga programming language, nga gitukod sa proyekto sa Mozilla, apan karon naugmad ubos sa pagdumala sa independenteng non-profit nga organisasyon nga Rust Foundation, gimantala. Ang lengguwahe nagtutok sa kaluwasan sa panumduman ug naghatag sa mga paagi aron makab-ot ang taas nga paralelismo sa trabaho samtang naglikay sa paggamit sa usa ka tigkolekta sa basura ug runtime (ang runtime gikunhoran ngadto sa batakang pagsugod ug pagmentinar sa standard library).

Ang mga pamaagi sa pagdumala sa panumduman sa Rust nagluwas sa developer gikan sa mga sayup sa pagmaniobra sa mga pointer ug pagpanalipod batok sa mga problema nga motumaw tungod sa ubos nga lebel sa pagdumala sa panumduman, sama sa pag-access sa usa ka lugar sa panumduman human kini mapagawas, pagtangtang sa mga null pointer, pag-overrun sa buffer, ug uban pa. Sa pag-apod-apod sa mga librarya, paghatag og mga pagtukod ug pagdumala sa mga dependency, ang proyekto nagpalambo sa Cargo package manager. Gisuportahan ang crates.io repository alang sa pag-host sa mga librarya.

Ang kaluwasan sa panumduman gihatag sa Rust sa oras sa pag-compile pinaagi sa pagsusi sa reference, pagsubay sa pagpanag-iya sa butang, pagsubay sa mga kinabuhi sa butang (scopes), ug pagtimbang-timbang sa pagkahusto sa pag-access sa memorya sa panahon sa pagpatuman sa code. Naghatag usab ang Rust og proteksyon batok sa pag-awas sa integer, nanginahanglan mandatory nga pagsugod sa mga variable nga kantidad sa wala pa gamiton, pagdumala sa mga sayup nga mas maayo sa standard nga librarya, gipadapat ang konsepto sa dili mausab nga mga pakisayran ug mga variable nga default, nagtanyag kusog nga static nga pag-type aron maminusan ang mga lohikal nga sayup.

Panguna nga mga inobasyon:

  • Gidugang nga suporta alang sa mga literal para sa C-strings (c"text"), nga gitipigan sa memorya nga adunay null-terminated nga karakter ug gilambigit sa tipo nga "CStr". Gilauman nga ang suporta sa C-string mopasimple sa pagsulat sa code nga nakig-uban sa mga layer sa mga programming language nga naggamit sa null-terminated strings, ug magtugot sa gikinahanglan nga mga pagsusi nga ipahigayon sa yugto sa pag-compile. const HELLO: &core::ffi::CStr = c"Kumusta, kalibutan!";
  • Sa asynchronously executed functions nga gideklarar gamit ang ekspresyong "async fn", gitugutan ang paggamit sa recursion, i.e. ang ingon nga mga gimbuhaton mahimo na nga tawagan ang ilang kaugalingon. async fn fib(n: u32) -> u32 {pareha n {0 | 1 => 1, _ => Kahon::pin(fib(n-1)).maghulat + Kahon::pin(fib(n-2)).maghulat } }
  • Ang offset_of! macro na-stabilize, nga nagtugot kanimo sa pagtino sa byte offset sa mga natad sa mga istruktura, mga enumerasyon, mga unyon ug mga tuple, nga may kalabotan sa sinugdanan sa tipo. Sa praktis, ang usa ka macro mahimong mapuslanon sa mga sitwasyon diin kinahanglan nimo nga magtrabaho sa field offset level kung wala ang usa ka pananglitan sa tipo. Sa partikular, gikinahanglan ang offset_of functionality kung mag-develop sa mga low-level nga sangkap sama sa mga driver. gamita ang std::mem; #[repr(C)] struct FieldStruct { una: u8, ikaduha: u16, ikatulo: u8 } assert_eq!(mem::offset_of!(FieldStruct, una), 0); assert_eq!(mem::offset_of!(FieldStruct, ikaduha), 2); assert_eq!(mem::offset_of!(FieldStruct, ikatulo), 4);
  • Sa tagdumala sa pakete sa Cargo, sa mga profile sa pagpagawas, ang paglimpyo sa mga file gikan sa data sa pag-debug gipagana pinaagi sa default (strip = "debuginfo"), gawas kung ang mode sa pag-debug klaro nga gipagana sa profile sa Cargo, i.e. kung ang parameter debug = 0.
  • Ang "-Zthir-unsafeck=on" nga opsyon gipagana pinaagi sa default, nga naghatag ug dili luwas nga pagsusi para sa THIR (Typed High-Level Intermediate Representation).
  • Gidugang nga lint check alang sa static_mut_refs aron ipakita ang usa ka pasidaan kung mogamit mga pakisayran sa mutable static nga mga kantidad.
  • Ang abilidad sa paggamit sa "Gikan sa<&[T;" gipatuman. N]>" para sa tipo nga "Baka<[T]>". fn foo(data: impl Sa >) { /* … */ } fn main() { foo(&[“hello”, “world”]); }
  • Ang compiler naghatag ug alignment sa 16-byte nga i128 ug u128 nga tipo para sa x86 system.
  • Usa ka bag-ong bahin sa API ang gibalhin sa kategorya nga stable, lakip ang mga pamaagi ug pagpatuman sa mga kinaiya nga na-stabilize:
    • array::matag_ref
    • array::matag_mut
    • kinauyokan::net
    • f32::round_ties_even
    • f64::round_ties_even
    • mem::offset_sa!
    • slice::first_chunk
    • slice::first_chunk_mut
    • slice::split_first_chunk
    • slice::split_first_chunk_mut
    • slice::last_chunk
    • slice::last_chunk_mut
    • slice::split_last_chunk
    • slice::split_last_chunk_mut
    • slice::chunk_by
    • slice::chunk_by_mut
    • Gigapos:: mapa
    • File::create_new
    • Mutex::clear_poison
    • RwLock::clear_poison
  • Ang ikatulo nga lebel sa suporta gipatuman alang sa aarch64-unknown-illumos, hexagon-unknown-none-elf, riscv32imafc-esp-espidf ug riscv32im-risc0-zkvm-elf nga mga plataporma. Ang ikatulo nga lebel naglakip sa batakang suporta, apan walay automated nga pagsulay, pagmantala sa opisyal nga pagtukod, o pagsusi kon ang code mahimo bang matukod.

Source: opennet.ru

Pagpalit kasaligan nga pag-host alang sa mga site nga adunay proteksyon sa DDoS, mga server sa VPS VDS 🔥 Pagpalit og kasaligang website hosting nga adunay proteksyon sa DDoS, VPS VDS servers | ProHoster