Sobre el proyecto
Cosmopolitan Libc es una biblioteca de C y una cadena de herramientas que hace que C/C++ se comporte como un lenguaje de compilación única y ejecución universal, de espíritu similar a Java pero sin requerir un intérprete ni una máquina virtual. Reconfigura GCC y Clang estándar para producir un formato ejecutable políglota aprobado por POSIX que se ejecuta de forma nativa en Linux, macOS, Windows, FreeBSD, OpenBSD 7.3, NetBSD y BIOS, con el objetivo de lograr un rendimiento sólido y un tamaño muy reducido.
Para empezar, el punto central es el compilador cosmocc, distribuido como un zip desde cosmo.zip. Tras descomprimirlo, un sencillo hello.c puede compilarse con `cosmocc -o hello hello.c` y ejecutarse directamente. El runtime enlaza por defecto funciones pesadas de diagnóstico: `--strace` registra las llamadas al sistema y `--ftrace` registra las llamadas a funciones, ambas mediante la utilidad kprintf, que puede redirigirse a un archivo con la variable de entorno KPRINTF_LOG.
La cadena de herramientas también puede compilar proyectos de código abierto convencionales basados en autotools exportando CC y CXX a los compiladores de cosmo y ejecutando configure, make y make install. El propio Cosmopolitan puede compilarse desde el código fuente en las plataformas compatibles; el Makefile descarga cosmocc automáticamente. Se recomienda instalar un APE Loader en todo el sistema mediante ape/apeinstall.sh y, en Linux, se registra con binfmt_misc para obtener rendimiento adicional. Las compilaciones usan GNU Make, con un make de arranque disponible en cosmo.zip. Dado que el repositorio es grande, pueden compilarse objetivos individuales, como una sola prueba POSIX o un paquete de pruebas completo. Los modos de compilación incluyen `m=tiny` para binarios muy pequeños (de hasta 12 kb) y `m=tinylinux` para recortar otros sistemas operativos y comportarse más como Musl Libc.
La guía de depuración abarca la configuración de GDB para conjuntos de caracteres y diseños UTF-8, la ejecución de archivos .dbg y la carga de símbolos de depuración de forma independiente. Las notas de plataforma tratan sobre shells (se recomienda zsh 5.9+, con soluciones alternativas para shells más antiguos y subprocesos de Python), sistemas Linux que enrutan mal los ejecutables MZ hacia WINE o imprimen errores del detector de ejecución, y WSL, donde se aconseja desactivar WSLInterop binfmt_misc. El proyecto enumera las versiones mínimas de plataforma compatibles, incluidas AMD K8, Intel Core, Linux 2.6.18, Windows 8 (con una rama comunitaria vista para Windows más antiguos), Darwin 23.1.0+, OpenBSD 7.3, FreeBSD 13 y NetBSD 9.2. El debate de desarrollo tiene lugar en un servidor de Discord, y la financiación proviene de GitHub Sponsors y Patreon.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.