Repolode
pizlonator

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. 1

    Baixe uma distribuição binária na página de releases (por exemplo, filc-0.687-linux-x86_64.tar.xz).

  2. 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