
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
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 — AI-გაძლიერებული ვებ დეველოპმენტი
ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.