Cosmopolitan делает из C язык, который "собери один раз - запускай везде", почти как Java, за исключением того что приложения не требуют интерпретаторы или предустановленные виртуальные машины. Cosmo даёт преимущества высокоуровневых языков, таких как Go и Rust, но не изобретает новый язык, и вам не нужно настраивать CI для сборки отдельных бинарников для каждой операционной системы. На чём Cosmopolitan фокусируется - на исправлении C путём отсоединения его от платформ, чтобы на нём было приятно писать небольшие unix-программы, которые легко распространяются на гораздо широкую аудиторию.
Пример:
Команда выше чинит GCC, и он выдаёт переносимые бинарники, которые запускаются на любом дистрибутиве Linux, в дополнении к Mac OS X, Windows NT, FreeBSD, OpenBSD и NetBSD.
https://justine.lol/cosmopolitan/
Пример:
Код:
# создайте простую программу на C в командной строке
printf %s '
main() {
printf("hello world\n");
}
' >hello.c
# запустите компилятор gcc в автономном режиме
gcc -g -Os -static -fno-pie -no-pie -nostdlib -nostdinc \
-fno-omit-frame-pointer -pg -mnop-mcount \
-o hello.com.dbg hello.c -Wl,--gc-sections -fuse-ld=bfd \
-Wl,-T,ape.lds -include cosmopolitan.h crt.o ape.o cosmopolitan.a
objcopy -S -O binary hello.com.dbg hello.com
# ПРИМЕЧАНИЕ: сделайте scp для бинарника на windows/mac/т.п. *до* запуска!
# ~40kb static binary (can be ~16kb w/ MODE=tiny)
./hello.com
Команда выше чинит GCC, и он выдаёт переносимые бинарники, которые запускаются на любом дистрибутиве Linux, в дополнении к Mac OS X, Windows NT, FreeBSD, OpenBSD и NetBSD.
https://justine.lol/cosmopolitan/
It's time to kick gum and chew ass. And i'm all out of ass.