Toolchain para AutoFDO, un flujo de optimización guiada por perfiles que usa muestras de hardware de Linux perf para mejorar los binarios compilados.
pizlonator/fil-c
Una implementación de C y C++ segura para la memoria que compila código existente con pocos cambios o ninguno y convierte los errores de memoria en pánicos.
- Estrellas
- 3,902
- Forks
- 94
- Issues abiertos
- 79
- Último commit
- hace 18 horas
¿Qué es?
Fil-C es una implementación de C y C++ segura para la memoria, basada en clang 20.1.8 y compatible con C17 y C++20. La mayoría del software destinado a C o C++ se puede compilar sin cambios o con cambios mínimos, y las infracciones de seguridad de memoria, como el acceso fuera de los límites, el uso después de liberar memoria y la confusión de tipos, se detectan como pánicos de Fil-C en lugar de corromper la memoria silenciosamente.
Fil-C combina la recolección de basura concurrente con capacidades invisibles: cada puntero tiene una capacidad correspondiente, que no es visible para el espacio de direcciones de C y registra a qué memoria puede acceder y cómo. Cada operación fundamental de C se comprueba contra esa capacidad. A diferencia de las herramientas basadas en etiquetas, como AddressSanitizer, el diseño busca impedir que se exploten los errores, no solo señalarlos. El lenguaje no tiene una vía de escape `unsafe` y restringe la vinculación con código inseguro.
Fil-C se ejecuta de forma nativa en Linux x86_64 y ARM64. El proyecto incluye compilaciones basadas en musl y glibc, una variante Peregrine que genera binarios APE para Linux, Darwin y Windows en x86_64, y Pizlix, un entorno de usuario de Linux seguro para la memoria. Según se informa, funcionan paquetes como OpenSSL, CPython y SQLite.
Funciones clave
- 01Compila la mayoría del código C y C++ sin cambios o con cambios mínimos.
- 02Detecta como pánicos los errores de acceso fuera de los límites, uso después de liberar memoria y confusión de tipos.
- 03Usa comprobaciones basadas en capacidades en lugar de detección basada en etiquetas.
- 04Ofrece una libc de estilo POSIX con hilos, señales, mmap, setjmp/longjmp y excepciones de C++.
- 05Se ejecuta en Linux x86_64 y ARM64, con una variante Peregrine para varias plataformas.
Casos de uso
- Reforzar programas existentes en C o C++ frente a exploits de seguridad de memoria.
- Encontrar errores de memoria en código C/C++ con un entorno de ejecución que se detiene en la operación defectuosa.
- Crear un entorno de usuario de Linux seguro para la memoria a partir de software C adaptado.
Inicio rápido
- 1
Descarga una distribución binaria desde la página de releases (p. ej., filc-0.687-linux-x86_64.tar.xz).
- 2
Ejecuta el script de configuración de la distribución extraída.
./setup.sh
Antes de usarlo
- La compatibilidad nativa se limita a Linux en X86_64 o ARM64. Para otras plataformas se necesita la compilación experimental de Peregrine, que requiere un host Linux/x86_64 para compilar.
- El proyecto se basa en una versión parcheada de clang y tiene un runtime propio, por lo que requiere una cadena de herramientas considerable para compilarlo desde el código fuente.
- No tiene una única licencia estándar: depende del componente (LLVM, PAS, musl, cosmo, glibc y otros), así que revisa las condiciones antes de usarlo.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es fil-c?
- Una implementación de C y C++ segura para la memoria que compila código existente con pocos cambios o ninguno y convierte los errores de memoria en pánicos. Fil-C es una implementación de C y C++ segura para la memoria, basada en clang 20.1.8 y compatible con C17 y C++20. La mayoría del software destinado a C o C++ se puede compilar sin cambios o con cambios mínimos, y las infracciones de seguridad de memoria, como el acceso fuera de los límites, el uso después de liberar memoria y la confusión de tipos, se detectan como pánicos de Fil-C en lugar de corromper la memoria silenciosamente.
- ¿fil-c es gratuito? ¿Qué licencia tiene?
- fil-c es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿fil-c sigue mantenido?
- Mantenimiento activo. El último commit de fil-c fue el 6 nov 2026.
- ¿Para qué puedo usar fil-c?
- Reforzar programas existentes en C o C++ frente a exploits de seguridad de memoria. Encontrar errores de memoria en código C/C++ con un entorno de ejecución que se detiene en la operación defectuosa. Crear un entorno de usuario de Linux seguro para la memoria a partir de software C adaptado.
- ¿Cómo se instala fil-c?
- Descarga una distribución binaria desde la página de releases (p. ej., filc-0.687-linux-x86_64.tar.xz). Ejecuta el script de configuración de la distribución extraída.: ./setup.sh
- ¿Dónde consigo fil-c?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/pizlonator/fil-c
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Repositorio principal del lenguaje de programación Rust, con el compilador, la biblioteca estándar y la documentación.
El lenguaje de programación Swift y su cadena de herramientas de compilación: un lenguaje seguro para la memoria y de alto rendimiento, con acceso directo a C y Objective-C.
Un lenguaje experimental de programación de sistemas sin asignador de memoria en el heap ni recolector de basura, que usa pilas de datos gestionadas por el compilador para garantizar la seguridad de memoria.
Colección modular de tecnologías para compiladores y cadenas de herramientas, que incluye el núcleo de LLVM, el frontend Clang para C/C++, libc++ y el linker LLD.
Una cadena de herramientas de compilación que convierte código C y C++ en WebAssembly para ejecutarlo en navegadores, Node.js y otros runtimes de Wasm.