ИзданиС Π½Π° програмния Π΅Π·ΠΈΠΊ Rust 1.37

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

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

Основни нововъвСдСния:

  • Π’ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° rustc Π΅ осигурСна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° оптимизация Π½Π° Π±Π°Π·Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° (PGO, Profile-Guided Optimization),
    която позволява Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΠΎ-ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ ΠΊΠΎΠ΄ Π½Π° Π±Π°Π·Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° статистиката, Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Π½Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°. Π—Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ» Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π½ Ρ„Π»Π°Π³ β€ž-C profile-generateβ€œ, Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° ΠΏΡ€ΠΈ компилация β€” β€ž-C profile-useβ€œ (ΠΏΡŠΡ€Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° с ΠΏΡŠΡ€Π²ΠΈΡ Ρ„Π»Π°Π³, тСства сС ΠΈ слСд ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΡ„ΠΈΠ»Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ с втория Ρ„Π»Π°Π³);
  • ΠŸΡ€ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žcargo runβ€œ, която Π΅ ΡƒΠ΄ΠΎΠ±Π½Π° Π·Π° Π±ΡŠΡ€Π·ΠΎ тСстванС Π½Π° консолни прилоТСния, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° сС ΠΈΠ·Π±ΠΈΡ€Π° изпълним Ρ„Π°ΠΉΠ» Π·Π° стартиранС, Π² случай Ρ‡Π΅ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π°Ρ‚ няколко изпълними Ρ„Π°ΠΉΠ»Π°. Π˜Π·ΠΏΡŠΠ»Π½ΠΈΠΌΠΈΡΡ‚ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ„Π°ΠΉΠ» сС опрСдСля Ρ‡Ρ€Π΅Π· Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° default-run Π² сСкцията [package] с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°, която позволява Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ явно посочванС Π½Π° ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° Ρ‡Ρ€Π΅Π· Ρ„Π»Π°Π³Π° β€žβ€”binβ€œ ΠΏΡ€ΠΈ всяко стартиранС Π½Π° β€žcargo runβ€œ;
  • Π’ пакСтния ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ Cargo Π΅ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žcargo vendorβ€œ, ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° прСдоставяна ΠΊΠ°Ρ‚ΠΎ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚. ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° позволява ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с Π»ΠΎΠΊΠ°Π»Π½Π° ΠΊΠΎΠΏΠΈΠ΅ Π½Π° зависимоститС β€” слСд ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° β€žcargo vendorβ€œ всички ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ тСкстовС Π½Π° зависимоститС Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС изтСглят ΠΎΡ‚ crates.io Π² Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, ΠΊΠΎΠΉΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π±Π΅Π· Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ към crates.io (слСд ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° сС ΠΏΠΎΠΊΠ°Π·Π²Π° подсказка Π·Π° промяна Π½Π° конфигурацията Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ). ΠŸΠΎΡΠΎΡ‡Π΅Π½Π°Ρ‚Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π²Π΅Ρ‡Π΅ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° доставката Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° rustc с ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° всички зависимости Π² Π΅Π΄ΠΈΠ½ Π°Ρ€Ρ…ΠΈΠ² с вСрсията;
  • Появи сС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° създаванС Π½Π° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ към Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ Π½Π° изброяванС (enum), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ псСвдоними Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² тялото Π½Π° функцията β€žfn increment_or_zero(x: ByteOption) ΠΌΠΎΠΆΠ΅ Π΄Π° сС посочи β€žByteOption::None => 0β€œ), конструкции Π·Π° вычислСниС Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ (β€ΉMyTypeβ€Ή..β€Ίβ€Ί::Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ => N) ΠΈΠ»ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏΠΈ към Self (Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ с &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,
    Option::xor,
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits ΠΈ
    slice::copy_within.

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster