Rust 1.37 programmeringssprog udgivelse

offentliggjort frigivelse af systemprogrammeringssprog Rust 1.37, grundlagt af Mozilla-projektet. Sproget fokuserer på hukommelsessikkerhed, giver automatisk hukommelsesstyring og giver et middel til at opnå høj opgaveparallelisme uden at bruge en skraldeopsamler eller runtime.

Rusts automatiske hukommelseshåndtering sparer udvikleren for at manipulere pointere og beskytter mod problemer, der opstår som følge af manipulation af hukommelsen på lavt niveau, såsom adgang til et hukommelsesområde, efter at det er blevet frigivet, dereferencing af nul-pointere, bufferoverskridelser osv. For at distribuere biblioteker, sikre samling og administrere afhængigheder udvikler projektet en pakkemanager Last, som giver dig mulighed for at få de biblioteker, du skal bruge til programmet, med et enkelt klik. Et lager er understøttet til at være vært for biblioteker kasser.io.

The main innovationer:

  • I rustc compileren sikret understøttelse af optimering baseret på kodeprofileringsresultater (PGO, Profile-Guided Optimization),
    giver dig mulighed for at generere mere optimal kode baseret på analysen af ​​statistik akkumuleret under programafviklingen. For at generere en profil leveres flaget "-C profile-generate", og for at bruge profilen under montering - "-C profile-use" (initielt samles programmet med det første flag, kører rundt og efter oprettelse profilen, den samles igen med det andet flag);

  • Når du udfører kommandoen "cargo run", som er praktisk at bruge til hurtigt at teste konsolapplikationer, er muligheden for automatisk at vælge en eksekverbar fil til at køre blevet tilføjet, hvis der er flere eksekverbare filer i pakken. Standardfilen, der skal udføres, bestemmes gennem standard-run-direktivet i [pakke]-sektionen med pakkeparametre, som giver dig mulighed for at undgå eksplicit at angive filnavnet gennem "-bin"-flaget, hver gang du kører "cargo run";
  • Kommandoen "lastleverandør", tidligere leveret som separat pakke. Kommandoen giver dig mulighed for at organisere arbejdet med en lokal kopi af afhængigheder - efter at have udført "cargo vendor", downloades alle kildekoder til projektets afhængigheder fra crates.io til en lokal mappe, som derefter kan bruges til arbejde uden adgang til kasser. io (efter udførelse af kommandoen, vises et tip til ændring af konfigurationen for at bruge biblioteket til builds). Denne funktion bruges allerede til at organisere leveringen af ​​rustc-kompileren med pakning af alle afhængigheder i ét arkiv med udgivelsen;
  • Det er nu muligt at oprette links til enum-indstillinger ved hjælp af typealiaser (f.eks. i brødteksten af ​​funktionen "fn increment_or_zero(x: ByteOption) kan du angive "ByteOption::None => 0"), skriv beregningskonstruktioner (‹ MyType‹.. ››::option => N) eller Selvadgang (i blokke c &self kan du angive “Selv::Kvarter => 25”);
  • Tilføjet muligheden for at oprette unavngivne konstanter i makroer. I stedet for at definere elementnavnet i "const", kan du nu bruge tegnet "_" til dynamisk at vælge en ikke-gentagende identifikator, og undgå navnekonflikter, når makroen kaldes igen;
  • Tilføjet muligheden for at bruge "#[repr(align(N))" attributten med enums ved hjælp af en syntaks svarende til at definere en AlignN‹T› struktur med alignment og derefter bruge AlignN‹MyEnum›;
  • En ny del af API'et er blevet flyttet til den stabile kategori, inklusive BufReader::buffer, BufWriter::buffer og
    Celle::fra_mut,
    Celle::som_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Option::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits og
    skive::copy_within.

Derudover kan det bemærkes start af test projekt Asynkron-std, som tilbyder en asynkron variant af Rust-standardbiblioteket (en port af std-biblioteket, hvor alle grænseflader tilbydes i en asynkron version og er klar til brug med async/wait syntaks).

Kilde: opennet.ru

Tilføj en kommentar