უკან დაბრუნება

Rust 1.100.0 გამოვიდა: never ტიპი, allocator API და Cargo-ს ცვლილებები
SiTech AI Team2 წთ. საკითხავი

Rust 1.100.0 გამოვიდა: never ტიპი, allocator API და Cargo-ს ცვლილებები

Rust 1.100.0 rustup-ით უკვე ხელმისაწვდომია და ასტაბილიზებს never ტიპს, allocator API-ის ნაწილებს, DropGuard-ს, Cargo-ს გამოუყენებელი დამოკიდებულებების შეტყობინებებს, build cache-ის ცვლილებებსა და პუბლიკაციის მინიმალური ასაკის რეზოლუციას.

Rust 1.100.0 ახლა უკვე ხელმისაწვდომია rustup update stable ბრძანებით. გამოშვება ასტაბილიზებს never ტიპს, allocator API-ს ბირთვულ ნაწილებს, core::mem::DropGuard-ს, core::mem::conjure_zst-ს და Cargo-ს რამდენიმე შესაძლებლობას, მათ შორის გამოუყენებელი დამოკიდებულებების შესახებ მოხსენებას, build დირექტორიის განლაგების ცვლილებებსა და პუბლიკაციის მინიმალური ასაკის შემოწმებებს.

Never ტიპი სტაბილური ხდება

10 წლისა და სტაბილიზაციის ხუთი წარუმატებელი მცდელობის შემდეგ never ტიპი, რომელიც კოდში „!“ ნიშნით იწერება, სტაბილურია. ეს არის კანონიკური ცარიელი ტიპი იმ გამოთვლებისთვის, რომლებიც არასდროს აბრუნებენ შედეგს, და მისი გარდაქმნა ნებისმიერ სხვა ტიპად შესაძლებელია. ეს გამოშვება ასევე იძლევა საშუალებას, never ტიპი ყველგან დავასახელოთ, მათ შორის Result-ში, და Infallible-ს never ტიპის ალიასად აქცევს. 2024 წლამდე edition-ებში never ტიპის fallback ერთეულის ტიპიდან (()) never ტიპზე გადადის, რაც შეიძლება იშვიათ კოდზე იმოქმედოს და უფრო მეტი კოდი აღარასოდეს შესრულდეს.

Allocator API და DropGuard

Rust 1.100.0 ასტაბილიზებს allocator_api-ის ბირთვულ ნაწილებს, რაც საშუალებას გვაძლევს, Allocator ტრეიტის მეშვეობით Vec-სა და Box-თან მორგებული ალოკატორები გამოვიყენოთ. გამოშვება ასევე ნერგავს core::mem::DropGuard-ს, რომელიც drop-ის დროს closure-ს ასრულებს და მხარს უჭერს dismiss-ს, რათა დაცული ცვლადი დესტრუქტორის გაშვების გარეშე დააბრუნოს. core::mem::conjure_zst გვაძლევს სპეციალურ unsafe გზას ნულოვანი ზომის ტიპების მნიშვნელობების შესაქმნელად.

Cargo-ს გაუმჯობესებები

Cargo ახლა აცნობებს გამოუყენებელი დამოკიდებულებების შესახებ; ეს კონტროლდება [lints.cargo] ცხრილით, და გაფრთხილებები ჩნდება მაშინ, როცა ყველა შესაძლო build სამიზნე აწყობილია. გამოუყენებელი dev-dependencies-ისთვის გაფრთხილება არ ჩანს. build დირექტორია ახლა თანმიმდევრულად იყენებს build კონფიგურაციის hash-ს: დირექტორიები build ნაბიჯების მიხედვით ორგანიზდება, ხოლო hash მშობელ დირექტორიაში გადადის. Cargo ასევე ასტაბილიზებს პუბლიკაციის მინიმალური ასაკის რეზოლუციას, რაც მომხმარებლებს საშუალებას აძლევს .cargo/config.toml-ში დააყენონ global-min-publish-age და გამოტოვონ ვერსიები, რომლებიც კონფიგურირებულ ასაკზე უფრო ცოტა ხნის წინ გამოქვეყნდა. cargo install უგულებელყოფს ამ პარამეტრს როგორც დაყენებული crate-ისთვის, ისე მისი დამოკიდებულებებისთვის.

სტაბილიზებული API-ები და სხვა ცვლილებები

გამოშვება ამატებს ბევრ სტაბილიზებულ API-ს, მათ შორის Box::new_in, Vec::new_in, Child::main_thread_handle, bool::toggle, Box::take, Box::map, Rc::map, Arc::map, str-ისა და slice-ის trim დამხმარეებს, Path::trim_prefix, Vec::from_fn და სხვებს, რომლებიც გამოშვების შენიშვნებშია ჩამოთვლილი. Rust-ის, Cargo-სა და Clippy-ის ცვლილებები ცალ-ცალკეა დოკუმენტირებული, ხოლო Rust-ის გუნდმა მადლობა გადაუხადა კონტრიბუტორებს.

წყაროები: blog.rust-lang.org

გააზიარე ციფრული გამოცდილება

SiTech

SiTech — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.