Repolode
pizlonator

pizlonator/fil-c

Реализация C и C++ с защитой памяти: компилирует существующий код почти без изменений и превращает ошибки работы с памятью в панику.

Звёзды
3,900
Форки
94
Открытые issues
79
Последний коммит
вчера

Что это?

Fil-C — реализация C и C++ с защитой памяти на базе clang 20.1.8, поддерживающая C17 и C++20. Большинство программ для C и C++ можно собрать без изменений или с минимальными правками. Нарушения защиты памяти, такие как выход за границы, обращение к освобождённой памяти и путаница типов, вызывают панику Fil-C, а не остаются незамеченными и не приводят к повреждению памяти.

Fil-C сочетает параллельную сборку мусора и невидимые capabilities: каждому указателю соответствует capability, не видимая в адресном пространстве C, которая описывает, к какой памяти и каким образом он может обращаться. Каждая базовая операция C проверяется на соответствие этой capability. В отличие от инструментов на основе тегов, таких как AddressSanitizer, эта архитектура призвана не просто обнаруживать ошибки, а не давать злоумышленникам использовать их. В языке нет обходного механизма `unsafe`, а связывание с небезопасным кодом ограничено.

Fil-C нативно работает на Linux x86_64 и ARM64. Проект включает сборки на базе musl и glibc, вариант Peregrine, создающий APE-бинарники для Linux, Darwin и Windows на x86_64, а также Pizlix — пользовательское окружение Linux с защитой памяти. По сообщениям, работают такие пакеты, как OpenSSL, CPython и SQLite.

Ключевые возможности

  • 01Компилирует большую часть кода на C и C++ без изменений или с минимальными правками.
  • 02Вызывает панику при выходе за границы, обращении к освобождённой памяти и путанице типов.
  • 03Проверяет доступ с помощью capabilities, а не обнаруживает ошибки на основе тегов.
  • 04Предоставляет libc в стиле POSIX с потоками, сигналами, mmap, setjmp/longjmp и исключениями C++.
  • 05Работает на Linux x86_64 и ARM64; вариант Peregrine поддерживает несколько платформ.

Сценарии использования

  • Защита существующих программ на C и C++ от эксплойтов, использующих ошибки работы с памятью.
  • Поиск ошибок работы с памятью в коде на C/C++ с помощью среды выполнения, останавливающей программу при ошибочной операции.
  • Создание пользовательского окружения Linux с защитой памяти на основе портированного ПО на C.

Быстрый старт

  1. 1

    Скачайте бинарный дистрибутив со страницы releases (например, filc-0.687-linux-x86_64.tar.xz).

  2. 2

    Запустите скрипт установки из распакованного дистрибутива.

    ./setup.sh

Что важно знать

  • Нативная поддержка ограничена Linux на X86_64 или ARM64. Для других платформ нужна экспериментальная сборка Peregrine, для сборки которой требуется хост Linux/x86_64.
  • Проект построен на модифицированном clang и использует собственную среду выполнения, поэтому для сборки из исходного кода требуется тяжёлая цепочка инструментов.
  • Единой стандартной лицензии нет: условия зависят от компонента (LLVM, PAS, musl, cosmo, glibc и других), поэтому перед использованием ознакомьтесь с ними.

В подборках

Темы

Частые вопросы

Что такое fil-c?
Реализация C и C++ с защитой памяти: компилирует существующий код почти без изменений и превращает ошибки работы с памятью в панику. Fil-C — реализация C и C++ с защитой памяти на базе clang 20.1.8, поддерживающая C17 и C++20. Большинство программ для C и C++ можно собрать без изменений или с минимальными правками. Нарушения защиты памяти, такие как выход за границы, обращение к освобождённой памяти и путаница типов, вызывают панику Fil-C, а не остаются незамеченными и не приводят к повреждению памяти.
fil-c можно использовать бесплатно? Какая у него лицензия?
fil-c распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
fil-c всё ещё поддерживается?
Активно поддерживается. Последний коммит в fil-c — 5 нояб. 2026 г..
Для чего можно использовать fil-c?
Защита существующих программ на C и C++ от эксплойтов, использующих ошибки работы с памятью. Поиск ошибок работы с памятью в коде на C/C++ с помощью среды выполнения, останавливающей программу при ошибочной операции. Создание пользовательского окружения Linux с защитой памяти на основе портированного ПО на C.
Как установить fil-c?
Скачайте бинарный дистрибутив со страницы releases (например, filc-0.687-linux-x86_64.tar.xz). Запустите скрипт установки из распакованного дистрибутива.: ./setup.sh
Где скачать fil-c?
Исходный код и инструкции по установке — на GitHub: https://github.com/pizlonator/fil-c

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Набор инструментов AutoFDO — процесс оптимизации с обратной связью по профилям, использующий аппаратные выборочные профили из Linux perf для улучшения скомпилированных бинарных файлов.

623128C++Apache-2.0Обновлён в прошлом месяце

Язык программирования Swift и его компиляторная цепочка инструментов: безопасный для памяти высокопроизводительный язык с удобной интеграцией с C и Objective-C.

70,5 тыс.+16 за неделю10,9 тыс.SwiftApache-2.0Обновлён 23 часа назад

Экспериментальный язык системного программирования без аллокатора в куче и сборщика мусора, с безопасным управлением памятью через стеки данных под контролем компилятора.

3,1 тыс.+220 за неделю125C++Apache-2.0Активно поддерживаетсяОбновлён позавчера