ืคืจืกืื ืคืจืืืงื Cosmopolitan 2.0, ืืคืชื ืืช ืกืคืจืืืช C ืืกืื ืืจืืืช ืืคืืจืื ืงืืืฅ ืืคืขืื ืืื ืืืจืกืื ืฉื ืืชื ืืืฉืชืืฉ ืื ืืืคืฆืช ืชืืื ืืืช ืขืืืจ ืืขืจืืืช ืืคืขืื ืฉืื ืืช ืืื ืฉืืืืฉ ืืืชืืจืืื ืื ืืืืื ืืช ืืืจืืืืืืืช. ืืชืืฆืื ืืืชืงืืืช ืขื ืืื ืงืืืคืืืฆืื ื-GCC ืื-Clang ืืืจืืืช ืืงืืืฅ ืืคืขืื ืืื ืืืจืกืื ืืงืืฉืจ ืกืืืืช ืฉื ืืชื ืืืจืืฅ ืืื ืืคืฆืช ืืื ืืงืก, macOS, Windows, FreeBSD, OpenBSD, NetBSD, ืืืคืืื ืืงืจืื ืื-BIOS. ืงืื ืืคืจืืืงื ืืืคืฅ ืชืืช ืจืืฉืืื ISC (ืืจืกื ืคืฉืืื ืฉื โโMIT/BSD).
ืืืืื ืืืคืงืช ืงืืฆื ืืคืขืื ืืื ืืืจืกืืืื ืืืืกืก ืขื ืฉืืืื ืฉื ืกืืื ืืื ืืืืชืจืืช ืกืคืฆืืคืืืช ืืืขืจืืืช ืืคืขืื ืฉืื ืืช (PE, ELF, MACHO, OPENBSD) ืืงืืืฅ ืืื, ืฉืืืื ืฉื ืืกืคืจ ืคืืจืืืื ืฉืื ืื ืืืฉืืฉืื ื-Unix, Windows ื-macOS. ืืื ืืืืืื ืฉืงืืืฅ ืืคืขืื ืืืื ืืจืืฅ ืืืขืจืืืช Windows ื-Unix, ืืจืืง ืืื ืืงืืื ืงืืฆื Windows PE ืืกืงืจืืคืืื ืฉื ืืขืืคืช, ืชืื ื ืืฆืื ืืขืืืื ืฉ-Tompson 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" "$ @" ืฆื ืืืฆื ืืืืชื 1... ืงืืขื ืฉืืื... ืืขืจื OPENBSD... ืืืชืจืืช ืืืฆ'ื... ืงืื ืื ืชืื ืื... ืกืคืจืืืช ืืืงืื...
ืืชืืืืช ืืงืืืฅ, ืืฆืืื ืช ืืชืืืืช "MZqFpD", ืื ืชืคืกืช ืืืืชืจืช ืืคืืจืื Windows PE. ืจืฆืฃ ืื ืืคืืขื ื ืื ืืืืจืื "pop %r10; jno 0x4a ; jo 0x4a", ืืืฉืืจื "\177ELF" ืืืืจืื "jg 0x47", ืืืฉืืฉืืช ืืืขืืจื ืื ืงืืืช ืืื ืืกื. ืืขืจืืืช ืืื ืืงืก ืืจืฆืืช ืงืื ืืขืืคืช ืืืฉืชืืฉ ืืคืงืืื exec, ืืืขืืืจ ืืช ืงืื ืืืคืขืื ืืจื ืฆืื ืืจ ืืื ืฉื. ืืืืื ืฉื ืืฉืืื ืืืืฆืขืช ืืื ืืืืืืช ืืจืืฅ ืขื ืืขืจืืืช ืืคืขืื ืืืืืืช Unix ืจืง ืืืืฆืขืืช ืงืื ืืืืช ืืชืืืืืช ืืืฆื ืชืืืืืช Thompson Shell.
ืืงืจืืื qemu-x86_64 ืืกืคืงืช ื ืืืืืช ื ืืกืคืช ืืืืคืฉืจืช ืืจืืฅ ืงืื ืืืืืจ ืขืืืจ ืืจืืืืงืืืจืช x86_64 ืขื ืคืืืคืืจืืืช ืฉืืื ื x86, ืืืื ืืืืืช Raspberry Pi ืืืืฉืืจื ืืคื ืืืฆืืืืื ืืืขืืื ARM. ืืคืจืืืงื ืืืื ืืฉืืฉ ืื ืืืฆืืจืช ืืคืืืงืฆืืืช ืขืฆืืืืืช ืืคืืขืืืช ืืื ืืขืจืืช ืืคืขืื (bare metal). ืืืืฉืืืื ืืืื ืืฆืืจืฃ ืืืขื ืืชืืื ืืงืืืฅ ืืืคืขืื, ืืืชืืื ืืช ืคืืขืืช ืืืขืจืืช ืืคืขืื ืื ืืชื ืช ืืืชืืื.
ืกืคืจืืืช C ืืกืื ืืจืืืช libc ืฉืคืืชืื ืขื ืืื ืืคืจืืืงื ืืฆืืขื 2024 ืคืื ืงืฆืืืช (ืืืืืืจื ืืจืืฉืื ื ืืื ื-1400 ืคืื ืงืฆืืืช). ืืืืื ืช ืืืฆืืขืื, Cosmopolitan ืขืืื ืืืจ ืืื glibc ืืืื ืืงืืื ืืืืคื ื ืืืจ ืืช Musl ื-Newlib, ืืืจืืช ืืขืืืื ืฉ-Cosmopolitan ืืื ืืกืืจ ืืืื ืงืื ืืืชืจ ืืืืื ืืงืื ื-glibc ืืืชืืื ืืขืจื ื-Musl ื-Newlib. ืืื ืืืฆืข ืืืคืืืืืืฆืื ืฉื ืคืื ืงืฆืืืช ืื ืงืจืืืช ืืขืชืื ืงืจืืืืช ืืื memcpy ื-strlen, ื ืขืฉื ืฉืืืืฉ ื ืืกืฃ ืืืื ืืงืช "ืืืฆืืขื ืืืคืืืฃ", ืฉืื ื ืขืฉื ืฉืืืืฉ ืืงืฉืืจืช ืืืงืจื ืืงืจืืื ืืคืื ืงืฆืื, ืฉืื ืืืืืจ ืืงืื ืืืืข ืขื ืืืืจื ื-CPU ืืืขืืจืืื ืืืืฆืืข ืืงืื ืชืืืื, ืืืืคืฉืจ ืืืกืืื ืืืฉืืืื ืืขืช ืฉืืืจืช ืืฆื ื-CPU ืขื ืืื ืฉืืืจืช ืืืืจืื ืื ืืชื ืื ืืฉืื ืื ืืืื.
ืืื ืืฉืื ืืืื ืืืืืืจื ืืืืฉื:
- ืกืืืืช ืืืืฉื ืืืฉืืืื ืคื ืืืืื ืืชืื ืงืืืฅ zip ืฉืื ืชื (ืืขืช ืคืชืืืช ืงืืฆืื, ืืขืช ื ืขืฉื ืฉืืืืฉ ืื ืชืืื /zip/... ืืจืืืืื ืืืงืื ืืืฉืชืืฉ ืืงืืืืืช zip:..). ืืืืคื ืืืื, ืืื ืืืฉืช ืืืืกืงืื ื-Windows, ืืคืฉืจ ืืืฉืชืืฉ ืื ืชืืืื ืืื "/c/..." ืืืงืื "C:/...".
- ืืืฆืข ืืืขืื APE (Actually Portable Executable) ืืืฉ, ืืืืืืจ ืืช ืืคืืจืื ืฉื ืงืืฆื ืืคืขืื ืืื ืืืจืกืืืื. ืืืืขื ืืืืฉ ืืฉืชืืฉ ื-mmap ืืื ืืืงื ืืช ืืชืืื ืืช ืืืืืจืื ืืืื ื ืืฉื ื ืขืื ืืช ืืชืืื ืชืื ืืื ืชื ืืขื. ืืืืืช ืืฆืืจื, ื ืืชื ืืืืืจ ืืช ืงืืืฅ ืืืคืขืื ืืืื ืืืจืกืื ืืงืืฆื ืืคืขืื ืจืืืืื ืืงืฉืืจืื ืืคืืืคืืจืืืช ืืืืืืช.
- ืืคืืืคืืจืืช ืืื ืืงืก, ืืคืฉืจ ืืืฉืชืืฉ ืืืืืื ืืืืช binfmt_misc ืืื ืืืคืขืื ืชืืื ืืืช APE. ืืฆืืื ืื ืืฉืืืืฉ ื-binfmt_misc ืืื ืฉืืืช ืืืฉืงื ืืืืืจื ืืืืชืจ.
- ืขืืืจ ืืื ืืงืก, ืืืฆืข ืืืฉืื ืฉื ืืคืื ืงืฆืืื ืืืืช ืฉื ืงืจืืืืช ืืืขืจืืช ()pledge() ื- unveil() ืฉืคืืชืื ืขื ืืื ืคืจืืืงื OpenBSD. API ืืกืืคืง ืืฉืืืืฉ ืืงืจืืืืช ืืื ืืชืืื ืืืช ื-C, C++, Python ื-Redbean, ืืื ืื ืืื ืขืืจ pledge.com ืืืืืื ืชืืืืืื ืฉืจืืจืืชืืื.
- ื-build ืืฉืชืืฉ ืืืื ืืฉืืจืืช 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.
- ืืคืืืคืืจืืช ืืื ืืงืก, ืืืืฆืืขืื ืฉื ืงืจืืืืช 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