ИздаванС Π½Π° стандартната 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 във Π²ΠΈΠ΄ Π½Π° shell скрипт, ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ„Π°ΠΊΡ‚ΡŠΡ‚, Ρ‡Π΅ Thompson Shell Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π° скрипта Β«#!Β». Π—Π° създаванС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ΠΈ няколко Ρ„Π°ΠΉΠ»Π° (ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Π½Π° всички рСсурси Π² Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ»), сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° изпълним Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° спСциално ΠΎΡ„ΠΎΡ€ΠΌΠ΅Π½ ZIP Π°Ρ€Ρ…ΠΈΠ². Π‘Ρ…Π΅ΠΌΠ°Ρ‚Π° Π½Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ hello.com):

MZqFpD=’ BIOS BOOT SECTOR’ exec 7 $(command -v $0) printf β€˜\177ELF…LINKER-ENCODED-FREEBSD-HEADER’ >&7 exec Β«$0Β» Β«$@Β» exec qemu-x86_64 Β«$0Β» Β«$@Β» exit 1 REAL MODE… ELF SEGMENTS… OPENBSD NOTE… MACHO HEADERS… CODE AND DATA… ZIP DIRECTORY…

Π’ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»Π° Π΅ посочСна Π΅Ρ‚ΠΈΠΊΠ΅Ρ‚Π° Β«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. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Ρ‚Π°ΠΊΠΎΠΆ ΠΌΠΎΠΆΠ΅ використовуватися для створСння самодостатніх Π΄ΠΎΠ΄Π°Ρ‚ΠΊΡ–Π², які ΠΏΡ€Π°Ρ†ΡŽΡŽΡ‚ΡŒ Π±Π΅Π· ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–ΠΉΠ½ΠΎΡ— систСми (bare metal). Π£ Ρ‚Π°ΠΊΠΈΡ… Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠ°Ρ… Π΄ΠΎ Π²ΠΈΠΊΠΎΠ½Π°Π²Ρ‡ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Ρƒ ΠΏΡ€ΠΈΠΊΡ€Ρ–ΠΏΠ»ΡŽΡ”Ρ‚ΡŒΡΡ Π·Π°Π²Π°Π½Ρ‚Π°ΠΆΡƒΠ²Π°Ρ‡, Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π²ΠΈΠΊΠΎΠ½ΡƒΡ” Ρ€ΠΎΠ»ΡŒ Π·Π°Π²Π°Π½Ρ‚Π°ΠΆΡƒΠ²Π°Π½ΠΎΡ— ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–ΠΉΠ½ΠΎΡ— систСми.

Π£ Ρ€ΠΎΠ·Ρ€ΠΎΠ±Π»Π΅Π½Ρ–ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ стандартній Π‘Ρ–-Π±Ρ–Π±Π»Ρ–ΠΎΡ‚Π΅Ρ†Ρ– libc Π·Π°ΠΏΡ€ΠΎΠΏΠΎΠ½ΠΎΠ²Π°Π½ΠΎ 2024 Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— (Π² ΠΏΠ΅Ρ€ΡˆΠΎΠΌΡƒ випуску Π±ΡƒΠ»ΠΎ близько 1400 Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΠΉ). Π—Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŽ Cosmopolitan ΠΏΡ€Π°Ρ†ΡŽΡ” Ρ‚Π°ΠΊ само швидко, як Ρ– glibc, Ρ– ΠΏΠΎΠΌΡ–Ρ‚Π½ΠΎ обганяє Musl Ρ– Newlib, ΠΏΡ€ΠΈ Ρ†ΡŒΠΎΠΌΡƒ Cosmopolitan Π·Π° Ρ€ΠΎΠ·ΠΌΡ–Ρ€ΠΎΠΌ ΠΊΠΎΠ΄Ρƒ Π² Π΄Π΅ΡΡΡ‚ΡŒ Ρ€Π°Π·Ρ–Π² мСнший Π·Π° glibc Ρ– ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·Π½ΠΎ Π²Ρ–Π΄ΠΏΠΎΠ²Ρ–Π΄Π°Ρ” Musl Ρ– Newlib. Для ΠΎΠΏΡ‚ΠΈΠΌΡ–Π·Π°Ρ†Ρ–Ρ— часто Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†Ρ–ΠΉ, Ρ‚Π°ΠΊΠΈΡ… як memcpy Ρ– strlen, Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΎΠ²ΠΎ Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ Ρ‚Π΅Ρ…Π½Ρ–ΠΊΠ° Β«trickle-down performanceΒ», ΠΏΡ€ΠΈ якій для Π²ΠΈΠΊΠ»ΠΈΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†Ρ–Ρ— Π·Π°ΡΡ‚ΠΎΡΠΎΠ²ΡƒΡ”Ρ‚ΡŒΡΡ макрос-ΠΎΠ±Π²'язка, Ρƒ якій компілятор Ρ–Π½Ρ„ΠΎΡ€ΠΌΡƒΡ”Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎ зарСєстровані Ρƒ процСсі виконання ΠΊΠΎΠ΄Ρƒ рСгістри CPU, Ρ‰ΠΎ дозволяє Π΅ΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΠΈ рСсурси ΠΏΡ€ΠΈ Π·Π±Π΅Ρ€Π΅ΠΆΠ΅Π½Π½Ρ– стану CPU Π·Π° Ρ€Π°Ρ…ΡƒΠ½ΠΎΠΊ збСрСТСння лишС Π·ΠΌΡ–Π½Π½ΠΈΡ… рСгістрів.

Π‘Ρ€Π΅Π΄ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² новия Ρ€Π΅Π»ΠΈΠΉΠ·:

  • Π—ΠΌΡ–Π½Π΅Π½ΠΎ схСму звСрнСння Π΄ΠΎ Π²Π½ΡƒΡ‚Ρ€Ρ–ΡˆΠ½Ρ–Ρ… рСсурсів всСрСдині 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 runtime ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π° TLS Π·Π° основния ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° минималния Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° изпълнимия Ρ„Π°ΠΉΠ» ΠΎΡ‚ 12 Π΄ΠΎ 16 ΠšΠ‘.
  • Π’ ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΠΌΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ β€žβ€”ftraceβ€œ ΠΈ β€žβ€”straceβ€œ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π² stderr информация Π·Π° всички ΠΏΠΎΠ²ΠΈΡ†ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ систСмни ΠΏΠΎΠ²ΠΈΡ†ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° систСмния ΠΏΠΎΠ²ΠΈΠΊ closefrom(), ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ Π² Linux 5.9+, FreeBSD 8+ ΠΈ OpenBSD.
  • На ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Linux производитСлността Π½Π° ΠΏΠΎΠ²ΠΈΡ†ΠΈΡ‚Π΅ clock_gettime ΠΈ gettimeofday Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½Π° Π΄ΠΎ 10 ΠΏΡŠΡ‚ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° vDSO (virtual dynamic shared object), ΠΊΠΎΠΉΡ‚ΠΎ позволява ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π° систСмния ΠΏΠΎΠ²ΠΈΠΊ Π² пространството Π½Π° потрСбитСля ΠΈ избягванС Π½Π° смСни Π½Π° контСкст.
  • ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° с комплСксни числа ΠΎΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Musl са ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Π΅Π½ΠΈ. УскорСна Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ матСматичСски Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ функцията nointernet(), която Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ прикрСпянС Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅: appendd, appendf, appendr, appends, appendw, appendz, kappendf, kvappendf ΠΈ vappendf.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° сСмСйството Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ kprintf(), ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΈ повишСни ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΈ.
  • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΅ повишСна производитСлността Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ SSL, SHA, curve25519 ΠΈ RSA.

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster