Випуск мови програмування Rust 1.69

Опубліковано реліз мови програмування загального призначення Rust 1.69, заснованого проектом Mozilla, але нині розвивається під заступництвом незалежної некомерційної організації Rust Foundation. Мова сфокусована на безпечній роботі з пам'яттю та надає засоби для досягнення високого паралелізму виконання завдань, при цьому обходячись без використання збирача сміття та runtime (runtime зводиться до базової ініціалізації та супроводу стандартної бібліотеки).

Методи роботи з пам'яттю в Rust позбавляють розробника помилок при маніпулюванні покажчиками і захищають від проблем, що виникають через низькорівневу роботу з пам'яттю, таких як звернення до області пам'яті після її звільнення, розіменування нульових покажчиків, вихід за межі буфера і т.п. Для поширення бібліотек, забезпечення збирання та управління залежностями проектом розвивається пакетний менеджер Cargo. Для розміщення бібліотеки підтримується репозиторій crates.io.

Безпечна робота з пам'яттю забезпечується в Rust під час компіляції через перевірку посилань, відстеження володіння об'єктами, облік часу життя об'єктів (області видимості) та оцінку коректності доступу до пам'яті під час виконання коду. Rust також надає засоби для захисту від цілих переповнень, вимагає обов'язкової ініціалізації значень змінних перед використанням, краще обробляє помилки в стандартній бібліотеці, застосовує концепцію незмінності посилань і змінних за умовчанням, пропонує сильну статичну типізацію для мінімізації логічних помилок.

Основні нововведення:

  • У пакетному менеджері Cargo реалізовано визначення попереджень, які можуть бути автоматично усунені, та виведення відповідних рекомендацій щодо запуску «cargo fix» або «cargo clippy —fix». warning: unused import: 'std::hash::Hash' —> src/main.rs:1:5 | 1 | use std::hash::Hash; | ^^^^^^^^^^^^^^^^ | = note: '#[warn(unused_imports)]' on by default warning: 'foo' (bin foo) generated 1 warning (run 'cargo fix —bin foo' to apply 1 suggestion)
  • У Cargo додано висновок рекомендації щодо використання команди cargo add при спробі встановлення бібліотеки командою cargo install.
  • Для скорочення часу компіляції за замовчуванням припинено включення налагоджувальної інформації у складальних скриптах. При успішному виконанні складальних скриптів зміна не призводить до якихось видимих ​​відмінностей, але у разі збоїв дамп із зворотним трасуванням міститиме менше інформації. Для повернення старої поведінки до Cargo.toml слід додати: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • У розряд стабільних переведено нову порцію API, у тому числі стабілізовано методи та реалізації типажів:
    • CStr::from_bytes_until_nul
    • core::ffi::FromBytesUntilNulError
  • Ознака «const», що визначає можливість використання в будь-якому контексті замість констант, застосована у функціях:
    • SocketAddr::new
    • SocketAddr::ip
    • SocketAddr::port
    • SocketAddr::is_ipv4
    • SocketAddr::is_ipv6
    • SocketAddrV4::new
    • SocketAddrV4::ip
    • SocketAddrV4::port
    • SocketAddrV6::new
    • SocketAddrV6::ip
    • SocketAddrV6::port
    • SocketAddrV6::flowinfo
    • SocketAddrV6::scope_id
  • Додана можливість використання прапорів true та false у аргументах компілятора.

Джерело: opennet.ru

Додати коментар або відгук