Programavimas

Kas naujo „Rust 1.48“

Dėl unikalaus „Rust“ programavimo kalbos požiūrio gaunamas geresnis kodas ir mažiau kompromisų nei „C“, „C ++“, „Go“ ir kitose tikriausiai naudojamose kalbose. Ji taip pat atnaujinama reguliariai, dažnai kas mėnesį.

Kur atsisiųsti naujausią „Rust“ versiją

Jei jau turite ankstesnę „Rust“ versiją, įdiegtą per surūdijimas, galite pasiekti naujausią versiją naudodami šią komandą:

$ rustup atnaujinimas stabilus

Susijęs vaizdo įrašas: saugesnės programinės įrangos kūrimas naudojant „Rust“

Greitai paspartinkite naujoką „Rust“, skirtą sukurti greitą, sistemos lygio programinę įrangą. Šis dviejų minučių animacinis paaiškinimas parodo, kaip „Rust“ aplenkia nemalonius atminties ir valdymo programavimo klausimus.

Naujos „Rust 1.48.0“ funkcijos

Pristatytas 2020 m. Lapkričio 19 d., „Rust 1.48.0“ turi paprastesnį susiejimą „Rustdoc“ bibliotekos dokumentavimo įrankyje su sintakse, kad „Rustdoc“ žinotų, kai kūrėjai bando susieti su tipu; Bus sugeneruoti URL. Taip pat 1.48.0 versijoje:

  • Kūrėjai gali nurodyti # {doc (alias = “”)] ant elementų, kad pridėtumėte paieškos pseudonimus ieškodami per „Rustdoc“ vartotojo sąsają.
  • nesaugus raktinis žodis dabar sintaksiškai leidžiamas moduliuose. Nors tai vis dar atmetama semantiškai, tai dabar galima analizuoti procedūrinėmis makrokomandomis.
  • Kompiliatoriuje -C nuoroda-savarankiška = kompiliatoriaus vėliava stabilizuota. Tai pasako rustc ar susieti savo „C“ vykdymo laiką ir bibliotekas, ar pasikliauti išoriniu susiejimu juos rasti. Tai palaikoma tik langai-gnu, linux-muslir wasi platformos.
  • Bibliotekoje [T; N]: Išbandykite API dabar yra stabili. Kūrėjai gali naudoti jį bandydami paversti vektorių tam tikro ilgio masyvu. Taip pat šiame leidime stabilizavosi kitos penkios API: pjūvis :: as_ptr_range, pjūvis :: as_mut_ptr_range, VecDeque :: make_contiguous, ateitis :: laukiamair ateitis :: pasirengusi.
  • Taip pat bibliotekoje dabar įgyvendinami visi bet kokio ilgio masyvai TryFrom.

Naujos „Rust 1.47.0“ funkcijos

Paskelbta 2020 m. Spalio 8 d. „Rust 1.47.0“ neturi naujų kalbos funkcijų, tačiau patobulina standartinę biblioteką. Gyvenimo kokybė ir įrankių grandinės patobulinimai, taip pat bibliotekos stabilizavimas pateikiami leidime. Paskelbtos naujinimo pastabos.

Specifinės „Rust 1.47.0“ galimybės apima:

  • Funkcija „const generics“, veikianti didesnių masyvų bruožus. Šią savybę dar reikia stabilizuoti. Rūdys neturėjo būdo būti bendruoju lygiu sveikųjų skaičių reikšmėms, o tai sukėlė problemų su masyvais. Ši galimybė skirta šiai problemai spręsti ir masyvams padaryti naudingesniais.
  • Atnaujinimas į LLVM 11 kompiliatoriaus infrastruktūrą, todėl jis yra numatytasis.
  • Trumpesni atgaliniai pėdsakai, todėl lengviau rasti problemų.
  • rustc dabar palaiko -C valdymo-srauto apsauga, parinktis, kuri įjungs „Control Flow Guard“ saugos galimybes sistemoje „Windows“. Kitos platformos nepaiso šios vėliavos.
  • „Rustdoc“ dabar palaiko „Ayu“ temą.
  • Devyni standartinės bibliotekos API buvo stabilizuoti: Ident :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result :: as_deref_mut, Vec :: nutekėjimas, pointer :: offset_from, f32 :: TAU ir f64 :: TAU.

Naujos 1.46.0 versijos funkcijos

