Rust 1.68 Famoahana ny fiteny fandaharana

Navoaka ny fiteny fandaharana Rust 1.68 amin'ny tanjona ankapobeny, naorin'ny tetikasa Mozilla saingy novolavolaina ankehitriny eo ambany fiahian'ny fikambanana tsy miankina Rust Foundation. Mifantoka amin'ny fiarovana ny fitadidiana ilay fiteny ary manome fitaovana ahafahana manatratra ny fitovian'ny asa avo lenta sady misoroka ny fampiasana mpanangom-pako sy ny fotoana fandehanana (ahena ny fotoana fampandehanana amin'ny fanombohana fototra sy fikojakojana ny tranomboky mahazatra).

Ny fomba fitantanana fitadidian'i Rust dia mamonjy ny mpamorona amin'ny hadisoana rehefa manodinkodina ny tondro ary miaro amin'ny olana mipoitra noho ny fikarakarana fitadidiana ambany, toy ny fidirana amin'ny faritra fitadidiana rehefa afaka izany, ny fanafoanana ireo tondro tsy misy dikany, ny fihoaran'ny buffer, sns. Mba hizarana trano famakiam-boky, manome fananganana ary mitantana ny fiankinan-doha, ny tetikasa dia mamolavola ny mpitantana fonosana Cargo. Ny tahiry crates.io dia tohanana amin'ny fampiantranoana tranomboky.

Ny fiarovana ny fitadidiana dia omena ao amin'ny Rust amin'ny fotoana fanangonana amin'ny alΓ lan'ny fanamarinana reference, ny fanaraha-maso ny fananana zavatra, ny fanaraha-maso ny androm-piainan'ny zavatra (scopes), ary ny fanombanana ny fahamarinan'ny fidirana fahatsiarovana mandritra ny famonoana ny code. Ny Rust koa dia manome fiarovana amin'ny fihoaran'ny integer, mitaky fanombohana tsy maintsy atao ny soatoavina miovaova alohan'ny fampiasana, mitantana ny lesoka tsara kokoa ao amin'ny tranomboky mahazatra, mampihatra ny foto-kevitry ny references sy ny variables tsy miova amin'ny alΓ lan'ny default, manolotra fanoratana static mahery mba hampihenana ny fahadisoana lojika.

Fanavaozana lehibe:

  • Π’ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π΅ Cargo ΠΈ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ crates.io стабилизирована ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Sparse, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ способ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с индСксом, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½Ρ‹ доступныС вСрсии всСх ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Новый ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» позволяСт сущСствСнно ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с crates.io ΠΈ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΈ дальнСйшСм ростС числа ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ.

    Для сокращСния Π·Π°Π΄Π΅Ρ€ΠΆΠ΅ΠΊ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΈΠ·-Π·Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ индСкса, Π² Sparse вмСсто доступа ΠΊ индСксу с использованиСм Git задСйствована прямая Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΏΠΎ HTTPS Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… индСксных Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… зависимости ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. Для ΠΎΡ‚Π΄Π°Ρ‡ΠΈ индСксных Π΄Π°Π½Π½Ρ‹Ρ… задСйствован Π½ΠΎΠ²Ρ‹ΠΉ сСрвис index.crates.io. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Π²Π΅Ρ‚ΠΊΠ΅ Rust 1.70, Π° Π΄ΠΎ этого для Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния Β«CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparseΒ» ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΡΠ΅ΠΊΡ†ΠΈΡŽ Β«[registries.crates-io]Β» Ρ„Π°ΠΉΠ»Π° .cargo/config.toml ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ β€˜protocol = Β«sparseΒ»β€˜.

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ макрос Β«pin!Β», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ структуру Pin<&mut T> ΠΈΠ· выраТСния Β«TΒ» с Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π°ΠΊΡ€Π΅ΠΏΠ»Π΅Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ состояния (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Box::pin Π½Π΅ выдСляСт ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² ΠΊΡƒΡ‡Π΅, Π° выполняСт привязку Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ стСка).
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ примСняСмый ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ошибок распрСдСлСния памяти, примСняСмый ΠΏΡ€ΠΈ использовании ΡˆΡ‚Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° alloc. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ alloc (Π±Π΅Π· std) ΠΏΡ€ΠΈ сбоях выдСлСния памяти ΠΎΡ‚Π½Ρ‹Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Β«panic!Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‡Π΅Π½ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Β«#[panic_handler]Β». ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ std, ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ошибкС Π² stderr ΠΈ Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.
  • Ny ampahany vaovao amin'ny API dia nafindra ho amin'ny sokajy stable, ao anatin'izany ny fomba sy ny fampiharana ny toetra efa niorina:
    • {core,std}::pin::pin!
    • impl From<bool> for {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut для PathBuf
  • ΠŸΡ€ΠΈΠ·Π½Π°ΠΊ Β«constΒ», ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ использования Π² любом контСкстС вмСсто констант, ΠΏΡ€ΠΈΠΌΠ΅Π½Ρ‘Π½ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ VecDeque::new.
  • Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ трСбуСтся ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ NDK r25 (API 19), Ρ‚.Π΅. минимальная поддСрТиваСмая вСрсия Android ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½Π° Π΄ΠΎ 4.4 (KitKat).
  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). Π’Ρ€Π΅Ρ‚ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Π½ΠΎ Π±Π΅Π· Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ тСстирования, ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… сборок ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ возмоТности сборки ΠΊΠΎΠ΄Π°.

Source: opennet.ru

Add a comment