ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° стандартната C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Cosmopolitan 2.0, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° Π·Π° прСносими изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π° Π΅ вСрсията Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Cosmopolitan 2.0, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰Π° стандартната C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΈ унивСрсалСн изпълним Ρ„Π°ΠΉΠ»ΠΎΠ² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° разпространСниС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Ρ‡Ρ€Π΅Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π² GCC ΠΈ Clang, сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Π² статично ΡΠ²ΡŠΡ€Π·Π°Π½ унивСрсалСн изпълним Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС изпълнява Π½Π° всяка Linux дистрибуция, macOS, Windows, FreeBSD, OpenBSD, NetBSD ΠΈ Π΄ΠΎΡ€ΠΈ Π΄Π° сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΎΡ‚ BIOS. ΠšΠΎΠ΄ΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° сС разпространява ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π· ISC (опростСна вСрсия Π½Π° MIT/BSD).

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΡŠΡ‚ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° унивСрсални изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ сС основава Π½Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° сСгмСнти ΠΈ Ρ…Π΅Π΄ΡŠΡ€ΠΈ, спСцифични Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми (PE, ELF, MACHO, OPENBSD) Π² Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ», ΡΡŠΡ‡Π΅Ρ‚Π°Π²Π°Ρ‰ няколко Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² Unix, Windows ΠΈ macOS. Π—Π° Π΄Π° сС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ Π΅Π΄ΠΈΠ½ изпълним Ρ„Π°ΠΉΠ» Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Windows ΠΈ Unix систСми, Π΅Π΄ΠΈΠ½ Ρ‚Ρ€ΠΈΠΊ Π΅ Π΄Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Ρ‚Π΅ Windows PE Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΊΠ°Ρ‚ΠΎ скриптовС Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ°Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ сС Π²ΡŠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Thompson Shell Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° Π½Π° скрипта "#!". Π—Π° създаванС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ няколко Ρ„Π°ΠΉΠ»Π° (ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° всички рСсурси Π² Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ»), Ρ‚ΠΎΠΉ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° изпълним Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° спСциално ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ ZIP Π°Ρ€Ρ…ΠΈΠ². Π‘Ρ…Π΅ΠΌΠ° Π½Π° прСдлоТСния Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ hello.com):

MZqFpD='BIOS BOOT SECTOR' exec 7 $(ΠΊΠΎΠΌΠ°Π½Π΄Π° -v $0) printf '\177ELF...LINKER-ENCODED-FREEBSD-HEADER' >&7 exec "$0" "$@" exec qemu-x86_64 "$0" "$ @" ΠΈΠ·Ρ…ΠΎΠ΄ 1 РЕАЛЕН Π Π•Π–Π˜Πœβ€¦ Π•Π›Π€ Π‘Π•Π“ΠœΠ•ΠΠ’Π˜β€¦ OPENBSD Π—ΠΠ‘Π•Π›Π•Π–ΠšΠβ€¦ MACHO Π—ΠΠ“Π›ΠΠ’ΠšΠ˜β€¦ ΠšΠžΠ” И Π”ΠΠΠΠ˜β€¦ ZIP Π”Π˜Π Π•ΠšΠ’ΠžΠ Π˜Π―β€¦

Π’ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° Π΅ посочСн Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚ΡŠΡ‚ β€žMZqFpDβ€œ, ΠΊΠΎΠΉΡ‚ΠΎ сС Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΊΠ°Ρ‚ΠΎ Π·Π°Π³Π»Π°Π²ΠΊΠ° Π½Π° Windows PE Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Π’Π°Π·ΠΈ послСдоватСлност ΡΡŠΡ‰ΠΎ Π΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π° Π² инструкцията β€œpop %r10; jno 0x4a; jo 0x4a", ΠΈ Ρ€Π΅Π΄Π° "\177ELF" към инструкцията "jg 0x47", ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π°Π½Π΅ към Π²Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° Ρ‚ΠΎΡ‡ΠΊΠ°. Unix систСмитС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ shell ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° exec, ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€Π΅Π΄Π°Π²Π° изпълнимия ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π· Π½Π΅ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ ΠΊΠ°Π½Π°Π». ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° прСдлоТСния ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΅ способността Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми само с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ Π½Π° Thompson Shell.

ΠžΠ±Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ qemu-x86_64 осигурява Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° прСносимост ΠΈ позволява ΠΊΠΎΠ΄ΡŠΡ‚, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° x86_64, Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΡ‚ x86 ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ, ΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠ»Π°Ρ‚ΠΊΠΈ Raspberry Pi ΠΈ устройства Π½Π° Apple, ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½ΠΈ с ARM процСсори. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π·Π° създаванС Π½Π° самостоятСлни прилоТСния, ΠΊΠΎΠΈΡ‚ΠΎ работят Π±Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма (Π³ΠΎΠ»ΠΈ ΠΌΠ΅Ρ‚Π°Π»). Π’ Ρ‚Π°ΠΊΠΈΠ²Π° прилоТСния към изпълнимия Ρ„Π°ΠΉΠ» Π΅ ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π΅Π½ Π±ΡƒΡƒΡ‚Π»ΠΎΡƒΠ΄ΡŠΡ€ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° дСйства ΠΊΠ°Ρ‚ΠΎ стартираща ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Π°Ρ‚Π° C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° libc, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΡ€Π΅Π΄Π»Π°Π³Π° 2024 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π² ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ имашС ΠΎΠΊΠΎΠ»ΠΎ 1400 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ). По ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° производитСлността, Cosmopolitan Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π±ΡŠΡ€Π·ΠΎ, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ glibc ΠΈ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈΠ·ΠΏΡ€Π΅Π²Π°Ρ€Π²Π° Musl ΠΈ Newlib, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Cosmopolitan Π΅ с ΠΏΠΎΡ€ΡΠ΄ΡŠΠΊ ΠΏΠΎ-малък Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° ΠΊΠΎΠ΄Π° ΠΎΡ‚ glibc ΠΈ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° Musl ΠΈ Newlib. Π—Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° чСсто ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ memcpy ΠΈ strlen Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ‚Π΅Ρ…Π½ΠΈΠΊΠ°Ρ‚Π° β€žΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚β€œ, ΠΏΡ€ΠΈ която сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ°ΠΊΡ€ΠΎ ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½Π΅ Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° функцията, ΠΏΡ€ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΡŠΡ‚ сС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π° Π·Π° рСгистритС Π½Π° процСсора, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° процСс, ΠΊΠΎΠΉΡ‚ΠΎ позволява спСстяванС Π½Π° рСсурси ΠΏΡ€ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° процСсора Ρ‡Ρ€Π΅Π· Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ само Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ рСгистри.

Π‘Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² Π½ΠΎΠ²Π°Ρ‚Π° вСрсия:

  • Π‘Ρ…Π΅ΠΌΠ°Ρ‚Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈ рСсурси Π² zip Ρ„Π°ΠΉΠ» Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½Π° (ΠΏΡ€ΠΈ отварянС Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π²Π΅Ρ‡Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΈΡ‚Π΅ ΠΏΡŠΡ‚ΠΈΡ‰Π° /zip/... вмСсто прСфикса zip:..). По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½, Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ дисковС Π² Windows Π΅ възмоТно Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΡŠΡ‚ΠΈΡ‰Π° ΠΊΠ°Ρ‚ΠΎ β€ž/c/...β€œ вмСсто β€žC:/...β€œ.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π΅ Π½ΠΎΠ² APE (Actually Portable Executable) Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ‡, ΠΊΠΎΠΉΡ‚ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° унивСрсалнитС изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Новият Ρ‚ΠΎΠ²Π°Ρ€Π°Ρ‡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° mmap, Π·Π° Π΄Π° постави ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ Π²Π΅Ρ‡Π΅ Π½Π΅ промСня ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. Ако Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, унивСрсалният изпълним Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½ Π² ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ.
  • На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Linux Π΅ възмоТно Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŠΡ‚ Π½Π° ядрото binfmt_misc Π·Π° стартиранС Π½Π° APE ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ. ΠžΡ‚Π±Π΅Π»ΡΠ·Π²Π° сС, Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° binfmt_misc Π΅ Π½Π°ΠΉ-Π±ΡŠΡ€Π·ΠΈΡΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° стартиранС.
  • Π—Π° Linux Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° рСализация Π½Π° функционалността Π½Π° систСмнитС извиквания pledge() ΠΈ unveil(), Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° OpenBSD. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½ Π΅ API Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ‚Π΅Π·ΠΈ извиквания Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ Π½Π° C, C++, Python ΠΈ Redbean, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° pledge.com Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ процСси.
  • ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡΡ‚Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Landlock Make - ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° GNU Make с ΠΏΠΎ-строга ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° зависимоститС ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° систСмното ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Landlock Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° ΠΎΡ‚ останалата част ΠΎΡ‚ систСмата ΠΈ подобряванС Π½Π° СфСктивността Π½Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ. ΠšΠ°Ρ‚ΠΎ опция сС Π·Π°ΠΏΠ°Π·Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ с ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ GNU Make.
  • Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈ са Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° многопоточност - _spawn() ΠΈ _join(), ΠΊΠΎΠΈΡ‚ΠΎ са унивСрсални ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ Π²ΡŠΡ€Ρ…Ρƒ API, спСцифични Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ систСми. Π Π°Π±ΠΎΡ‚ΠΈ сС ΠΈ Π·Π° внСдряванС Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° POSIX Threads.
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° _Thread_local, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° всяка нишка (TLS, Thread-Local Storage). По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ срСдата Π·Π° изпълнСниС Π½Π° C ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π° TLS Π·Π° основната нишка, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° минималния изпълним Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΡ‚ 12 KB Π½Π° 16 KB.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ β€ž--ftraceβ€œ ΠΈ β€ž--straceβ€œ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° към изпълними Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° информация Π·Π° всички извиквания Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ систСмни извиквания към stderr.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° систСмното ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½Π΅ closefrom(), ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ΠΎ Π½Π° Linux 5.9+, FreeBSD 8+ ΠΈ OpenBSD.
  • На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Linux производитСлността Π½Π° извикванията clock_gettime ΠΈ gettimeofday Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° Π΄ΠΎ 10 ΠΏΡŠΡ‚ΠΈ Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° vDSO (Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅Π½ сподСлСн ΠΎΠ±Π΅ΠΊΡ‚), ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ възмоТно прСмСстванСто Π½Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π° Π½Π° систСмно ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π² потрСбитСлското пространство ΠΈ избягванС Π½Π° контСкстни ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ.
  • ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с комплСксни числа са прСмСстСни ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π½Π° Musl. УскорСна Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ матСматичСски Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • Ѐункцията nointernet() Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π·Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ добавянС Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf ΠΈ vappendf.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π·Π°Ρ‰ΠΈΡ‚Π΅Π½Π° вСрсия Π½Π° фамилията Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ kprintf(), ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ с повишСни ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ.
  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π° производитСлност Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° SSL, SHA, curve25519 ΠΈ RSA.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€