„Rust 1.46“, paskelbta 2020 m. Rugpjūčio 27 d., Apima šias galimybes:

  • Dabar galima naudoti keletą pagrindinių kalbos ypatybių konst fn, įskaitant jei, jei leisrungtynėsir keletas kitų.
  • A # [track_caller] atributas, skirtas pagerinti klaidų pranešimus, kai išvynioti ir su tuo susijusių funkcijų panika, dabar yra stabili.
  • Keičiantis bibliotekai, std :: mem :: pamiršti dabar yra a konst fn. Be to, bibliotekoje buvo stabilizuotos dvi naujos API: Variantas: zip ir vec :: Drain :: as_slice.
  • Kompiliatoriui citylib tikslą galima naudoti „Apple iOS“ ir „tvOS“ platformose.
  • Rekursyviai indeksuojant į rinkinius nebereikia skliaustų.

Naujos „Rust 1.45.0“ funkcijos

Paskelbta 2020 m. Liepos 16 d., „Rust 1.45“ apima šiuos papildymus ir patobulinimus:

  • Siūloma pataisyti ilgalaikį nepagrįstumą, kai atliekami skaičiai tarp sveikųjų ir plūduriuojančių.
  • Siūloma stabilizuoti funkcijų tipo procedūrines makrokomandas išraiškose, šablonuose ir teiginiuose. Išplėsti makrokomandų naudojimą galima naudojant „Rocket“ žiniatinklio sistemą „Rust“.
  • Keli bibliotekos API buvo stabilizuoti, pvz Lankas :: as_ptr, BTreeMap :: remove_entryir Atstumas :: išspręstas_at. Visą API sąrašą galite rasti tinklaraštyje „Rust“.

Naujos „Rust 1.43.1“ funkcijos

Šis taškinis leidimas buvo pristatytas 2020 m. Gegužės 7 d., Siekiant išspręsti dvi regresijas, įvestas stabiliame 1.43.0 leidime. Jis taip pat atnaujina „OpenSSL“ versiją, kurią naudoja „Cargo“ paketų tvarkyklė. Įranga apima:

  • Pristatė palaikymą x86 procesoriaus funkcijoms aptikti standartinėje bibliotekoje per is_x86_feature_detected makrokomanda. Dėl vidinio pertvarkymo „Rust 1.43.0“ neleido aptikti funkcijų, kurių dar negalima naudoti stabiliai, nors anksčiau jas nustatyti buvo leidžiama. Versija 1.43.1 nustato šią regresiją.
  • Siūloma pataisyti sugedusius krovinių paketas - sąrašas komandą. „Rust 1.43“ sugadino failų, įtrauktų į paketus, paskelbtus kartu su „Cargo“, sąrašų palaikymą, kai jie vykdomi darbo srityje su kelio priklausomybėmis arba nepaskelbtomis versijomis.
  • „OpenSSL“, priklausanti nuo krovinių, atnaujinta iki 1.1.1g. „OpenSSL“ išleido patarimą dėl saugumo, tačiau „Rust“ komanda negalėjo laiku įtraukti „Rust 1.43.0“ pataisos. Komanda neturi įrodymų, kad pažeidžiamumas gali pakenkti „Cargo“ naudotojų saugumui.

Naujos „Rust 1.43.0“ funkcijos

Paskelbta 2020 m. Balandžio 23 d. „Rust 1.43.0“ buvo laikoma gana nedideliu leidimu, be jokių pagrindinių funkcijų. Pakeitimai apima:

  • Kūrėjai gali naudoti elementą fragmentai interpoluoti daiktus į kūną bruožas, implir išorinis blokai.
  • Patobulintas tipo priminimas apie primityvus, nuorodas ir dvejetaines operacijas.
  • Siekdamas padėti integracijos bandymams, „Cargo“ nustatys keletą naujų aplinkos kintamųjų bandymams, kad rastų vykdomuosius.
  • „Rust“ bibliotekoje kūrėjai gali tiesiogiai naudoti susietas plūdurų ir sveikųjų skaičių konstantas, neimportuodami modulio. Be to, yra naujas primityvus modulis, kuris reeksportuoja primityvius „Rust“ tipus, kuris yra naudingas rašant makrokomandą, o kūrėjai nori užtikrinti, kad tipai nebūtų šešėliai.
  • Keli bibliotekos API buvo stabilizuoti: Kartą: yra baigtas, f32 :: LOG10_2, f32 :: LOG2_10, f32 :: LOG10_2, f64 :: LOG10_2, f64 :: LOG2_10ir iter :: kartą_su.

Naujos „Rust 1.41“ funkcijos

Naujos „Rust 1.38“ funkcijos

