ืคืจืกืื ืฉืคืช ืืชืื ืืช ืืืืจืืช ืืืืืืช Rust 1.75, ืฉื ืืกืื ืขื ืืื ืคืจืืืงื ืืืืืื, ืื ืคืืชืื ืืขืช ืืืกืืช ืืขืืืชื ืืขืฆืืืืช Rust Foundation. ืืฉืคื ืืชืืงืืช ืืืืืืืช ืืืืจืื ืืืกืคืงืช ืืช ืืืืฆืขืื ืืืฉืืช ืืงืืืืืืช ืขืืืื ืืืืื ืชืื ืืืื ืขืืช ืืฉืืืืฉ ืืืกืคื ืืฉืคื ืืืื ืจืืฆื (ืืื ืืจืืฆื ืืฆืืืฆื ืืืชืืื ืืชืืืืงื ืืกืืกืืื ืฉื ืืกืคืจืืื ืืกืื ืืจืืืช).
ืฉืืืืช ืืืืคืื ืืืืืจืื ืฉื Rust ืืืกืืืช ืืืืคืชื ืฉืืืืืช ืืขืช ืื ืืคืืืฆืื ืฉื ืืฆืืืขืื ืืืืื ืืช ืืคื ื ืืขืืืช ืืืชืขืืจืจืืช ืขืงื ืืืคืื ืืืืืจืื ืืจืื ื ืืืื, ืืืื ืืืฉื ืืืืืจ ืืืืจืื ืืืืจ ืฉืืจืืจื, ืืืืื ืืฆืืืขื null, ืืจืืืืช ืืืืจ ืืื'. ืืื ืืืคืืฅ ืกืคืจืืืช, ืืกืคืง ืื ืืื ืืื ืื ืชืืืช, ืืคืจืืืงื ืืคืชื ืืช ืื ืื ืืืืืืืช Cargo. ืืืืจ crates.io ื ืชืื ืืืืจืื ืกืคืจืืืช.
ืืืืืืช ืืืืจืื ืืกืืคืงืช ื-Rust ืืืื ืืงืืืคืืืฆืื ืืืืฆืขืืช ืืืืงืช ืืคื ืืืช, ืืขืงื ืืืจ ืืขืืืช ืขื ืืืืืืงื, ืืขืงื ืืืจ ืืฉื ืืืื ืฉื ืืืืืืงื (ืกืงืืคืื), ืืืขืจืืช ื ืืื ืืช ืืืืฉื ืืืืืจืื ืืืืื ืืืฆืืข ืงืื. Rust ืืกืคืงืช ืื ืืื ื ืืคื ื ืืฆืคืช ืืกืคืจืื ืฉืืืื, ืืืจืฉืช ืืชืืื ืืืื ืฉื ืขืจืื ืืฉืชื ืื ืืคื ื ืืฉืืืืฉ, ืืืคืืช ืืฉืืืืืช ืืื ืืืชืจ ืืกืคืจืืื ืืกืื ืืจืืืช, ืืืืฉืืช ืืช ืืจืขืืื ืฉื ืืคื ืืืช ืืืฉืชื ืื ืืืชื ื ืืชื ืื ืืฉืื ืื ืืืจืืจืช ืืืื, ืืฆืืขื ืืงืืื ืกืืืืช ืืืงื ืืื ืืืืขืจ ืฉืืืืืช ืืืืืืช.
ืืืืืฉืื ืขืืงืจืืื:
- ื ืืกืคื ืืช ืืืืืืช ืืืฉืชืืฉ ื-"async fn" ืืืกืืืื "->impl Trait" ืืชืืื ืืช ืคืจืืืืช. ืืืืืื, ืืืืฆืขืืช "->impl Trait" ื ืืชื ืืืชืื ืฉืืืช ืชืืื ื ืฉืืืืืจื ืืืืจืืืจ: trait Container { fn items(&self) -> impl Iterator; } impl Container for MyContainer { fn items(&self) -> impl Iterator { self.items.iter().cloned() } }
ืืชื ืืืื ืื ืืืฆืืจ ืชืืื ืืช ืืืืฆืขืืช "async fn": trait HttpService { async fn fetch(&self, url: Url) -> HtmlBody; // ืืืจืื ื: // fn fetch(&self, url: Url) -> impl Future; }
- ื ืืกืฃ API ืืืืฉืื ืงืืืื ืืชืื ืืืืก ืืืฆืืืขืื. ืืืฉืจ ืขืืืืื ืขื ืืฆืืืขืื ืืฉืืคืื ("*const T" ื-"*mut T"), ืืืชืื ืฉืืืืจืฉื ืคืขืืืืช ืืืืกืคืช ืืืกื ืืืฆืืืข. ืืขืืจ, ืืฉื ืื ื ืืชื ืืื ืืืฉืชืืฉ ืืื ืืื ืืื "::add(1)", ืืืกืคืช ืืกืคืจ ืืืชืื ืืืชืืื ืืืืื "size_of::()". ื-API ืืืืฉ ืืคืฉื ืืช ืืคืขืืื ืืื ืืืืคืฉืจ ืืชืคืขื ืงืืืื ืืชืื ืืืื ืืืืื ืชืืืื ืืช ืืืืคืืกืื ื-"*const u8" ืื "*mut u8".
- pointer::byte_add
- pointer::byte_offset
- pointer::byte_offset_from
- pointer::byte_sub
- pointer::wrapping_byte_add
- pointer::wrapping_byte_offset
- pointer::wrapping_byte_sub
- ืืืฉื ืขืืืื ืืืืืจืช ืืืืฆืืขืื ืฉื ืืืืจ rustc. ืืืกืืฃ ืืช ื-BOLT Optimizer, ืฉืคืืขื ืืฉืื ืฉืืืืจ ืืงืืฉืืจ ืืืฉืชืืฉ ืืืืืข ืืคืจืืคืื ืืืฆืืข ืฉืืืื ืืจืืฉ. ืฉืืืืฉ ื-BOLT ืืืคืฉืจ ืืืืืฅ ืืช ืืืฆืืข ืืืืืจ ืื-2% ืขื ืืื ืฉืื ืื ืืคืจืืกื ืฉื ืงืื ืืกืคืจืืื librustc_driver.so ืืฉืืืืฉ ืืขืื ืืืชืจ ืืืืืื ืืืขืื.
ืืื ืื ืืืช ืืืืจ rustc ืขื ืืคืฉืจืืช "-Ccodegen-units=1" ืืฉืืคืืจ ืืืืืช ืืืืคืืืืืืฆืื ื-LLVM. ืืืืืงืืช ืฉืืืฆืขื ืืจืืืช ืขืืืื ืืืืฆืืขืื ืืืงืจื ืฉื ืืืื ื "-Ccodegen-units=1" ืื-1.5%. ืืืืคืืืืืืฆืืืช ืฉื ืืกืคื ืืืคืขืืืช ืืืจืืจืช ืืืื ืจืง ืขืืืจ ืคืืืคืืจืืช x86_64-unknown-linux-gnu.
ืืืืคืืืืืืฆืืืช ืฉืืืืืจื ืงืืื ื ืืืงื ืขื ืืื ืืืื ืืื ืืืคืืืช ืืช ืืื ืืื ืืื ืฉื ืจืืืื ืคืืืคืืจืืช ืื ืืจืืืื ืฉื ืืชืื ื- Rust. ืฉืืืืฉ ื-"-C codegen-units=1" ืืขืช ืื ืืืช ืื ืืจืืืื ืืคืฉืจ ืื ื ืืืงืืื ืืช ืืืื ืขืจืืช ืืืืื ื-5.5% ืืืืืืื ืืช ืืืืฆืืขืื ืฉืื ื-1.8%, ืืขืื ืฉืืื ืืื ืืื ืฉื ืขืจืืช ืืืืื ืขืฆืื ืืืขื ืืืืคื.
ืืคืขืืช ืืืกืืฃ ืืฉืคื ืืืื ืงืืฉืืจ ("--gc-sections") ืืืืื ืืช ืืฉืืคืืจ ืืืืฆืืขืื ื-1.9%, ืืคืขืืช ืืืคืืืืืืฆืื ืฉื ืืื ืงืืฉืืจ (LTO) ืขื 7.7%, ืืืืคืืืืืืฆืืืช ืืืืกืกืืช ืคืจืืคืื (PGO) ืขื 19.8%. ืืืืจ ืืืืื ืืืคืืืืืืฆืืืช ืืืืฆืขืืช ืืื ืืฉืืจืืช BOLT, ืฉืืคืฉืจื ืืืืืื ืืช ืืืืจืืช ืืื ืืื ื-24.7%, ืื ืืืื ืขืจืืช ืืืืื ืืื ื-10.9%.
- ืืืง ืืืฉ ืฉื ื-API ืืืขืืจ ืืงืืืืจืื ืฉื ืืฆืื, ืืืื ืืฉืืืืช ืืืืืฉืื ืฉื ืชืืื ืืช ืืชืืืฆืื:
- ืืืืื*::from_ptr
- FileTimes
- FileTimesExt
- File::set_modified
- ืงืืืฅ::set_times
- IpAddr::to_canonical
- Ipv6Addr::to_canonical
- Option::as_slice
- Option::as_mut_slice
- pointer::byte_add
- pointer::byte_offset
- pointer::byte_offset_from
- pointer::byte_sub
- pointer::wrapping_byte_add
- pointer::wrapping_byte_offset
- pointer::wrapping_byte_sub
- ืืชืืื ื "const", ืืงืืืขืช ืืช ืืืคืฉืจืืช ืืืฉืชืืฉ ืื ืืื ืืงืฉืจ ืืืงืื ืืงืืืขืื, ืืฉืืฉืช ืืคืื ืงืฆืืืช:
- Ipv6Addr::to_ipv4_mapped
- MaybeUninit::assume_init_read
- MaybeUninit::ืืคืก
- mem::discriminant
- mem::ืืคืก
- ืจืืช ืืชืืืื ืืฉืืืฉืืช ืืืฉืื ืขืืืจ ืืคืืืคืืจืืืช csky-unknown-linux-gnuabiv2hf, i586-unknown-netbsd ื-mipsel-unknown-netbsd. ืืจืื ืืฉืืืฉืืช ืืืืืช ืชืืืื ืืกืืกืืช, ืื ืืื ืืืืงืืช ืืืืืืืืืช, ืคืจืกืื ืืื ืื ืจืฉืืืื ืื ืืืืงื ืื ื ืืชื ืืื ืืช ืืช ืืงืื.
ืื ืืกืฃ, ืื ื ืืืืืื ืืฆืืื ืืจืกื ืืืฉื ืฉื ืคืจืืืงื ื-Hermit, ืืฉืจ ืืคืชืืช ืืืื (unikernel) ืืืืืืช, ืืืชืืื ืืฉืคืช Rust, ืืืกืคืงืช ืืืื ืืื ืืืช ืืืฉืืืื ืขืฆืืืืื ืฉืืืืืื ืืคืขืื ืขื ืืื Hypervisor ืื ืืืืจื ืืฉืืคื ืืื ืฉืืืืช ื ืืกืคืืช. ืืืื ืืขืจืืช ืืคืขืื. ืืฉืืืคืืืงืฆืื ืื ืืื, ืืืคืืืงืฆืื ืืงืืฉืจืช ืกืืืืช ืืกืคืจืืื, ืืืืืฉืืช ืืืืคื ืขืฆืืื ืืช ืื ืืคืื ืงืฆืืื ืืืืช ืืืจืืฉื, ืืืื ืืืืืช ืงืฉืืจื ืืืจืขืื ืืขืจืืช ืืืคืขืื ืืืกืคืจืืืช ืืืขืจืืช. ืงืื ืืคืจืืืงื ืืืคืฅ ืชืืช ืจืืฉืืื ืืช Apache 2.0 ื-MIT. Assembly ื ืชืื ืืืืฆืืข ืขืฆืืื ืฉื ืืืฉืืืื ืฉื ืืชืื ื- Rust, Go, Fortran, C ื-C++. ืืคืจืืืงื ืื ืืคืชื ืืืชืืื ืืฉืื ืืืืคืฉืจ ืื ืืืฉืืง ืืช Hermit ืืืืฆืขืืช QEMU ื-KVM.
ืืงืืจ: OpenNet.ru