ααΆαα ααααααΆαααΆααΆαααααα·ααΈαααααααααΌαα Rust 1.75 ααααααααΎαα‘αΎαααααααααα Mozilla ααα»ααααα₯α‘αΌααααααααΌαααΆααααααΎαα‘αΎααααααααΆαα§αααααααααΈα’αααααΆααα·αααααααΆααα ααααα―αααΆααα Rust Foundation ααααΌαααΆαααααα»αααααααΆαα ααΆααΆαααααααΎαα»ααααα·ααΆαααααΆαα αα αΆα αα·ααααααααΌααααααααΆαααΎααααΈαααααα ααΆαααΌαααΆαααααααααΆααααΆαααΆαααααα ααααααααααααααΆαααΆαααααΎααααΆααα§ααααααααααΌαααααΆα αα·ααααααααΎαααΆα (αααααααααααΌαααΆαααΆααααααααα ααΆααΆαα αΆααααααΎαααΆααΌαααααΆα αα·αααΆαααααΆααααααΆααααααααααΆα)α
αα·ααΈααΆααααααααααααααα’αααα αα αΆααααα Rust αα½αααααααααα’αααα’αα·ααααααααΈααα α»ααα ααααααα αααααα·α αα·αααΆαααΆαααΈαααα αΆαααααΎαα‘αΎααααααΆαααΆααααααααααα’αααα αα αΆαααααα·αααΆα ααΌα ααΆααΆαα αΌαααααΎαααααα’αααα αα αΆααααααΆααααΈααΆααααΌαααΆααααααα ααΆααααααΆαααααα·α α ααα’α»αααα ααΆαααααΎαααΆαααΎαα ααα»αααα ααΎααααΈα ααα αΆααααααΆααα αααααααΆααααΆα αα·ααααααααααααΆαα’αΆααααα ααααααα’αα·αααααααααα·ααΈααααααααααααα αααααα·αα ααααΆαα crates.io ααααΌαααΆαααΆαααααααααΆααααΆααααα αααααααΆαααα
αα»ααααα·ααΆαααα’αααα αα αΆαααααΌαααΆααααααααΌααα αααα»α Rust αα αααα αααααααΆααααααΆααααα½ααα·αα·αααα―αααΆαααα ααΆααααααΆααΆαααααΆαααΆααα αΆααααααα» ααΆαααΆαααΆαα’αΆαα»ααΆαααααααααα» (αα·ααΆαααΆα) αα·αααΆαααΆααααααααΆαααααΉαααααΌαααααΆαα αΌαααααΎα’αααα αα αΆαα’αα‘α»ααααααααΎαααΆαααΌαα α αααααααααααααΆαααΆαααΆααααααΆααααΉαα ααα½ααααααΎαα ααα»α ααΆαααΆαααΆαα αΆααααααΎαα αΆαααΆα ααααααααα’ααααα»ααααααααΎ αααααααΆαααα α»αααΆααααααΎαααΆααα αααα»ααααααΆααααααααααΆα α’αα»ααααααααααα·αααααα ααααΈαααααααα·αα’αΆα ααααΆααααααΌαααΆα αα·αα’αααααΆαααααΆαααΎα αααααααΌαααΆαααΆαα’αααααα·αα·ααααααααΆαα ααΎααααΈααΆαααααααααα α»αα‘αΌααΈααα
ααΆαα αααααααα·αααααΆαααα
- ααΆααααααααααααααΆααααα»αααΆαααααΎ "async fn" αα·ααααααΆ "-> impl Trait" αα
αααα»αααααααα―αααα α§ααΆα ααα αααααααΎ β-> impl Traitβ α’αααα’αΆα
ααααααα·ααΈααΆααααα trait ααααααα‘ααα’ααααααααα‘αΎααα·αα trait Container { fn items(&self) -> impl Iterator; } impl αα»αααΊααααααααΆαα 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" ααΆαα»ααα·αα
- ααααα·α α:byte_add
- ααααα·α α:byte_offset
- ααααα·α α:byte_offset_from
- ααααα·α α:byte_sub
- ααααα·α α:wrapping_byte_add
- ααααα·α α:wrapping_byte_offset
- ααααα·α α:wrapping_byte_sub
- ααΆαααΆαααααααΎααααΈαααααΎαααΆαα’αα»αααααααα rustc compiler α ααΆααααααααααααα·ααΈαααααΎαααααα·αααααΆα BOLT αααααααΎαααΆααααα»αααααΆααααΆααααααααα αα·αααααΎααααΆααααααααΆαααΈααααααααααα·ααααα·αααααΆααααα
ααα»αααΆαα»αα ααΆαααααΎααααΆαα BOLT α’αα»ααααΆαα±ααα’ααααααααΎαααααΏαααααΎαααΆααααααα·ααΈα
ααααααααα αα 2% αααααααΆααααααΌααααααααααΌααααααΆααα librustc_driver.so αααααΆααααΆαααααΎααααΆααααΆααααααΆαααααα·αααααΆαααααααΆαααααααΆαααα½αααααΆαα
αα½ααααα αΌαααΆααααΆααααααα·ααΈα ααααα rustc ααΆαα½αααΉααααααΎα "-Ccodegen-units=1" ααΎααααΈαααααΎααα»αααΆαααααΆααααααΎαααααα·αααααΆααα αααα»α LLVM α ααΆαααααΎααααααααααΆαα’αα»αααααααα αΆαααΈααΆαααΎαα‘αΎαααααΆαα’αα»αααααα αααα»αααααΈαα "-Ccodegen-units=1" ααΆαααααααα αα 1.5% α ααΆααααααΎαααααα·αααααΆαααααααααααΌαααΆαααΎαααΆαααααΆαααΎααααααΆαααααααα·ααΆ x86_64-unknown-linux-gnu ααα»αααααα
ααΆααααααΎαααααα·αααααΆααααααΆαααΎαα‘αΎαααΈαα»αααααΌαααΆαααΆαααααααα Google ααΎααααΈααΆααααααααααααααΆαααααΎααααΆαααΆαα»ααααααααααααα·ααααα·ααΆα Android αααααΆαααααααα αααα»α Rust α ααΆαααααΎααααΆαα β-C codegen-units=1β αα ααααααααΎαααααααααααααα·ααααα·ααΆα Android ααΆαα’αα»ααααΆαα±ααααΎαααΆαααααααααα ααααααα ααα§αααααααα 5.5% αα·ααααααΎαααααΎαααΆαααααααΆ 1.8% ααααααααααααααααΆαααααΎαααααα§ααααααααα½αααΆααααΎαααααααααα
ααΆαααΎαααααΎαααΆαααΆααααααΌαααααΆαααΆααααααααΆααα (β--gc-sectionsβ) ααΆαααΆαααααΌαααΆααααααΎαααααα·αααααΆαααΆαααΆααα αΌαααα 1.9% αααα’αα»ααααΆαα±αααααααΎαααααα·αααααΆααααααααΆααααΆαα (LTO) ααααα 7.7% αα·αααΆααααααΎαααααα·αααααΆαααα’ααααΎαααααα (PGO) αα αΌαααα 19.8% α αα αααα»αααααα α»αααααα ααΆααααααΎαααααα·αααααΆαααααΌαααΆαα’αα»αααααααααααΎα§αααααααααΎααααΆαα BOLT αααα’αα»ααααΆαα±αααααααΎαααααΏαααΆααααααα 24.7% ααα»ααααααα ααααααα ααα§αααααααΆαααΎαα‘αΎα 10.9% α
- αααααααααΈαα API ααααΌαααΆαααααΆααααΈαα
αααααααααααααααΆα αα½αααΆαααα·ααΈααΆααααα αα·αααΆαα’αα»ααααααααααααααΌαααΆαααααΎα±ααααΆααααααααΆαα
- α’αΆααΌα*::from_ptr
- FileTimes
- FileTimesExt
- α―αααΆαα:set_modified
- α―αααΆαα:set_times
- IpAddr::to_canonical
- Ipv6Addr::to_canonical
- αααααΎααα as_slice
- αααααΎααα as_mut_slice
- ααααα·α α:byte_add
- ααααα·α α:byte_offset
- ααααα·α α:byte_offset_from
- ααααα·α α:byte_sub
- ααααα·α α:wrapping_byte_add
- ααααα·α α:wrapping_byte_offset
- ααααα·α α:wrapping_byte_sub
- αα»ααααααα "const" ααααααααααααααΆαααααΆαααααΎααααΆααααΆαα
αααα»αααα·ααααΆαα½ααααα½αα±ααααα ααααΌαααΆαααααΎαααα»ααα»αααΆαα
- Ipv6Addr::to_ipv4_mapped
- αααα ααααΆUninit:: assume_init_read
- αααα ααααΆUninit::ααΌααα
- mem :: ααΎαα’αΎα
- mem :: ααΌααα
- ααααα·αααΈααΈααααΆαααΆααααααααΌαααΆαα’αα»αααααααααΆαααααα·ααΆ csky-unknown-linux-gnuabiv2hf, i586-unknown-netbsd αα·α mipsel-unknown-netbsd platforms α ααααα·αααΈααΈααΆαααααααααΉαααΆαααΆααααααΆααΌαααααΆα ααα»αααααααααααΆαααΆαααααΎαααααααααααααααααα· ααΆαααααα»αααααααΆαααΆαααααΆαααΆααααΌαααΆα α¬αα·αα·αααααΎαααΆααΎααΌαα’αΆα ααααΌαααΆααααααΎαα¬α’ααα
ααΎαααΈααα ααΎαα’αΆα
ααααααααΆααααΌαααααααααΈαααααααα Hermit ααααααααΎαααΊαααα―αααα (unikernel) ααααααααααΆααΆααΆ Rust ααααααααααΌαα§ααααααααααΆαααααααΎααααααα·ααΈαααααΆαααααααα½αα―ααααα’αΆα
ααααΎαααΆααα
ααΎααααΌααα hypervisor α¬ hardware ααααααααααΆααααααΆααααααααα αα·ααααααααΆαααααααααααααα·ααααα·ααΆαα αα
ααααααααΎα αααααα·ααΈααααΌαααΆαααααΆααααΆααααΆαααα
αααααΆααα αααα’αα»αααααα»αααΆαα
αΆαααΆα
αααΆααα’αααααα―αααΆααα ααααα·αα
αΆαααΆα
αααααΆααααΆαα½αααΊααα OS αα·ααααααΆαααααααααααα αααααΌαααααααααααΌαααΆαα
ααα
αΆααααααα’αΆααααΆααααα Apache 2.0 αα·α MIT α ααΆααα½αααααα»αααααΆααααΌαααΆαααΆαααααααααΆααααΆαααααα·ααααα·ααα―ααααααααα·ααΈαααααααααα
αααα»α Rust, Go, Fortran, C αα·α C ++ α ααααααααααααααα»αα’αα·αααααααααα·ααΈα
αΆααααααΎααααααααααααααααα½ααααα’αα»ααααΆαα±ααα’αααααΎαααααΎαααΆα Hermit αααααααΎ QEMU αα·α KVM α
ααααα: opennet.ru