„Rust 1.38“, išleistame 2019 m. Rugsėjo mėn., Yra šios naujos funkcijos ir patobulinimai:

  • „Cargo“ paketų tvarkyklė naudos automatinį kompiliavimo naudą naudodama „Rust 1.38“. Kompiliatoriui kompiliatoriui nereikia visiškai sukonstruotų priklausomybių sudarant dėžę. Reikia tik jų metaduomenų, pavyzdžiui, priklausomybių tipų sąrašo. Metaduomenys rengiami ankstyvame rengimo procese. Kai kurie bandymai parodė, kad optimizuotų, švarių kai kurių dėžių diagramų sudarymo greitis padidėjo 10–20 proc.
  • Neteisingas kai kurių neteisingų vaistų vartojimas mem :: {unitialized, zeroed}. Su šiuo leidimu „rustc“ kompiliatorius pateiks siaurą klaidingų inicializacijų klasę mem :: neinicijuota arba mem :: nulinė.
  • Pratęsimas # [nebenaudojamas] atributas makrokomandoms. Šis atributas leido dėžučių autoriams pranešti vartotojams, kad jų dėžės elementas bus nebenaudojamas ir pašalinamas būsimame leidime.
  • Kūrėjai gali naudoti standartinis :: bet koks :: tipo vardas gauti tipo pavadinimą.
  • Daugelio funkcijų, įskaitant :: aktoriai ir :: aktoriai.

Naujos „Rust 1.37“ funkcijos

Rust 1.37, išleista 2019 m. Rugpjūčio mėn., Turi šias naujas funkcijas ir patobulinimus:

  • Gebėjimas nurodyti enum variantai per tipo. Kūrėjai taip pat gali nurodyti enum variantai su Aš: variantas.
  • krovinių pardavėjas komanda, anksčiau buvusi atskira dėžė, dabar yra integruota į kalbą. Komanda gauna projekto priklausomybes, išpakuoja jas į pardavėjąkatalogą ir rodo konfigūracijos fragmentą, kurio reikia norint naudoti parduodamą kodą kuriant.
  • rustc kompiliatorius palaiko profiliu valdomą optimizavimą, optimizavimo metodiką, skirtą kompiliatoriams, anksčiau dirbantiems-C profilio generavimas ir -C profilio naudojimas.
  • Kūrėjai gali kurti neįvardytus konst daiktų.

Naujos „Rust 1.36“ funkcijos

„Rust“ sistemų programavimo kalbos 1.36 versija buvo išleista 2019 m. Liepos mėn. „Rust 1.36“ apima šias naujas funkcijas ir patobulinimus:

  • Ateities bruožas, naudojamas asinchroniniam darbui deklaruoti, dabar yra stabilus. Asinchroninės „Rust“ operacijos jau kelios versijos sujungtos dalimis ir asinchroninis ir laukti yra paskutiniai svarbūs likę kūriniai.
  • Paskyrimo dėžė, naudojama atminties valdymui, dabar yra stabili. Šis dėklas renka visus Rusto standartinės bibliotekos fragmentus, kurie priklauso nuo pasaulinio atminties paskirstymo mechanizmo, pvz Vec. Tokiu būdu dėžės, kuriose nenaudojama standartinė biblioteka, vis tiek gali naudoti paskirstytoją importuodami paskirstymą atskirai - tai naudinga aplinkoms, kuriose norite, kad kodų dydžiai būtų kuo mažesni.
  • Naujas tipas, GalUninit, leidžia apibrėžti objektus, kuriuos gali sudaryti neinicijuota atmintis, pvz., tingiai priskirtą masyvą. Ankstesnis Rusto mechanizmas tai padaryti buvo funkcija, mem :: neinicijuota, kuris kasdieniniam naudojimui kėlė daugybę pavojų. GalUninit pateikia saugesnį būdą tai padaryti, naudojant Rust tipo sistemos apribojimus.
  • Ne leksiniai gyvenimo laikotarpiai, naujausių „Rust“ leidimų bruožas, buvo paremti ankstesniais leidimais. Ne leksinis gyvenimas daro „Rust“ paskolų tikrinimo mechanizmą ne taip sunkiai veikiantį (iš esmės leidžia jums parašyti platesnį programų, kurios vis dar galioja „Rust“, asortimentą) ir geriau sugeba įveikti problemas, kurių paskolos tikrintojas praleido.

Kiti patobulinimai:

  • Naujas programos HashMap tipas, kuris veikia greičiau ir naudoja mažiau atminties.
  • Dabar prireikus kroviniai gali būti vykdomi visiškai neprisijungus.

Naujos „Rust 1.35“ funkcijos

2019 m. Gegužės mėn. Išleistoje versijoje 1.35 siūloma: