ΠΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ Π΅ ΠΏΡΠΎΠ΅ΠΊΡΡΡ Asterinas Π²Π΅ΡΡΠΈΡ 0.18, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π° ΡΠ΄ΡΠΎ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Π΅Π·ΠΈΠΊΠ° Rust ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΎΠ±ΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. Π―Π΄ΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ABI (Application Binary Interface), ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ Ρ ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux ΠΈ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ. ΠΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΡΡ Asterinas NixOS, ΠΊΠΎΠΉΡΠΎ ΡΡΡΠ΅ΡΠ°Π²Π° ΡΠ΄ΡΠΎΡΠΎ Asterinas Ρ ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠ° ΡΡΠ΅Π΄Π° NixOS. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ MPL (Mozilla Public License).
Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π² ΡΠ΄ΡΠΎΡΠΎ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΎΠΊΠΎΠ»ΠΎ 240 ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π° Linux. Π Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Asterinas NixOS Π΅ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° Π½Π°Π΄ 100 ΠΏΠ°ΠΊΠ΅ΡΠ°, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Asterinas, ΠΎΡ 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 ΠΈ ΡΠ°ΠΊΡΠΈΠΊΠ° Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° unsafe-Π±Π»ΠΎΠΊΠΎΠ²Π΅. Π―Π΄ΡΠΎΡΠΎ Π΅ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΎ Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° framekernel, Π² ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°Ρ Π΄Π° ΡΡΡΠ΅ΡΠ°ΡΡ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΈΠ·ΠΎΠ»Π°ΡΠΈΡΡΠ° Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΄ΡΠ° Ρ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΈΡΠ΅ ΡΠ΄ΡΠ°.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π² Asterinas ΡΠ΅ ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ Π² ΠΎΠ±ΡΠΎ Π°Π΄ΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠ° ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π° Π½Π° Π½ΠΈΠ²ΠΎ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΈΡ ΠΊΠΎΠ΄ ΠΈ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΠΉΡΠΎ Π½Π΅ ΡΠ° ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡΠ°. Π―Π΄ΡΠΎΡΠΎ Π΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° Π΄Π²Π΅ ΡΠ°ΡΡΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° Rust: OS Framework ΠΈ OS Services. Π OS Services Π΅ Π·Π°Π±ΡΠ°Π½Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° unsafe-Π±Π»ΠΎΠΊΠΎΠ²Π΅, Π° Π²ΡΠΈΡΠΊΠΈ Π½ΠΈΡΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄ Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅ unsafe, ΡΠ° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ΠΈ Π² OS Framework ΠΈ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΡΠ°ΠΌΠΎ ΡΡΠ΅Π· Π²ΠΈΡΠΎΠΊΠΎΠΏΡΠΎΡΠΈΠ»Π΅Π½ API. ΠΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ Π½Π° Π½ΠΈΠ²ΠΎΡΠΎ Π½Π° OS Services ΠΈ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²ΠΊΠ»ΡΡΠ²Π°Ρ unsafe-Π±Π»ΠΎΠΊΠΎΠ²Π΅.
ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π½Π° ΡΠ΄ΡΠΎΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ OSDK (Operating System Development Kit), ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΡΡΠΈΠ»ΠΈΡΠ° cargo-osdk Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅, ΡΠ΅ΡΡΠ²Π°Π½Π΅ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°. ΠΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ OSTD (Operating System Standard Library), Π²ΠΊΠ»ΡΡΠ²Π°Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Rust (crate std), Π°Π΄Π°ΠΏΡΠΈΡΠ°Π½Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°.
Π‘ΡΠ΅Π΄ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡΠ° Π² Π²Π΅ΡΡΠΈΡ 0.18:
- Π ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΡΠΈΠ»ΠΈΡΡΠ° Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Asterinas ΠΊΠ°ΡΠΎ Π³ΠΎΡΡΡΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π² VM ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Kata Containers ΠΈ Confidential Containers Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π½Π° ΠΈΠΌΠ΅Π½Π° IPC ΠΈ cgroup, nsfs (/proc/[pid]/ns), cgroups, virtio-fs (Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΠ±ΡΠ°ΡΠ° Ρ Ρ ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°), virtio-rng (/dev/hwrng Π·Π° Π΅Π½ΡΡΠΎΠΏΠΈΡ ΠΊΡΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π½Π° ΠΏΡΠ΅Π²Π΄ΠΎΡΠ»ΡΡΠ°ΠΉΠ½ΠΈ ΡΠΈΡΠ»Π°) ΠΈ vsock (Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Ρ ΠΎΡΡΠΎΠ²Π°ΡΠ° ΠΈ Π³ΠΎΡΡΡΠ²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠΈ).
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π΅ ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ ΠΏΠΎΠ²ΠΈΠΊ ptrace ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° GDB ΠΈ strace.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ Π½ΠΎΠ²Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ext2 ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π΄ΡΠ°ΠΉΠ²Π΅Ρ NVMe. Π VFS Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Dentry (Directory Entry) ΠΈ Π΅ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π½Π° ΡΡΡΠ°Π½ΠΈΡΠΎΠ²ΠΈΡ ΠΊΠ΅Ρ.
- Π Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΡΡΠ° Asterinas NixOS Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Codex, QEMU ΠΈ Firefox.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ pidfd_getfd, pidfd_send_signal, pivot_root.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½Π°ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° IPv6.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° capabilities Π·Π° Π΄Π΅Π»Π΅Π³ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½Π°ΡΠ°Π»Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° LSM (Linux Security Modules).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
