Kutolewa kwa lugha ya programu ya kutu 1.37

iliyochapishwa kutolewa kwa lugha ya programu ya mfumo Kutu 1.37, iliyoanzishwa na mradi wa Mozilla. Lugha inazingatia usalama wa kumbukumbu, hutoa usimamizi wa kumbukumbu otomatiki, na hutoa njia ya kufikia usawa wa juu wa kazi bila kutumia mtoza takataka au wakati wa kukimbia.

Udhibiti wa kumbukumbu otomatiki wa Rust huokoa msanidi programu dhidi ya vielelezo vya kudhibiti na hulinda dhidi ya matatizo yanayotokana na uchezaji wa kumbukumbu ya kiwango cha chini, kama vile kufikia eneo la kumbukumbu baada ya kuachiliwa, kuondoa marejeleo ya viashiria, utiririshaji wa bafa, n.k. Ili kusambaza maktaba, hakikisha kukusanya na kudhibiti utegemezi, mradi huunda msimamizi wa kifurushi Cargo, ambayo hukuruhusu kupata maktaba unayohitaji kwa programu hiyo kwa mbofyo mmoja. Hifadhi inaauniwa kwa kupangisha maktaba crates.io.

kuu ubunifu:

  • Katika mkusanyiko wa rustc salama usaidizi wa uboreshaji kulingana na matokeo ya uwekaji wasifu wa msimbo (PGO, Uboreshaji Unaoongozwa na Wasifu),
    hukuruhusu kutoa nambari bora zaidi kulingana na uchanganuzi wa takwimu zilizokusanywa wakati wa utekelezaji wa programu. Ili kutengeneza wasifu, bendera ya "-C-profile-generate" imetolewa, na kutumia wasifu wakati wa kukusanyika - "-C profile-use" (hapo awali, programu inakusanywa na bendera ya kwanza, inazunguka, na baada ya kuunda. wasifu, umeunganishwa tena na bendera ya pili);

  • Wakati wa kutekeleza amri ya "kukimbia kwa mizigo", ambayo ni rahisi kutumia kwa ajili ya kupima haraka maombi ya console, uwezo wa kuchagua kiotomatiki faili inayoweza kutekelezwa imeongezwa ikiwa kuna faili kadhaa zinazoweza kutekelezwa kwenye mfuko. Faili chaguo-msingi kitakachotekelezwa hubainishwa kupitia maagizo ya chaguo-msingi katika sehemu ya [kifurushi] yenye vigezo vya kifurushi, ambayo hukuruhusu kuepuka kubainisha jina la faili kwa njia ya bendera ya "-bin" kila wakati unapoendesha "kuendesha mizigo";
  • Amri ya "muuzaji wa mizigo", iliyotolewa hapo awali kama kifurushi tofauti. Amri inakuruhusu kupanga kazi na nakala ya ndani ya tegemezi - baada ya kutekeleza "muuzaji wa mizigo", misimbo yote ya chanzo ya utegemezi wa mradi hupakuliwa kutoka kwa crates.io hadi saraka ya ndani, ambayo inaweza kutumika kwa kazi bila kufikia makreti. io (baada ya kutekeleza amri, kidokezo cha kubadilisha usanidi kinaonyeshwa kutumia saraka kwa ujenzi). Kipengele hiki tayari kinatumika kuandaa uwasilishaji wa mkusanyaji wa rustc na ufungaji wa tegemezi zote katika kumbukumbu moja na kutolewa;
  • Sasa inawezekana kuunda viungo vya chaguzi za enum kwa kutumia lakabu za aina (kwa mfano, katika mwili wa chaguo za kukokotoa "fn increment_or_zero(x: ByteOption) unaweza kubainisha "ByteOption::None => 0"), chapa miundo ya hesabu (β€Ή MyTypeβ€Ή.. β€Ίβ€Ί::option => N) au Inajifikia (katika vizuizi c &self unaweza kubainisha "Self::Quarter => 25");
  • Imeongeza uwezo wa kuunda viboreshaji visivyo na jina katika macros. Badala ya kufafanua jina la kipengee katika "const", sasa unaweza kutumia herufi "_" ili kuchagua kitambulisho kisichojirudia, kuepusha migongano ya majina unapoita macro tena;
  • Imeongeza uwezo wa kutumia sifa ya "#[repr(align(N))" na enums kwa kutumia sintaksia sawa na kufafanua AlignNβ€ΉTβ€Ί muundo kwa upatanishi na kisha kutumia AlignNβ€ΉMyEnumβ€Ί;
  • Sehemu mpya ya API imehamishwa hadi kwa kategoria thabiti, ikijumuisha BufReader::buffer, BufWriter::buffer, na
    Kiini::kutoka_mut,
    Kiini::kama_kipande_cha_seli,
    DoubleEndedIterator::nth_back,
    Chaguo::xor
    {i,u}{8,16,64,128,size}::biti_za_reverse, Wrapping::reverse_bits na
    kipande::nakala_ndani.

Kwa kuongeza, inaweza kuzingatiwa kuanza kwa majaribio ya mradi huo Async-std, ambayo inatoa lahaja isiyolingana ya maktaba ya kiwango cha Rust (mlango wa maktaba ya std, ambamo violesura vyote vinatolewa katika toleo la usawazishaji na viko tayari kutumika na syntax ya async/ait).

Chanzo: opennet.ru

Kuongeza maoni