ИздаванС Π½Π° Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Rust 1.37

ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΈ вСрсия Π½Π° систСмния Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ РъТда 1.37, основана ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Mozilla. Π•Π·ΠΈΠΊΡŠΡ‚ сС фокусира Π²ΡŠΡ€Ρ…Ρƒ бСзопасността Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°, осигурява Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ осигурява срСдства Π·Π° постиганС Π½Π° висок ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅, Π±Π΅Π· Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡŠΠ±ΠΈΡ€Π°Ρ‡ Π½Π° ΠΎΡ‚ΠΏΠ°Π΄ΡŠΡ†ΠΈ ΠΈΠ»ΠΈ срСда Π·Π° изпълнСниС.

Автоматичното ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° Rust освобоТдава Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° указатСля ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠ°Π·Π²Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡ€ΠΎΠΈΠ·Ρ‚ΠΈΡ‡Π°Ρ‰ΠΈ ΠΎΡ‚ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π° ниско Π½ΠΈΠ²ΠΎ, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚ слСд освобоТдаванС, Π΄Π΅Ρ€Π΅Ρ„Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΡƒΠ»Π΅Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π», ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π° сС ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° разпространСниС Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, осигуряванС Π½Π° сглобяванС ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° зависимости ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Π’ΠΎΠ²Π°Ρ€Π΅Π½, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с Π΅Π΄Π½ΠΎ ΠΊΠ»ΠΈΠΊΠ²Π°Π½Π΅. ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° сС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° хостванС Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ crates.io.

ΠžΡΠ½ΠΎΠ²Π½Π°Ρ‚Π° ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ:

  • Π’ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° rustc прСдоставСни ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° оптимизация въз основа Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ (PGO, оптимизация, Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄Π΅Π½Π° ΠΎΡ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ),
    ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎ-ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ ΠΊΠΎΠ΄ въз основа Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° статистиката, Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Π½Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°. Π—Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ» Π΅ прСдоставСн Ρ„Π»Π°Π³ΡŠΡ‚ β€ž-C profile-generateβ€œ ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° асСмблиранС - β€ž-C profile-useβ€œ (ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° сС сглобява с ΠΏΡŠΡ€Π²ΠΈΡ Ρ„Π»Π°Π³, Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π°ΠΎΠΊΠΎΠ»ΠΎ ΠΈ слСд създаванС ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŠΡ‚, Ρ‚ΠΎΠΉ сС сглобява ΠΎΡ‚Π½ΠΎΠ²ΠΎ с втория Ρ„Π»Π°Π³);

  • ΠŸΡ€ΠΈ изпълнСниС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žcargo runβ€œ, която Π΅ ΡƒΠ΄ΠΎΠ±Π½Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π·Π° Π±ΡŠΡ€Π·ΠΎ тСстванС Π½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π½ΠΈ прилоТСния, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΈΠ·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° изпълним Ρ„Π°ΠΉΠ» Π·Π° изпълнСниС, Π°ΠΊΠΎ ΠΈΠΌΠ° няколко изпълними Ρ„Π°ΠΉΠ»Π° Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π€Π°ΠΉΠ»ΡŠΡ‚ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ бъдС изпълнСн, сС опрСдСля Ρ‡Ρ€Π΅Π· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° Π·Π° изпълнСниС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π² сСкцията [package] с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎΡ‚ΠΎ посочванС Π½Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° Ρ‡Ρ€Π΅Π· Ρ„Π»Π°Π³Π° β€ž-binβ€œ всСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ стартиратС β€žcargo runβ€œ;
  • ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‡ Π½Π° Ρ‚ΠΎΠ²Π°Ρ€ΠΈβ€œ, доставяна ΠΏΡ€Π΅Π΄ΠΈ ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚. ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π²ΠΈ позволява Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π° с Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΊΠΎΠΏΠΈΠ΅ Π½Π° зависимости - слСд изпълнСниС Π½Π° β€žΠΏΡ€ΠΎΠ΄Π°Π²Π°Ρ‡ Π½Π° Ρ‚ΠΎΠ²Π°Ρ€ΠΈβ€œ, всички ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π½Π° зависимоститС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС изтСглят ΠΎΡ‚ crates.io Π² Π»ΠΎΠΊΠ°Π»Π½Π° дирСктория, която слСд Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π±Π΅Π· Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ каси. io (слСд изпълнСниС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° сС ΠΏΠΎΠΊΠ°Π·Π²Π° подсказка Π·Π° промяна Π½Π° конфигурацията Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° дирСкторията Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ). Π’Π°Π·ΠΈ функция Π²Π΅Ρ‡Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° доставката Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° rustc с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° всички зависимости Π² Π΅Π΄ΠΈΠ½ Π°Ρ€Ρ…ΠΈΠ² с ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ;
  • Π’Π΅Ρ‡Π΅ Π΅ възмоТно Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠΈ към ΠΎΠΏΡ†ΠΈΠΈ Π·Π° enum, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ псСвдоними Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² тялото Π½Π° функцията β€žfn increment_or_zero(x: ByteOption) ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС β€žByteOption::None => 0β€œ), конструкции Π·Π° изчислСниС Π½Π° Ρ‚ΠΈΠΏΠ° (β€Ή MyTypeβ€Ή.. β€Ίβ€Ί::option => N) ΠΈΠ»ΠΈ Self accesss (Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅ c &self ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС β€žSelf::Quarter => 25β€œ);
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° създаванС Π½Π° Π½Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ΠΈ константи Π² макроси. ВмСсто Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° Π² "const", сСга ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π·Π½Π°ΠΊΠ° "_" Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅Π½ ΠΈΠ·Π±ΠΎΡ€ Π½Π° нСповтарящ сС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, ΠΊΠ°Ρ‚ΠΎ избягватС ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ Π½Π° ΠΈΠΌΠ΅Π½Π° ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° макроса;
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° "#[repr(align(N))" с enums, ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° синтаксис, ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° AlignNβ€ΉTβ€Ί структура с подравняванС ΠΈ слСд Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° AlignNβ€ΉMyEnumβ€Ί;
  • Нова част ΠΎΡ‚ API Π΅ прСмСстСна Π² стабилната катСгория, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ BufReader::buffer, BufWriter::buffer ΠΈ
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    ΠžΠΏΡ†ΠΈΡ::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits ΠΈ
    slice::copy_within.

ОсвСн Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° тСстватС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Асинхронно стандартно, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° асинхронСн Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Rust (ΠΏΠΎΡ€Ρ‚ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° std, Π² ΠΊΠΎΠΉΡ‚ΠΎ всички интСрфСйси сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ Π² асинхронна вСрсия ΠΈ са Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ със синтаксис async/await).

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€