Набор инструментов AutoFDO — процесс оптимизации с обратной связью по профилям, использующий аппаратные выборочные профили из Linux perf для улучшения скомпилированных бинарных файлов.
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
Скачайте бинарный дистрибутив со страницы releases (например, filc-0.687-linux-x86_64.tar.xz).
- 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 обновляется ежедневно.
Похожие проекты
Основной репозиторий исходного кода языка Rust: компилятор, стандартная библиотека и документация.
Язык программирования Swift и его компиляторная цепочка инструментов: безопасный для памяти высокопроизводительный язык с удобной интеграцией с C и Objective-C.
Экспериментальный язык системного программирования без аллокатора в куче и сборщика мусора, с безопасным управлением памятью через стеки данных под контролем компилятора.
Модульный набор технологий для компиляторов и инструментальных цепочек, включающий LLVM core, фронтенд Clang для C/C++, libc++ и линкер LLD.
Набор инструментов компиляции, который преобразует код на C и C++ в WebAssembly для запуска в браузерах, Node.js и других Wasm-средах.