Об этом проекте

Cosmopolitan Libc — это библиотека C и инструментарий, которые заставляют C/C++ вести себя как язык «собрал один раз — запускай где угодно», по духу похожий на Java, но без необходимости в интерпретаторе или виртуальной машине. Он перенастраивает стандартные GCC и Clang для создания одобренного POSIX полиглотного формата исполняемых файлов, который нативно работает в Linux, macOS, Windows, FreeBSD, OpenBSD 7.3, NetBSD и BIOS, стремясь к высокой производительности и очень малому размеру. Начало работы сосредоточено на компиляторе cosmocc, распространяемом в виде zip-архива с cosmo.zip. После распаковки простой hello.c можно скомпилировать командой `cosmocc -o hello hello.c` и запустить напрямую. Среда выполнения по умолчанию подключает мощные средства диагностики: `--strace` регистрирует системные вызовы, а `--ftrace` — вызовы функций, оба используют механизм kprintf, вывод которого можно перенаправить в файл через переменную окружения KPRINTF_LOG. Инструментарий также может собирать обычные открытые проекты на основе autotools, если экспортировать CC и CXX на компиляторы cosmo и запустить configure, make и make install. Сам Cosmopolitan можно собрать из исходников на поддерживаемых платформах; Makefile автоматически загружает cosmocc. Рекомендуется установить общесистемный APE Loader через ape/apeinstall.sh, а в Linux он регистрируется в binfmt_misc для дополнительной производительности. Сборка использует GNU Make, а загрузочный make доступен на cosmo.zip. Поскольку репозиторий большой, можно собирать отдельные цели, например один POSIX-тест или целый пакет тестов. Режимы сборки включают `m=tiny` для очень маленьких бинарников (вплоть до 12 КБ) и `m=tinylinux`, чтобы урезать другие операционные системы и вести себя больше как Musl Libc. Рекомендации по отладке охватывают настройку GDB для кодировок и раскладок UTF-8, запуск файлов .dbg и независимую загрузку отладочных символов. Замечания по платформам касаются оболочек (рекомендуется zsh 5.9+, с обходными путями для старых оболочек и подпроцессов Python), систем Linux, которые ошибочно направляют MZ-исполняемые файлы в WINE или выводят ошибки run-detector, и WSL, где советуют отключить WSLInterop binfmt_misc. Проект перечисляет минимальные поддерживаемые версии платформ, включая AMD K8, Intel Core, Linux 2.6.18, Windows 8 (с общественной веткой vista для более старых Windows), Darwin 23.1.0+, OpenBSD 7.3, FreeBSD 13 и NetBSD 9.2. Обсуждение разработки ведётся на сервере Discord, а финансирование поступает через GitHub Sponsors и Patreon.