เบ›เปˆเบญเบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C library Cosmopolitan 2.0, เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบณเบฅเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เปเบšเบšเบžเบปเบเบžเบฒ

เบเบฒเบ™เบ›เปˆเบญเบเป‚เบ„เบ‡เบเบฒเบ™ Cosmopolitan 2.0 เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบžเบตเบกเบกเบฒ, เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ” C เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เปเบฅเบฐเบฎเบนเบšเปเบšเบšเป€เบญเบเบฐเบชเบฒเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเปเบˆเบเบขเบฒเบเบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป‚เบ”เบเบšเปเปˆเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบ™เบฒเบเบžเบฒเบชเบฒเปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡ virtual. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเบเบฒเบ™เบฅเบงเบšเบฅเบงเบกเบขเบนเปˆเปƒเบ™ GCC เปเบฅเบฐ Clang เปเบกเปˆเบ™เบฅเบงเบšเบฅเบงเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เปเบˆเบเบขเบฒเบ Linux เปƒเบ”, macOS, Windows, FreeBSD, OpenBSD, NetBSD, เปเบฅเบฐเปเบกเป‰เบเบฐเบ—เบฑเป‰เบ‡เป€เบญเบตเป‰เบ™เบงเปˆเบฒเบˆเบฒเบ BIOS. เบฅเบฐโ€‹เบซเบฑเบ”โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เปเบกเปˆเบ™โ€‹เป„เบ”เป‰โ€‹เปเบˆเบโ€‹เบขเบฒเบโ€‹เบžเบฒเบโ€‹เปƒเบ•เป‰โ€‹เปƒเบšโ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ” ISC (เป€เบ›เบฑเบ™โ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เบ‚เบญเบ‡ MIT/BSDโ€‹)โ€‹.

เบเปˆเบญเบ‡เบšเบฑเบ™เบˆเบธเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ—เบปเปˆเบงเป„เบ›เปเบกเปˆเบ™เบญเบตเบ‡เปƒเบชเปˆเบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบžเบฒเบเบชเปˆเบงเบ™เปเบฅเบฐเบชเปˆเบงเบ™เบซเบปเบงเบชเบฐเป€เบžเบฒเบฐเบเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™ (PE, ELF, MACHO, OPENBSD) เปƒเบ™เป„เบŸเบฅเปŒเบ”เบฝเบง, เบ›เบฐเบชเบปเบกเบ›เบฐเบชเบฒเบ™เบซเบผเบฒเบเบฎเบนเบšเปเบšเบšเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ Unix, Windows เปเบฅเบฐ macOS. เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบญเบฑเบ™เบ”เบฝเบงเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบš Windows เปเบฅเบฐ Unix, trick เปเบกเปˆเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฅเบฐเบซเบฑเบ”เป„เบŸเบฅเปŒ Windows PE เป€เบ›เบฑเบ™ Shell scripts, เบ›เบฐเป‚เบซเบเบ”เบˆเบฒเบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒ Thompson Shell เบšเปเปˆเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบ "#!" เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เป‚เบ›เบผเปเบเบผเบกเบ—เบตเปˆเบ›เบฐเบเบญเบšเบกเบตเบซเบฅเบฒเบเป„เบŸเบฅเปŒ (เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป„เบŸเบฅเปŒเบ”เบฝเบง), เบกเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เปƒเบ™เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เปเบŸเป‰เบก ZIP เบ—เบตเปˆเบ–เบทเบเบญเบญเบเปเบšเบšเบžเบดเป€เบชเบ”. เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ‚เบญเบ‡โ€‹เบฎเบนเบšโ€‹เปเบšเบšโ€‹เบ—เบตเปˆโ€‹เบชเบฐโ€‹เป€เบซเบ™เบต (เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡ hello.com application):

MZqFpD='BIOS BOOT SECTOR' exec 7 $(command -v $0) printf '\177ELF...LINKER-ENCODED-FREEBSD-HEADER' >&7 exec "$0" "$@" exec qemu-x86_64 "$0" "$ @" เบญเบญเบเบˆเบฒเบ 1 เป‚เปเบ”เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡... เบžเบฒเบเบชเปˆเบงเบ™เบ‚เบญเบ‡ ELF... OPENBSD เปเบฒเบเป€เบซเบ”... เบชเปˆเบงเบ™เบซเบปเบง MACHO... เบฅเบฐเบซเบฑเบ” เปเบฅเบฐเบ‚เปเป‰เบกเบนเบ™... เบฅเบฐเบšเบปเบšเป„เบ›เบชเบฐเบ™เบต...

เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เป„เบŸเบฅเปŒ, เบ›เป‰เบฒเบเบŠเบทเปˆ โ€œMZqFpDโ€ เบ–เบทเบเบŠเบตเป‰เบšเบญเบ, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบฎเบฑเบšเบฎเบนเป‰เบงเปˆเบฒเป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบปเบงเบฎเบนเบšเปเบšเบš Windows PE. เบฅเปเบฒเบ”เบฑเบšเบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเบ–เบญเบ”เบฅเบฐเบซเบฑเบ”เบขเบนเปˆเปƒเบ™เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ โ€œpop %r10; jno 0x4a ; jo 0x4a", เปเบฅเบฐเป€เบชเบฑเป‰เบ™ "\177ELF" เป„เบ›เบซเบฒเบ„เปเบฒเปเบ™เบฐเบ™เปเบฒ "jg 0x47", เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเบปเปˆเบ‡เบ•เปเปˆเป„เบ›เบซเบฒเบˆเบธเบ”เป€เบ‚เบปเป‰เบฒ. เบฅเบฐเบšเบปเบš Unix เปเบฅเปˆเบ™เบฅเบฐเบซเบฑเบ” shell เบ—เบตเปˆเปƒเบŠเป‰เบ„เปเบฒเบชเบฑเปˆเบ‡ exec, เบ–เปˆเบฒเบเบ—เบญเบ”เบฅเบฐเบซเบฑเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบœเปˆเบฒเบ™เบ—เปเปˆเบ—เบตเปˆเบšเปเปˆเบกเบตเบŠเบทเปˆ. เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบชเบฐเป€เบซเบ™เบตเปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เปƒเบ™เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบš Unix เป‚เบ”เบเปƒเบŠเป‰ Shell เบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบฎเบนเบšเปเบšเบšเบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ‚เบญเบ‡ Thompson Shell.

เบเบฒเบ™เป‚เบ— qemu-x86_64 เบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบ—เบตเปˆเป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบงเบšเบฅเบงเบกเบฅเบฐเบซเบฑเบ”เบชเปเบฒเบฅเบฑเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐ x86_64 เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™ x86, เป€เบŠเบฑเปˆเบ™: เบเบฐเบ”เบฒเบ™ Raspberry Pi เปเบฅเบฐเบญเบธเบ›เบฐเบเบญเบ™ Apple เบ—เบตเปˆเบกเบตเป‚เบ›เป€เบŠเบ”เป€เบŠเบต ARM. เป‚เบ„เบ‡เบเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เบ—เบตเปˆเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ (เป‚เบฅเบซเบฐเป€เบ›เบปเปˆเบฒ). เปƒเบ™เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, bootloader เปเบกเปˆเบ™เบ•เบดเบ”เบเบฑเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰, เปเบฅเบฐเป‚เบ„เบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบšเบนเบ”เป„เบ”เป‰.

เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ C library libc เบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™เบชเบฐเป€เบซเบ™เบต 2024 เบŸเบฑเบ‡เบŠเบฑเบ™ (เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเบ—เปเบฒเบญเบดเบ”เบกเบตเบ›เบฐเบกเบฒเบ™ 1400 เบŸเบฑเบ‡เบŠเบฑเบ™). เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, Cosmopolitan เป€เบฎเบฑเบ”เบงเบฝเบเป„เบงเป€เบ—เบปเปˆเบฒเบ—เบตเปˆ glibc เปเบฅเบฐเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒเบ‚เบญเบ‡ Musl เปเบฅเบฐ Newlib, เป€เบ–เบดเบ‡เบงเปˆเบฒเบˆเบฐเบกเบตเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒ Cosmopolitan เปเบกเปˆเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบฅเบฐเบซเบฑเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒ glibc เปเบฅเบฐเบ›เบฐเบกเบฒเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบš Musl เปเบฅเบฐ Newlib. เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบ™เป‰เบฒเบ—เบตเปˆเป€เบญเบตเป‰เบ™เป€เบฅเบทเป‰เบญเบเป†เป€เบŠเบฑเปˆเบ™ memcpy เปเบฅเบฐ strlen, เป€เบ•เบฑเบเบ™เบดเบ "เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” trickle-down" เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เป€เบŠเบดเปˆเบ‡เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบกเบฐเบซเบฒเบžเบฒเบเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™, เป€เบŠเบดเปˆเบ‡ compiler เป„เบ”เป‰เบ–เบทเบเปเบˆเป‰เบ‡เปƒเบซเป‰เบŠเบฒเบšเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™ CPU เบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”. เบ‚เบฐเบšเบงเบ™เบเบฒเบ™, เป€เบŠเบดเปˆเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ›เบฐเบซเบเบฑเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ›เบฐเบซเบเบฑเบ”เบชเบฐเบ–เบฒเบ™เบฐ CPU เป‚เบ”เบเบเบฒเบ™เบ›เบฐเบซเบเบฑเบ”เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบเบฒเบ™เบ›เปˆเบญเบเปƒเบซเบกเปˆ:

  • เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบเบฒเบ™โ€‹เป€เบ‚เบปเป‰เบฒโ€‹เป€เบ–เบดเบ‡โ€‹เบŠเบฑเบšโ€‹เบžเบฐโ€‹เบเบฒโ€‹เบเบญเบ™โ€‹เบžเบฒเบโ€‹เปƒเบ™โ€‹เป„เบŸเบฅโ€‹เปŒ zip เป„เบ”เป‰โ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ›เปˆเบฝเบ™โ€‹เปเบ›เบ‡ (เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เป€เบ›เบตเบ”โ€‹เป„เบŸเบฅโ€‹เปŒโ€‹, เป€เบชเบฑเป‰เบ™โ€‹เบ—เบฒเบ‡ /zip/... เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹เป„เบ”เป‰โ€‹เบ–เบทเบโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เปเบ—เบ™โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เปƒเบŠเป‰ zipโ€‹:.. เบ„เปเบฒโ€‹เบ™เปเบฒโ€‹เบซเบ™เป‰เบฒโ€‹)โ€‹. เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เป€เบžเบทเปˆเบญเป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เปเบœเปˆเบ™เปƒเบ™ Windows, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป€เบŠเบฑเปˆเบ™ "/c/ ... " เปเบ—เบ™ "C: / ... ".
  • APE เปƒเบซเบกเปˆ (Actually Portable Executable) loader เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบต, เป€เบŠเบดเปˆเบ‡เบเปเบฒเบ™เบปเบ”เบฎเบนเบšเปเบšเบšเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ—เบปเปˆเบงเป„เบ›. เบ•เบปเบงเป‚เบซเบผเบ”เปƒเปเปˆเปƒเบŠเป‰ mmap เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบงเบฒเบ‡เป‚เบ›เบฃเปเบเบกเป„เบงเป‰เปƒเบ™เปœเปˆเบงเบเบ„เบงเบฒเบกเบˆเบณ เปเบฅเบฐเบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบ™เบทเป‰เบญเบซเบฒเปƒเบ™เบ—เบฑเบ™เบ—เบต. เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ—เบปเปˆเบงเป„เบ›เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เป„เบ”เป‰เบ›เบปเบเบเบฐเบ•เบดเบ—เบตเปˆเบ•เบดเบ”เบเบฑเบšเปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบชเปˆเบงเบ™เบšเบธเบเบ„เบปเบ™.
  • เปƒเบ™เป€เบงเบ—เบต Linux, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เป‚เบกเบ”เบนเบ™ kernel binfmt_misc เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป‚เบ„เบ‡เบเบฒเบ™ APE. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ binfmt_misc เปเบกเปˆเบ™เบงเบดเบ—เบตเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเป„เบงเบ—เบตเปˆเบชเบธเบ”.
  • เบชเปเบฒเบฅเบฑเบš Linux, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบ™เป‰เบฒเบ—เบตเปˆเบ‚เบญเบ‡เบชเบฑเบ™เบเบฒ () เปเบฅเบฐ unveil() เบเบฒเบ™เป‚เบ—เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบžเบฑเบ”เบ—เบฐเบ™เบฒเป‚เบ”เบเป‚เบ„เบ‡เบเบฒเบ™ OpenBSD เป„เบ”เป‰เบ–เบทเบเบชเบฐเป€เบซเบ™เบต. API เปเบกเปˆเบ™เบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เป‚เบ—เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบ”เบฒเป‚เบ„เบ‡เบเบฒเบ™เปƒเบ™ C, C ++, Python เปเบฅเบฐ Redbean, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบœเบปเบ™เบ›เบฐเป‚เบซเบเบ” pledge.com เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™ arbitrary.
  • เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปƒเบŠเป‰ Landlock Make utility - เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡ GNU Make เบ—เบตเปˆเบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”เบเบงเปˆเบฒเปเบฅเบฐเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบฅเบฐเบšเบปเบš Landlock เป‚เบ—เบซเบฒเป€เบžเบทเปˆเบญเปเบเบเป‚เบ„เบ‡เบเบฒเบ™เบˆเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ. เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฑเบš GNU Make เบ›เบปเบเบเบฐเบ•เบดเปเบกเปˆเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰.
  • เบŸเบฑเบ‡เบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบš multithreading เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ” - _spawn() เปเบฅเบฐ _join(), เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบเบฒเบ™เบœเบนเบเบกเบฑเบ”เบ—เบปเปˆเบงเป„เบ›เปƒเบ™เป„เบฅเบเบฐ APIs เบชเบฐเป€เบžเบฒเบฐเบเบฑเบšเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบžเบทเปˆเบญเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ POSIX Threads.
  • เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบ„เปเบฒเบซเบฅเบฑเบ _Thread_local เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบเบฐเบ—เบนเป‰ (TLS, Thread-Local Storage). เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, C runtime เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ TLS เบชเปเบฒเบฅเบฑเบšเบซเบปเบงเบ‚เปเป‰เบ•เบปเป‰เบ™เบ•เป, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เบฐเบซเบ™เบฒเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบˆเบฒเบ 12 KB เป€เบ›เบฑเบ™ 16 KB.
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบต "--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

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™