Выпуск Rust 1.98.0. ΠšΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚Π° arrayref, Π½Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ 53 ΠΌΠ»Π½ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Π·Π° 3 мСсяца

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· языка программирования Rust 1.98, основанного ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Mozilla, Π½ΠΎ Π½Ρ‹Π½Π΅ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄ ΠΏΠΎΠΊΡ€ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎΠΌ нСзависимой нСкоммСрчСской ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Rust Foundation. Π―Π·Ρ‹ΠΊ сфокусирован Π½Π° бСзопасной Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ прСдоставляСт срСдства для достиТСния высокого ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° выполнСния Π·Π°Π΄Π°Π½ΠΈΠΉ, ΠΏΡ€ΠΈ этом ΠΎΠ±Ρ…ΠΎΠ΄ΡΡΡŒ Π±Π΅Π· использования сборщика мусора ΠΈ runtime (runtime сводится ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ).

I metodi di gestione della memoria in Rust mirano a eliminare gli errori durante la manipolazione dei puntatori e a proteggere da problemi derivanti da operazioni a basso livello sulla memoria, come l'accesso a memoria giΓ  liberata, la dereferenziazione di puntatori nulli e il superamento dei limiti del buffer, ecc. Per la distribuzione delle librerie, la gestione della compilazione e delle dipendenze, il progetto ha sviluppato un gestore di pacchetti chiamato Cargo. Per la pubblicazione delle librerie Γ¨ disponibile un repository chiamato crates.io.

La gestione sicura della memoria in Rust Γ¨ garantita durante la compilazione tramite il controllo dei riferimenti, il tracciamento della proprietΓ  degli oggetti, la gestione della durata degli oggetti (scope) e la valutazione della correttezza dell'accesso alla memoria durante l'esecuzione del codice. Rust offre anche strumenti per proteggere da overflow interi, richiede l'inizializzazione obbligatoria dei valori delle variabili prima dell'uso, gestisce meglio gli errori nella libreria standard, applica il concetto di riferimenti e variabili immutabili per impostazione predefinita e offre una forte tipizzazione statica per ridurre al minimo gli errori logici.

