Conjunto de ferramentas para AutoFDO, um fluxo de otimização guiada por perfil que usa amostras de hardware do Linux perf para melhorar binários compilados.
pizlonator/fil-c
Uma implementação de C e C++ com segurança de memória, que compila código existente com poucas ou nenhuma alteração e transforma erros de memória em panics.
- Estrelas
- 3,900
- Forks
- 94
- Issues abertas
- 79
- Último commit
- há 22 horas
O que é?
Fil-C é uma implementação de C e C++ com segurança de memória, baseada no clang 20.1.8 e compatível com C17 e C++20. A maioria dos softwares voltados para C ou C++ pode ser compilada sem alterações ou com mudanças mínimas, e violações de segurança de memória — como acesso fora dos limites, uso após liberação e confusão de tipos — são detectadas como panics do Fil-C, em vez de corromperem a memória silenciosamente.
O Fil-C combina garbage collection concorrente com capabilities invisíveis: cada ponteiro tem uma capability correspondente, invisível para o espaço de endereçamento de C, que registra quais regiões de memória ele pode acessar e de que forma. Cada operação fundamental de C é verificada com base nessa capability. Ao contrário de ferramentas baseadas em tags, como o AddressSanitizer, o objetivo do projeto é impedir que bugs sejam explorados, não apenas sinalizá-los. A linguagem não tem uma alternativa de escape `unsafe`, e a vinculação com código inseguro é restrita.
O Fil-C é executado nativamente em Linux x86_64 e ARM64. O projeto inclui builds baseados em musl e glibc, uma variante Peregrine que produz binários APE para Linux, Darwin e Windows em x86_64, e o Pizlix, um userland Linux com segurança de memória. Há relatos de que pacotes como OpenSSL, CPython e SQLite funcionam.
Recursos principais
- 01Compila a maioria dos códigos C e C++ sem alterações ou com mudanças mínimas.
- 02Detecta erros de acesso fora dos limites, uso após liberação e confusão de tipos como panics.
- 03Usa verificações baseadas em capabilities, em vez de detecção baseada em tags.
- 04Oferece uma libc no estilo POSIX com threads, signals, mmap, setjmp/longjmp e exceções de C++.
- 05É executado em Linux x86_64 e ARM64, com uma variante Peregrine para várias plataformas.
Casos de uso
- Reforçar a segurança de programas C ou C++ existentes contra exploits de segurança de memória.
- Encontrar erros de memória em código C/C++ com um runtime que interrompe a execução na operação que causou o erro.
- Criar um userland Linux com segurança de memória a partir de software C portado.
Início rápido
- 1
Baixe uma distribuição binária na página de releases (por exemplo, filc-0.687-linux-x86_64.tar.xz).
- 2
Execute o script de configuração da distribuição extraída.
./setup.sh
Antes de usar
- O suporte nativo é limitado ao Linux em X86_64 ou ARM64. Para outras plataformas, é necessário usar o build experimental do Peregrine, que requer um host Linux/x86_64 para ser compilado.
- O projeto é construído sobre um clang com patches e tem um runtime próprio, portanto exige uma toolchain robusta para ser compilado a partir do código-fonte.
- Não há uma única licença padrão: ela varia conforme o componente (LLVM, PAS, musl, cosmo, glibc e outros). Por isso, revise os termos antes de usar.
Em coleções
Tópicos
Perguntas frequentes
- O que é fil-c?
- Uma implementação de C e C++ com segurança de memória, que compila código existente com poucas ou nenhuma alteração e transforma erros de memória em panics. Fil-C é uma implementação de C e C++ com segurança de memória, baseada no clang 20.1.8 e compatível com C17 e C++20. A maioria dos softwares voltados para C ou C++ pode ser compilada sem alterações ou com mudanças mínimas, e violações de segurança de memória — como acesso fora dos limites, uso após liberação e confusão de tipos — são detectadas como panics do Fil-C, em vez de corromperem a memória silenciosamente.
- fil-c é gratuito? Qual é a licença?
- fil-c é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
- fil-c ainda é mantido?
- Manutenção ativa. O último commit de fil-c foi em 5 de nov. de 2026.
- Para que posso usar fil-c?
- Reforçar a segurança de programas C ou C++ existentes contra exploits de segurança de memória. Encontrar erros de memória em código C/C++ com um runtime que interrompe a execução na operação que causou o erro. Criar um userland Linux com segurança de memória a partir de software C portado.
- Como instalar fil-c?
- Baixe uma distribuição binária na página de releases (por exemplo, filc-0.687-linux-x86_64.tar.xz). Execute o script de configuração da distribuição extraída.: ./setup.sh
- Onde consigo fil-c?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/pizlonator/fil-c
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
O repositório principal do código-fonte da linguagem Rust, com o compilador, a biblioteca padrão e a documentação.
A linguagem de programação Swift e seu compilador e toolchain: uma linguagem segura para a memória, de alto desempenho e com acesso direto a C e Objective-C.
Uma linguagem experimental de programação de sistemas, sem alocador de heap nem coletor de lixo, que usa pilhas de dados gerenciadas pelo compilador para garantir a segurança da memória.
Coleção modular de tecnologias para compiladores e toolchains, incluindo o núcleo do LLVM, o frontend Clang para C/C++, libc++ e o linker LLD.
Uma toolchain de compilação que transforma código C e C++ em WebAssembly para execução em navegadores, Node.js e outros runtimes Wasm.