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:

  • Π’ компиляторС rustc salama ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° основС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² профилирования ΠΊΠΎΠ΄Π° (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 (Π² Π±Π»ΠΎΠΊΠ°Ρ… 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,
    Option::xor,
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits ΠΈ
    slice::copy_within.

Kwa kuongeza, inaweza kuzingatiwa kuanza kwa majaribio ya mradi huo Async-std, ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‰Π΅Π³ΠΎ асинхронный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Rust (ΠΏΠΎΡ€Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ std, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всС интСрфСйсы ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Π² вСрсии с async ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ для использования с синтаксисом async/await).

Chanzo: opennet.ru

Kuongeza maoni