Rust 1.38 Whakaputa Reo Papatono

whakaputaina te tuku reo hootaka punaha Rust 1.38, i hangaia e te kaupapa Mozilla. E aro ana te reo ki te haumaru mahara, e whakarato ana i te whakahaere mahara aunoa, me te whai huarahi ki te whakatutuki i te whakarara mahi teitei me te kore e whakamahi i te kaikohi paru, i te wa whakahaere ranei.

Ma te whakahaere mahara aunoa a Rust ka wetekina te kaiwhakawhanake mai i te raweke i te atatohu me te whakamarumaru i nga raru ka puta mai i te raweke mahara taumata-iti, penei i te uru mahara kore-muri, te kore tohu tohu kore, te paopao, me era atu. Kei te whakawhanakehia he kaiwhakahaere mokihi hei tohatoha whare pukapuka, hei whakarite i te huihuinga me te whakahaere i nga whakawhirinakitanga a te kaupapa. utanga, ka taea e koe te tiki i nga whare pukapuka e hiahiatia ana mo te kaupapa i te paato kotahi. Ka tautokohia he putunga hei manaaki i nga whare pukapuka crates.io.

Main nga mahi auaha:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½ΠΎΠΉ компиляции (pipelined), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сборка зависимого crate-ΠΏΠ°ΠΊΠ΅Ρ‚Π° начинаСтся сразу ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ становятся доступны ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ зависимости, Π½Π΅ доТидаясь Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π΅Ρ‘ компиляции. ΠŸΡ€ΠΈ компиляции ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ зависимости Π±Ρ‹Π»ΠΈ собраны ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, достаточно лишь опрСдСлСния ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΡ… списки Ρ‚ΠΈΠΏΠΎΠ², зависимостСй ΠΈ экспортируСмых элСмСнтов. ΠœΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Π΅ становятся доступны Π½Π° Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌ этапС компиляции, поэтому связанныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅. ΠŸΡ€ΠΈ сборкС ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Π½Π΅ сказываСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π½ΠΎ Ссли сборка ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ с Ρ€Π°Π·Π²Π΅Ρ‚Π²Π»Ρ‘Π½Π½Ρ‹ΠΌΠΈ зависимостями, ΠΎΠ±Ρ‰Π΅Π΅ врСмя сборки ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π½Π° 10-20%;
  • ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΎ выявлСниС Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ примСнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ std::mem::uninitialized ΠΈ std::mem::zeroed. НапримСр, std::mem::uninitialized ΡƒΠ΄ΠΎΠ±Π΅Π½ для быстрого создания массивов, Π½ΠΎ Π²Π²ΠΎΠ΄ΠΈΡ‚ компилятор Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ выполнСния ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ остаётся Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ. Ѐункция mem::uninitialized ΡƒΠΆΠ΅ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π° ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ°Ρ ΠΈ вмСсто Π½Π΅Ρ‘ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ MaybeUninit. Π§Ρ‚ΠΎ касаСтся mem::zeroed, Ρ‚ΠΎ данная функция ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ с Ρ‚ΠΈΠΏΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ значСния.

    Для выявлСния Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ повСдСния Π² Π½ΠΎΠ²ΠΎΠΌ выпускС Π² компилятор Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° lint-ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Π²Ρ‹ΡΠ²Π»ΡΡŽΡ‰Π°Ρ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ c mem::uninitialized ΠΈΠ»ΠΈ mem::zeroed. НапримСр, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выводится ошибка ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ использования mem::uninitialized ΠΈΠ»ΠΈ mem::zeroed с Ρ‚ΠΈΠΏΠ°ΠΌΠΈ &T ΠΈ Boxβ€ΉTβ€Ί, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹-ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ значСния;

  • Π Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ возмоТности примСнСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Β«#[deprecated]Β», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ crate-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌΠΈ ΠΈ Π½Π°ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ для удалСния Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. Начиная с вСрсии Rust 1.38 Π΄Π°Π½Π½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для макросов;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ примСнСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Β«#[global_allocator]Β» Π² субмодулях;
  • He waahanga taapiri std::any::type_name, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡƒΠ·Π½Π°Ρ‚ΡŒ имя Ρ‚ΠΈΠΏΠ°, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π² ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½Ρ‹Ρ… цСлях. НапримСр, Π² процСссС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ для ΠΊΠ°ΠΊΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π±Ρ‹Π»Π° Π²Ρ‹Π·Π²Π°Π½Π° функция:

    fn gen_valueβ€ΉT: Default>() -β€Ί T {
    println!(Β«Initializing an instance of {}Β», std::any::type_name::β€ΉTβ€Ί());
    Default::default()
    }

    fn matua() {
    let _: i32 = gen_value(); # Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Β«i32Β»
    let _: String = gen_value(); # Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Β«alloc::string::StringΒ»
    }

  • Nga mahi roa o te whare pukapuka paerewa:
    • slice::{concat, connect, join} Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ &[T] ΠΏΠΎΠΌΠΈΠΌΠΎ &T;
    • Β«*const TΒ» ΠΈ Β«*mut TΒ» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ marker::Unpin;
    • Β«Arcβ€Ή[T]β€ΊΒ» ΠΈ Β«Rcβ€Ή[T]β€ΊΒ» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ FromIteratorβ€ΉTβ€Ί;
    • iter::{StepBy, Peekable, Take} Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ DoubleEndedIterator.
    • ascii::EscapeDefault Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Clone ΠΈ Display.
  • He waahanga hou o nga API kua whakawhitia ki te waahanga pumau, tae atu ki nga tikanga kua whakapumautia
    • β€Ή*const Tβ€Ί::cast, β€Ή*mut Tβ€Ί::cast,
    • Duration::as_secs_f{32|64},
    • Duration::div_duration_f{32|64},
    • Duration::div_f{32|64},
    • Duration::from_secs_f{32|64},
    • Duration::mul_f{32|64},
    • ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ дСлСния с остатком
      div_euclid ΠΈ rem_euclid для всСх цСлочислСнных ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ²;

  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ cargo Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° указания ΠΎΠΏΡ†ΠΈΠΈ Β«β€”featuresΒ» нСсколько Ρ€Π°Π· для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Ρ€Π°Π·Π½Ρ‹Ρ… возмоТностСй;
  • Π’ компиляторС обСспСчСн Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ kōeke ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ для Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-msvc targets, armv7-unknown-linux-gnueabi, armv7-unknown-linux-musleabi, hexagon-unknown-linux-musl ΠΈ riscv32i-unknown-none-elf. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сборок.

Source: opennet.ru

Tāpiri i te kōrero