NovitΓ  principali:

  • Для Ρ‚ΠΈΠΏΠΎΠ² с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой f32 ΠΈ f64 Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ алгСбраичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для слоТСния, вычитания, умноТСния, дСлСния ΠΈ нахоТдСния остатка, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ, ΠΏΠΎΡ…ΠΎΠΆΡƒΡŽ Π½Π° ΠΎΠΏΡ†ΠΈΡŽ Β«-ffast-mathΒ» Π² компиляторах C/C++. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ порядка ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ вСкторизация Ρ†ΠΈΠΊΠ»ΠΎΠ². НапримСр, ΠΏΡ€ΠΈ вычислСнии Β«a + b + c + dΒ» ΠΏΡ€ΠΈ использовании ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ слоТСния компилятор всСгда Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ вычислСниС Π² ΠΎΠ΄Π½ΠΎΠΌ порядкС Β«((a + b) + c) + dΒ», Π° ΠΏΡ€ΠΈ использовании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° algebraic_add ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Β«(a + b) + (c + d)Β» ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Β«(a + b)Β» ΠΈ Β«(c + d)Β» ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ инструкций SIMD. Π¦Π΅Π½ΠΎΠΉ примСнСния алгСбраичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² являСтся Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² вычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΠΈ.
  • Для всСх ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ встроСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ Β«format_intoΒ» для прСобразования чисСл Π² строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ вмСсто ΠΏΠ°ΠΊΠ΅Ρ‚Π° itoa. Π’ качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° пСрСдаётся Π±ΡƒΡ„Π΅Ρ€ NumBuffer<Self>, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ достаточСн для записи любого значСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² дСсятичном Π²ΠΈΠ΄Π΅. На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ возвращаСтся отформатированная строка &str, врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ привязано ΠΊ Π±ΡƒΡ„Π΅Ρ€Ρƒ.
  • ВзаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ обвязкой ManuallyDrop ΠΈ ΡƒΠΌΠ½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Box Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΌΡƒ повСдСнию.
  • Una nuova serie di API Γ¨ stata traslata nella categoria stabile, stabilizzando i metodi e le implementazioni dei tipi:
    • str::substr_range
    • [T]::subslice_range
    • core::fmt::NumBuffer
    • <{integer}>::format_into
    • Send/Sync for std::process::CommandArgs
    • {fN}::algebraic_add
    • {fN}::algebraic_sub
    • {fN}::algebraic_mul
    • {fN}::algebraic_div
    • {fN}::algebraic_rem
    • NonZero<{integer}>::from_str_radix
    • String::from_utf16le
    • String::from_utf16le_lossy
    • String::from_utf16be
    • String::from_utf16be_lossy
    • [T]::strip_circumfix
    • str::strip_circumfix
    • Atomic<T>::from_mut
    • Atomic<T>::get_mut_slice
    • Atomic<T>::from_mut_slice
    • std::range::legacy
  • Π¦Π΅Π»Π΅Π²Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7r-none-eabi, thumbv7r-none-eabihf ΠΈ thumbv8r-none-eabihf ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Ρ‹ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡŽ сборки, Π½ΠΎ отсутствиС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ тСстового Π½Π°Π±ΠΎΡ€Π°.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ powerpc64-unknown-linux-gnuelfv2 ΠΈ aarch64-unknown-linux-pauthtest, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… обСспСчСн Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ. Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования, ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сборок ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ возмоТности сборки ΠΊΠΎΠ΄Π°.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΡ€ΠΎΠΌΠ΅Ρ‚Π°Ρ†ΠΈΡŽ популярного crate-ΠΏΠ°ΠΊΠ΅Ρ‚Π° arrayref, Π½Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ 53 ΠΌΠ»Π½ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Π·Π° послСдниС 90 Π΄Π½Π΅ΠΉ ΠΈ примСняСмого Π² качСствС зависимости Ρƒ 403 ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². ΠΡ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠ΅ размСстили Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ crates.io Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ proc-macro1, proc-macro-en, aovine, arone, aronenao ΠΈ tinymember, содСрТащиС врСдоносный ΠΊΠΎΠ΄. ПослС этого Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π±Ρ‹Π»ΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ выпуски ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² arrayref 0.3.10, internment 0.8.7 ΠΈ append-only-vec 0.1.9 Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² качСствС зависимости Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ врСдоносный ΠΏΠ°ΠΊΠ΅Ρ‚ proc-macro1. ВрСдоносная вСрсия ΠΏΠ°ΠΊΠ΅Ρ‚Π° arrayref Π±Ρ‹Π»Π° Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π° 20 августа Π² 10:15 (MSK) ΠΈ просущСствовала Π΄ΠΎ 11:41, послС Ρ‡Π΅Π³ΠΎ Π±Ρ‹Π»Π° ΡƒΠ΄Π°Π»Π΅Π½Π° администраторами crates.io.

Π‘ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΌ arrayref ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠ²ΡΠ·Π°Ρ‚ΡŒΡΡ для прояснСния ситуации, Π½ΠΎ прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ ΡƒΡ‡Ρ‘Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½Ρ‹ Π·Π»ΠΎΡƒΠΌΡ‹ΡˆΠ»Π΅Π½Π½ΠΈΠΊΠ°ΠΌΠΈ. Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ proc-macro1 врСдоносноС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ присутствовало Π² сборочном скриптС ΠΈ осущСствляло Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ исполняСмого Ρ„Π°ΠΉΠ»Π° с внСшнСго server. Π—Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² Unix-систСмах сохранялся ΠΊΠ°ΠΊ /tmp/rust-setup, Π° Π² Windows β€” %TEMP%\rust-setup.ps1 ΠΈΠ»ΠΈ %TEMP%\rust-setup-launch.vbs.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS πŸ”₯ Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster