Kutolewa kwa lugha ya programu ya kutu 1.44

iliyochapishwa kutolewa kwa lugha ya programu ya mfumo Kutu 1.44, iliyoanzishwa na mradi wa Mozilla. Lugha inazingatia usalama wa kumbukumbu, hutoa usimamizi wa kumbukumbu kiotomatiki, na hutoa zana za kufikia ulinganifu wa juu wa kazi bila kutumia mtoza taka na. Runtime.

Udhibiti wa kumbukumbu otomatiki wa Rust huondoa hitilafu wakati wa kuchezea viashiria na hulinda dhidi ya matatizo yanayotokana na upotoshaji wa kumbukumbu wa kiwango cha chini, kama vile kufikia eneo la kumbukumbu baada ya kuachiliwa, vielekezo visivyofaa vya vielelezo, utiririshaji wa bafa, n.k. Kidhibiti kifurushi kinatayarishwa ili kusambaza maktaba, kuhakikisha kukusanya na kudhibiti utegemezi wa mradi. Cargo, ambayo hukuruhusu kupata maktaba unayohitaji kwa programu hiyo kwa mbofyo mmoja. Hifadhi inaauniwa kwa kupangisha maktaba crates.io.

Katika maandishi ya tangazo la toleo jipya, watengenezaji wa Rust walijihusisha na siasa na walikataa kabisa kuchapisha hakiki kamili ya mabadiliko katika Rust 1.44 kama ishara ya mshikamano na waandamanaji dhidi ya vurugu za polisi, ikionyesha kuwa suala hili ni muhimu zaidi. kuliko kubadilishana maarifa ya kiufundi. Msingi ubunifu:

  • Kidhibiti cha kifurushi cha Mizigo huunganisha amri ya "mti wa mizigo", ambayo inaonyesha grafu ya utegemezi kama mti. Pia imeongezwa ni chaguo "-duplicates" ("cargo tree -d"), ambayo hukuruhusu kutathmini utegemezi katika matoleo tofauti ya kifurushi kimoja.

    mdbook v0.3.2 (/Watumiaji/src/rust/mdbook)
    ├── amonia v3.0.0
    │ ├── html5ever v0.24.0
    │ │ ├── logi v0.4.8
    │ │ │ └── cfg-kama v0.1.9
    │ │ ├── mac v0.1.1
    │ │ └── markup5ever v0.9.0
    │ │ ├── logi v0.4.8 (*)
    │ │ ├── phf v0.7.24
    │ │ │ └── phf_imeshirikiwa v0.7.24
    │ │ │ ├── siphasher v0.2.3
    │ │ │ └── unicase v1.4.2
    │ │ │ [utegemezi wa kujenga] │ │ │ └── toleo_angalia v0.1.5
    ...

  • Kwa programu zisizofungamana na std ("#![no_std]"), usaidizi wa mbinu za upangaji zisizolingana hutekelezwa kulingana na chaguo la kukokotoa la "async", hatua ya kusawazisha { ... } kizuizi na opereta ".await", ambayo kurahisisha uandishi wa vishikilizi visivyozuia mtiririko wa amri kuu.
  • Usaidizi wa mpango wa ufafanuzi wa daraja la moduli unaopanuliwa umeongezwa kwa kichanganuzi. Kwa mfano, muundo ufuatao hautatoa hitilafu, licha ya kukosekana kwa moduli "foo/bar/baz.rs" (ujenzi bado ni batili kisemantiki na unaweza kusababisha hitilafu, lakini mabadiliko yanaweza kuonekana na kuchanganuliwa kwa kiwango cha mkusanyiko wa jumla na masharti):

    #[cfg(FALSE)] mod foo {
    upau wa mod {
    mod baz;
    }
    }

  • Kikusanyaji cha rustc kimeongeza uwezo wa kutumia alama ya "-C codegen-units" katika hali ya nyongeza. Utekelezaji wa catch_unwind umefanyiwa kazi upya ili usiwe na athari ya utendakazi ikiwa mchakato wa kufuta umezimwa na hakuna ubaguzi utakaotupwa.
  • Usaidizi wa kiwango cha 64 umetolewa kwa majukwaa ya aarch64-haijulikani-hakuna, aarch64-haijulikani-none-softfloat, arm86-apple-tvos na x64_XNUMX-apple-tvos. Ngazi ya tatu inahusisha usaidizi wa kimsingi, lakini bila kupima kiotomatiki na uchapishaji wa miundo rasmi.
  • Sehemu mpya ya API imehamishiwa kwenye aina thabiti, ikiwa ni pamoja na kuimarishwa
    PathBuf ::na_uwezo,
    PathBuf ::uwezo,
    PathBuf ::wazi,
    PathBuf ::hifadhi,
    PathBuf::hifadhi_sawa,
    PathBuf::punguza_ili_kutoshea,
    {f32|f64}::to_int_unchecked,
    Muundo::align_to,
    Muundo:: pedi_ili_kulinganisha,
    Mpangilio::safu na
    Mpangilio::panua.

  • Utendaji uliopanuliwa wa maktaba ya kawaida:
    • Imeongeza kibadala maalum cha "vec![]" ambacho kinaakisiwa moja kwa moja katika Vec::new(), kuruhusu "vec![]" kutumika katika muktadha badala ya viunga.
    • Utekelezaji (impl) wa sifa umeongezwa ili kubadilisha::Infallible Hash.
    • OsString hutumia viashiria mahiri DerefMut и IndexMut, inarudisha "&mut OsStr".
    • Usaidizi ulioongezwa kwa Unicode 13.
    • Inatekelezwa katika String Kutoka.
    • IoSlice inatekeleza sifa hiyo Nakala.
    • Vec zana Kutoka.
    • proc_macro::LexError inatekeleza fmt::Onyesho na Hitilafu.
  • Sifa ya "const", ambayo huamua ikiwa inaweza kutumika katika muktadha wowote badala ya viunga, inatumika katika mbinu za from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes na to_ne_bytes kwa aina zote kamili.
  • Usaidizi umeongezwa wa kuzalisha maktaba tuli katika umbizo la ".a" badala ya ".lib" kwa mifumo ya GNU kwenye Windows.
  • Mahitaji ya chini ya LLVM yamepandishwa hadi toleo la 8 la LLVM.

Chanzo: opennet.ru

Kuongeza maoni