I-Rust 1.53 ikhishwe. I-Google izoxhasa ngemali yokwengeza ukwesekwa kwe-Rust ku-Linux kernel

Ukukhululwa kolimi lwezinhlelo zesistimu i-Rust 1.53, eyasungulwa iphrojekthi ye-Mozilla, kodwa manje ethuthukiswe ngaphansi kwenhlangano ezimele engenzi nzuzo i-Rust Foundation, kushicilelwe. Ulimi lugxile ekuphepheni kwenkumbulo, luhlinzeka ngokuphathwa kwenkumbulo okuzenzakalelayo, futhi lunikeza izindlela zokufinyelela ukufana kwemisebenzi ephezulu ngaphandle kokusebenzisa umqoqi wezibi noma isikhathi sokusebenza (isikhathi sokusebenza sincishiselwa ekuqaliseni okuyisisekelo nasekunakekeleni umtapo wolwazi ojwayelekile).

Ukuphathwa kwenkumbulo okuzenzakalelayo kwe-Rust kusindisa unjiniyela emaphutheni lapho eshintsha izikhombi futhi ivikela ezinkingeni eziphakama ngenxa yokukhohlisa inkumbulo yezinga eliphansi, njengokufinyelela indawo yenkumbulo ngemva kokuba ikhululiwe, ukususa ireferensi izikhombi ezingenalutho, ukugcwala kwebhafa, njll. Ukuze kusatshalaliswe imitapo yolwazi, ukuhlinzeka ngokwakha nokuphatha okuncikile, iphrojekthi ithuthukisa umphathi wephakheji ye-Cargo. Inqolobane ye-crates.io isekelwe ekusingatheni imitapo yolwazi.

Okuqanjiwe okuyinhloko:

  • Kumalungu afanayo, isici se-IntoIterator sisetshenzisiwe, esikuvumela ukuthi uhlele ukuphindaphindwa kwezakhi zamalungu afanayo ngamavelu: kokuthi i ku-[1, 2, 3] { .. }

    Kungenzeka futhi ukudlulisa ama-array ezindleleni ezamukela ama-iterators, isibonelo: let set = BtreeSet::from_iter([1, 2, 3]); kokuthi (a, b) ku-some_iterator.chain([1]).zip([1, 2, 3]) { .. }

    Ngaphambilini, i-IntoIterator yayisetshenziselwa kuphela izinkomba zamalungu afanayo, isb. ukuphindaphinda amanani ​​okudinga ukusetshenziswa kwezithenjwa (“&[1, 2, 3]”) noma “[1, 2, 3].iter()”. Ukusetshenziswa kwe-IntoIterator kumalungu afanayo kuphazanyiswe izinkinga zokusebenzisana ezidalwe ukuguqulwa kwangaphambilini komhlanganisi ukusuka ku-array.into_iter() ukuya ku-(&array).into_iter(). Lezi zinkinga zixazululwe nge-workaround - umhlanganisi uzoqhubeka nokuguqula i-array.into_iter() iye ku-(&array).into_iter() njengokungathi bekungekho ukusetshenziswa kwesici se-IntoIterator, kodwa kuphela lapho kubizwa indlela kusetshenziswa ".into_iter( )" i-syntax nangaphandle kokuthinta izingcingo ngendlela ethi "ku-[1, 2, 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3] )".

  • Kungenzeka ukucacisa izisho “|” (okunengqondo NOMA ukusebenza) kunoma iyiphi ingxenye yesifanekiso, isibonelo, esikhundleni sokuthi “Okunye(1) | Some(2)" you can now write "Okunye(1 | 2)": umphumela wokufanisa { Ok(Some(1 | 2))) => { .. } Err(MyError { kind: FileNotFound | PermissionDenied, .. }) = > { .. } _ => { .. } }
  • Ukusetshenziswa kwezinhlamvu okungezona eze-ASCII kuzihlonzi kuvunyelwe, okuhlanganisa noma yiziphi izinhlamvu zikazwelonke ezichazwe ekucacisweni kwe-Unicode UAX 31, kodwa kungafaki izinhlamvu ze-emoji. Uma usebenzisa izinhlamvu ezihlukile kodwa ezifanayo, umdidiyeli uzokhipha isexwayiso. const BLÅHAJ: &str = "🦈"; i-struct 人 { 名字: Intambo, } vumela u-α = 1; shiya = 2; isixwayiso: ipheya yezihlonzi ezibhekwa njengedidayo phakathi kuka-'s' kanye 'na'
  • Ingxenye entsha yama-API idluliselwe esigabeni esizinzile, okuhlanganisa nalokhu okulandelayo okuzinzile:
    • uhlu::kusuka_ref
    • uhlu::kusuka_ku-mut
    • I-AtomicBool::landa_buyekeza
    • AtomicPtr::fetch_update
    • I-BTreeSet::gcina
    • I-BTreeMap::gcina
    • BufReader::funa_isihlobo
    • cmp::min_by
    • cmp::min_by_key
    • cmp::ubukhulu_nge
    • cmp::max_by_key
    • I-DebugStruct::qeda_akupheleli
    • Ubude besikhathi::ZERO
    • Ubude besikhathi::MAX
    • Ubude besikhathi::nguziro
    • Ubude besikhathi::engeza_okusuthisayo
    • Ubude besikhathi::saturating_sub
    • Ubude besikhathi::i-saturating_mul
    • f32::akujwayelekile
    • f64::akujwayelekile
    • IntoIterator yama-arrays
    • {integer}::AMAQINISO
    • io::Iphutha::Ayisekelwe
    • I-NonZero*::oziro_abaholayo
    • NonZero*::trailing_zero
    • Inketho::faka
    • Uku-oda::is_eq
    • Uku-oda::is_ne
    • Uku-oda::is_lt
    • Iya-oda::is_gt
    • Iya-oda::is_le
    • Iya-oda::is_ge
    • OsStr::make_ascii_lowercase
    • OsStr::make_ascii_uppercase
    • OsStr::to_ascii_lowercase
    • OsStr::to_ascii_uppercase
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • Okubonakalayo::peek_mut
    • Rc::increment_strong_count
    • Rc::decrement_strong_count
    • ucezu::IterMut::as_slice
    • I-AsRef<[T]> yocezu::IterMut
    • impl SliceIndex ye (Bound , Uboshiwe )
    • I-Vec::nweba_kusuka_ngaphakathi
  • Izinga lesithathu losekelo lweplathifomu ye-wam64-engaziwa-engaziwa isetshenzisiwe. Ileveli yesithathu ibandakanya ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo, ukushicilela izakhiwo ezisemthethweni, noma ukuhlola ukuthi ikhodi ingakhiwa yini.
  • Umphathi wephakheji le-Cargo ususiwe ukuze asebenzise igama elithi "main" egatsheni eliyinhloko le-Git repository (HEAD) ngokuzenzakalelayo. Ukuncika okusingathwe kumakhosombe asebenzisa igama eliyinhloko esikhundleni sika-master akusadingi ukuthi igatsha = "main" limiswe.
  • Ku-comiler, izimfuneko zenguqulo encane ye-LLVM ziphakanyiselwe ku-LLVM 10.

Ukwengeza, singaqaphela ukuhlinzekwa kwezimali zokuthuthukiswa kokuhlanganisa ku-Linux kernel yamathuluzi okuthuthukisa izingxenye ngolimi lwe-Rust. Umsebenzi uzokwenziwa ngaphakathi kohlaka lwephrojekthi ye-Prossimo ngaphansi kwenhlangano ye-ISRG (Internet Security Research Group), engumsunguli wephrojekthi ye-Let Encrypt futhi ikhuthaza i-HTTPS kanye nokuthuthukiswa kobuchwepheshe ukukhulisa ukuphepha kwe I-inthanethi. Izimali zizohlinzekwa yi-Google, ezokhokhela umsebenzi ka-Miguel Ojeda, umbhali wephrojekthi ye-Rust-for-Linux. Ngaphambilini, i-ISRG ne-Google sezivele zixhase ukwakhiwa kwe-backend ye-HTTP ehlukile yokusetshenziswa kwama-curl kanye nokuthuthukiswa kwemojula entsha ye-TLS yeseva ye-Apache http.

Ngokusho kweMicrosoft kanye ne-Google, cishe u-70% wokuba sengozini kubangelwa ukuphatha inkumbulo okungaphephile. Kulindeleke ukuthi ukusebenzisa ulimi lwe-Rust ukuthuthukisa izingxenye ze-kernel ezifana nezishayeli zedivayisi kuzonciphisa ingcuphe yokuba sengozini okubangelwa ukuphatha inkumbulo okungaphephile futhi kususe amaphutha afana nokufinyelela indawo yememori ngemva kokuba ikhululiwe kanye nokweqa imingcele yebhafa.

Ukuphepha kwenkumbulo kunikezwa ku-Rust ngesikhathi sokuhlanganiswa ngokuhlolwa kwereferensi, ukulandelela ubunikazi bento kanye nesikhathi sokuphila kwento (ububanzi), kanye nokuhlola ukulunga kokufinyelela inkumbulo ngesikhathi sokukhishwa kwekhodi. I-Rust iphinde inikeze ukuvikeleka ekuchichimeni okuphelele, idinga ukuqaliswa okuyisibopho kwamanani ahlukile ngaphambi kokusetshenziswa, iphatha amaphutha kangcono kulabhulali evamile, isebenzisa umqondo wezithenjwa ezingaguquleki nokuguquguqukayo ngokuzenzakalelayo, inikeza ukuthayipha okuqinile okuqinile ukuze kuncishiswe amaphutha anengqondo.

Source: opennet.ru

Engeza amazwana