VĂ€lja anti programmeerimiskeele Rust 1.97 versioon, mis pĂ”hineb Mozilla projektis, kuid mida praegu arendab iseseisev mittetulunduslik organisatsioon Rust Foundation. Keel keskendub mĂ€lus töötamise ohutusele ja pakub vahendeid ĂŒlesannete kĂ”rge paralleelsuse saavutamiseks, kuid jÀÀb ilma prĂŒgikoristaja ja jooksutamisest (runtime koosneb ainult pĂ”hi-initialiseerimisest ja standardraamatukogu toimest).
Rustis mĂ€luga töötamise meetodid on suunatud vigade vĂ€ltimisele pointer'itega manööverdamisel ja probleemide kaitsmisele madala taseme mĂ€lutöötlusest, nagu mĂ€lupiirkonna kasutamine pĂ€rast selle vabastamist, nullpunktide de-referentsimine, mĂ€lupiiri ĂŒletamine jne. Raamatukogude levitamiseks, ehituse tagamiseks ja sĂ”ltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude paigutamiseks toetatakse repo crates.io.
Rust tagab turvalise mĂ€lutöötluse kompilatsiooni ajal, kontrollides viiteid, jĂ€lgides objektide omandit, arvestades objektide elutsĂŒklit (nĂ€htavust) ja hinnates mĂ€lule juurdepÀÀsu Ă”igsust koodi kĂ€itamise ajal. Rust pakub ka meetmeid enamike tĂ€isarvude ĂŒletamiste vĂ€ltimiseks, nĂ”uab muutujate vÀÀrtuste algvÀÀrtustamist enne kasutamist, kĂ€sitleb vigasid paremini oma standardraamatukogus, rakendab immutamatuse (immutable) kontseptsiooni viidetes ja muutujates vaikimisi ning pakub tugevat staatilist tĂŒĂŒpimist loogiliste vigade minimeerimiseks.
PÔhilised uuendused:
- Vaikimisi on aktiveeritud uus funktsioonide, globaalsete muutuja ja andmestruktuuride dekoratsiooniskeem (mangling) genereeritud objekt- ja tÀitevfailides (-Csymbol-mangling-version=v0). Nimesid dekoreeritakse, et vÀltida erinevate programmide sidumisel konfliktide teket, lisades spetsiifilise konteksti, nÀiteks mooduli tee ja crate-paketi nimi.
Varasemalt kasutatud nimede dekoratsiooniskeem, mis pĂ”hines Itanium ABI-l, omas selliseid puudusi nagu generikute parameetrite asendamine raskesti loetavate hashide ja Itanium ABI-d mittekasutavate kompilatori osade olemasolu, mis nĂ”udis Rust-spetsiifiliste nimede dekooderite kasutamist. Rust 1.97-s on vaikimisi kasutusele vĂ”etud dekoratsiooniskeem, mis on vĂ€lja töötatud spetsiaalselt Rusti jaoks ja millel puuduvad eespool nimetatud puudused. Vana skeem plaanitakse eemaldada ĂŒhes jĂ€rgmistest vĂ€ljaandest.
- Pakettihaldur cargoon on sisseehitatud vĂ”imalus hallata kompilaatori genereerimise hoiatuste reageerimist koostamisel. Lisatud on keskkonnamuutuja CARGO_BUILD_WARNINGS, mis vĂ”ib vĂ”tta kolme vÀÀrtust: warn (vaikimisi) â hoiatuste kuvamine ekraanil; allow â hoiatuste vĂ€ljundi peitmine; deny â hoiatuste kĂ€sitlemine vigadena, mis peatavad koostamise.
Eelmistel versioonidel tuli koostamise lĂ”petamiseks pĂ€rast hoiatuse vĂ€ljundit RUSTFLAGSis ' -Dwarnings' nĂ€idata, kuid RUSTFLAGSi muutmisel pidas paketihaldur cargo koostamist uueks, ei arvestanud mĂ€lus leiduvate andmetega ja koostas kogu projekti nullist. Seades seadistuse cargo poole, vĂ€listati vahemĂ€lu lĂ€htestamine ja vajadus tĂ€ielikuks ĂŒmberkompileerimiseks hoiatuste töötlemise reĆŸiimi muutmisel, samuti lihtsustas hoiatuste kĂ€sitlemise lubamist vigadena pideva integreerimise sĂŒsteemides.
- Kogumise kĂ€igus on vaikimisi lubatud kompilatori vĂ€ljastatavad sĂ”numid. Need sĂ”numid kuvatakse hoiatustena spetsiaalse lint-reegli «linker_messages» kaudu, mis ei kuulu tavalisse «warnings» gruppi. Rustc filtreerib vĂ€lja sĂ”numid, mis on tĂŒĂŒpilised valehĂ€ired vĂ”i normaalne kĂ€itumine, jĂ€ttes alles hoiatused, mis vĂ”ivad viidata probleemidele, nagu nĂ€iteks vananenud valikute ja soovimatute seadete hoiatuste osas. Varem kuvatakse linker'i teave ainult veaga lĂ”petamisel, muul juhul peidetakse kĂ”ik sĂ”numid. Vanade kĂ€itumise tagasisaamiseks vĂ”ib Cargo.toml faili lisada: [lints.rust] linker_messages = «allow»
- Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒpide rakendused:
- RepeatN vaikimisi
- Kopeeri ffi::FromBytesUntilNulError jaoks
- Saada std::fs::File jaoks UEFI-le
- ::isolate_highest_one
- ::isolate_lowest_one
- ::highest_one
- ::lowest_one
- ::bit_width
- NonZero::isolate_highest_one
- NonZero::isolate_lowest_one
- NonZero::highest_one
- NonZero::lowest_one
- NonZero::bit_width
- MÀrge «const» on rakendatud meetodis char::is_control.
Kohustuslikud on ka hiljuti vĂ€ljakuulutatud projektid ja ĂŒritused, mis on seotud Rustiga:
- Zinnia projekt arendab modulaarselt Unix-sarnast tuuma, mis on kirjutatud Rusti keeles ja mille litsentsiks on GPLv2. Tuum toetab POSIX-liideseid ja mĂ”ned laienemised BSD-st ja Linuxist, nagu epoll ja timerfd. Renderdamiseks ja sisendi korraldamiseks on saadaval DRM (Direct Rendering Manager) ja evdev draiverid. Rakendatud funktsionaalsus piisab X-sĂŒsteemi ja komposiitide juhtimiseks Xfce töölauda. serverid Weston baseeritud Wayland. Toetatakse kĂ€ivitamist nii QEMU emulaatoris kui ka reaalses riistvaras, nagu ThinkPad E14 G7 sĂŒlearvuti.
- Esitatud on suhtlusraamatukogu iroh 1.0, mis vĂ”imaldab luua vĂ”rguĂŒhendusi rakenduste vahel erinevates hostides, kasutades krĂŒptograafilisi vĂ”tmeid. IP-aadresse (mĂ€rgitakse vĂ”ti, millele on vaja ĂŒhenduda, ja iroh leiab sellega seotud hosti ning loob krĂŒpteeritud ĂŒhenduse QUIC-protokolli abil). Kui vĂ”imalik, luuakse otse P2P-ĂŒhendused, kuid kui see ei ole vĂ”imalik, tehakse tagasikĂ€ik tööle lĂ€bi releede, mida kasutatakse samuti hostide leidmiseks vĂ”tmete jĂ€rgi. On vĂ”imalik kĂ€ivitada oma relee vĂ”i ĂŒhenduda toetatud kogukondade avalike releede juurde.
TĂ€iendavate vĂ”imaluste hulka kuuluvad: Multipath QUIC tugi, et edastada pakette samaaegselt mitme marsruudi kaudu, vĂ”imalus töötada NAT-i taga, staatilise konfiguratsiooni reĆŸiim, et ĂŒhendada kohalikke seadmeid ilma internetiĂŒhenduseta, vĂ”imalus kokku panna vahekoodiks WASM, et seda tĂ€ita brauseris, ja toetada oma transportide loomist, nĂ€iteks Bluetoothi, WiFi Aware vĂ”i LoRa kaudu. Kood on kirjutatud Rustis ja levitatakse litsentside Apache-2.0 ja MIT alusel. Saadaval on Python, Node.js, Kotlin ja Swift raamistikud.
- Buni serveri JavaScript platvormi autor avaldas artikli, kus analĂŒĂŒsitakse projekti ĂŒleviimist Bun keelest Zig keelde Rusti, kasutades AI mudelit Claude Fable. MĂ€rgitakse, et Bun 1.3.14 saab olema viimane vĂ€ljaanne Zig keeles ja jĂ€rgmine versioon Bun 1.4.0 on juba Rustis. Tehtud testide kohaselt tarbib Rusti versioon mĂ€rkimisvÀÀrselt vĂ€hem mĂ€lu ja on 2-5% kiirem kui Zig versioon. Rusti versiooni kĂ€ivitusfaili suurus on vĂ€henenud 20%.
Allikas: opennet.ru
