ΠΡΠΎΠ΅ΠΊΡΡΡ Asterinas ΠΏΡΡΠ½Π° Π²Π΅ΡΡΠΈΡ 0.18, ΡΠ΄ΡΠΎ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Rust ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π―Π΄ΡΠΎΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ABI (Application Binary Interface), ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΡΠ΄ΡΠΎΡΠΎ. Linux ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ²Π°. ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡΠ° Π½Π° Asterinas NixOS, ΠΊΠΎΡΡΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Asterinas ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° ΡΡΠ΅Π΄Π° NixOS, ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ MPL (Mozilla Public License).
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π² ΡΠ΄ΡΠΎΡΠΎ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 240 ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ. LinuxΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡΠ° Π½Π° Asterinas NixOS Π΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π° Π·Π° ΡΠ°Π±ΠΎΡΠ° Π²ΡΡΡ Ρ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Asterinas Ρ Π½Π°Π΄ 100 NixOS ΠΏΠ°ΠΊΠ΅ΡΠ°. ΠΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π²ΠΊΠ»ΡΡΠ²Π°Ρ: Xfce, Firefox, bash, systemd, Podman, QEMU, rsync, Apache httpd, nginx, SQLite, Redis, Clang, GCC, Go, Lua, Node.js, OpenJDK, Perl, PHP, Python, Ruby, Rust, Git, FFmpeg, PyTorch, TensorFlow, Ollama ΠΈ Codex.
Π―Π΄ΡΠΎΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΠΏΡΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° x86-64, ΡΠ°ΡΡΠΈΡΠ½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° RISC-V 64 ΠΈ x86-64 Ρ ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡ, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Intel TDX, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π½Π°ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° LoongArch 64. ΠΡΠΈΠΎΡΠΈΡΠ΅ΡΠ½ΠΈΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Linux ABI, Π½ΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠΈ ΠΏΠΎ-Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Asterinas ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΠ³ΡΡΠ½Π° ΡΠΈΡΡΠ΅ΠΌΠ½Π° ΡΡΠ΅Π΄Π°. Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΊΠ°ΡΠΎ ARM CCA, AMD SEV ΠΈ Intel TDX, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΎΡ ΡΡΡΠ°Π½Π° Π½Π° Ρ ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.
ΠΠ° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° ΠΎΡ Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΡ ΠΈΠ·ΡΠΎΡΠ½ΠΈΠΊ Π½Π° Π½Π°ΠΉ-ΠΎΠΏΠ°ΡΠ½ΠΈΡΠ΅ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, Asterinas ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ°ΡΠ½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅. Π―Π΄ΡΠΎΡΠΎ Π΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° framekernel, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π° Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΠΎΠ½Π½ΠΈΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΄ΡΠ°ΡΠ° Ρ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΈΡΠ΅ ΡΠ΄ΡΠ°.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π² Asterinas ΡΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΎ Π°Π΄ΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° ΡΡΠ΅Π· Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎ ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π½Π° Π·Π°ΡΠΈΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄ ΠΎΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»Π½ΠΎ Π±ΠΈ ΠΌΠΎΠ³ΡΠ» Π΄Π° Π±ΡΠ΄Π΅ ΡΡΠ·Π²ΠΈΠΌ. Π―Π΄ΡΠΎΡΠΎ Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° Π΄Π²Π΅ ΡΠ°ΡΡΠΈ, ΠΈ Π΄Π²Π΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Rust: OS Framework ΠΈ OS Services. OS Services Π·Π°Π±ΡΠ°Π½ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΠ°ΡΠ½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΡ Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π² ΠΎΠΏΠ°ΡΠ½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅, ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Ρ Π² OS Framework ΠΈ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΡΠ°ΠΌΠΎ ΡΡΠ΅Π· API ΠΎΡ Π²ΠΈΡΠΎΠΊΠΎ Π½ΠΈΠ²ΠΎ. ΠΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ OS Services ΠΈ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΠΎΠΏΠ°ΡΠ½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅.
ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ OSDK (Operating System Development Kit), ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° cargo-osdk Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅, ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ ΡΡΡΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ° OSTD (Operating System Standard Library), ΠΊΠΎΠΉΡΠΎ Π²ΠΊΠ»ΡΡΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° Rust (crate std), Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½ΠΎ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°.
Π‘ΡΠ΅Π΄ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ Π²ΡΠ² Π²Π΅ΡΡΠΈΡ 0.18:
- ΠΠ°ΡΠΎ ΡΠ°ΡΡ ΠΎΡ ΡΠ°Π±ΠΎΡΠ°ΡΠ°, Π·Π° Π΄Π° ΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ Asterinas ΡΠ°Π±ΠΎΡΠΈ ΠΊΠ°ΡΠΎ Π³ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Kata Containers ΠΈ Confidential Containers VM, Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° IPC ΠΈ cgroup ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΡ ΠΈΠΌΠ΅Π½Π°, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° Ρ Ρ ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°), virtio-rng (/dev/hwrng Π·Π° Π΅Π½ΡΡΠΎΠΏΠΈΡ Π·Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ ΡΠΈΡΠ»Π°) ΠΈ vsock (Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Ρ ΠΎΡΡ ΠΈ Π³ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠΈ).
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ptrace ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π·Π° Π΄Π΅Π±ΡΠ³Π²Π°Π½Π΅ Π² ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ GDB ΠΈ strace.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ Π½ΠΎΠ²Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ext2 ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ NVMe Π΄ΡΠ°ΠΉΠ²Π΅Ρ. ΠΡΠΌ VFS Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Dentry (Π·Π°ΠΏΠΈΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ), Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΠΊΠ΅ΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π΅ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½Π°.
- ΠΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡΠ° Π½Π° Asterinas NixOS ΠΈΠΌΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° Codex, QEMU ΠΈ Firefox.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ pidfd_getfd, pidfd_send_signal, pivot_root.
- ΠΠΎΠ±Π°Π²Π΅Π½ ΠΈΠ½ΠΈΡΠΈΠ°Π» ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° IPv6.
- ΠΠ½Π΅Π΄ΡΠ΅Π½Π° Π΅ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π΄Π΅Π»Π΅Π³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° LSM ΡΠ°ΠΌΠΊΠ°ΡΠ° (Linux ΠΠΎΠ΄ΡΠ»ΠΈ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
