Repolode
pizlonator

pizlonator/fil-c

기존 코드를 거의 수정하지 않거나 전혀 수정하지 않고 컴파일하며, 메모리 오류를 패닉으로 처리하는 메모리 안전 C 및 C++ 구현입니다.

스타
3,902
포크
94
열린 이슈
79
마지막 커밋
21시간 전

어떤 프로젝트인가요?

Fil-C는 clang 20.1.8을 기반으로 만든 메모리 안전 C 및 C++ 구현으로, C17과 C++20을 지원합니다. C나 C++을 대상으로 하는 대부분의 소프트웨어는 코드를 전혀 또는 최소한으로 수정하고 컴파일할 수 있으며, 범위 초과 접근, 해제 후 사용, 타입 혼동 같은 메모리 안전성 위반은 메모리를 조용히 손상시키는 대신 Fil-C 패닉으로 처리됩니다.

Fil-C는 동시 가비지 컬렉션과 보이지 않는 capability를 결합해 사용합니다. 각 포인터에는 C 주소 공간에 드러나지 않는 대응 capability가 있으며, 이 capability는 포인터가 어떤 메모리에 어떤 방식으로 접근할 수 있는지 기록합니다. 모든 기본 C 연산은 이 capability에 비춰 검사됩니다. AddressSanitizer 같은 태그 기반 도구와 달리, 이 설계는 버그를 단순히 표시하는 데 그치지 않고 악용을 막는 것을 목표로 합니다. 이 언어에는 `unsafe` 우회 수단이 없으며, 안전하지 않은 코드와의 링크도 제한됩니다.

Fil-C는 Linux x86_64와 ARM64에서 네이티브로 실행됩니다. 프로젝트는 musl 기반 및 glibc 기반 빌드, Linux·Darwin·Windows용 x86_64 APE 바이너리를 생성하는 Peregrine 변형, 그리고 메모리 안전 Linux 사용자 공간인 Pizlix를 제공합니다. OpenSSL, CPython, SQLite 같은 패키지가 작동하는 것으로 보고되어 있습니다.

핵심 기능

  • 01대부분의 C 및 C++ 코드를 전혀 또는 최소한으로 수정하고 컴파일합니다.
  • 02범위 초과 접근, 해제 후 사용, 타입 혼동 오류를 패닉으로 처리합니다.
  • 03태그 기반 감지 대신 capability 기반 검사를 사용합니다.
  • 04스레드, 시그널, mmap, setjmp/longjmp, C++ 예외를 지원하는 POSIX 스타일 libc를 제공합니다.
  • 05Linux x86_64 및 ARM64에서 실행되며, 여러 플랫폼을 지원하는 Peregrine 변형도 제공합니다.

활용 사례

  • 기존 C 또는 C++ 프로그램을 메모리 안전성 악용으로부터 강화하기.
  • 잘못된 연산에서 실행을 중단하는 런타임으로 C/C++ 코드의 메모리 오류를 찾기.
  • 포팅된 C 소프트웨어를 바탕으로 메모리 안전 Linux 사용자 공간을 구축하기.

빠른 시작

  1. 1

    releases 페이지에서 바이너리 배포판을 다운로드합니다(예: filc-0.687-linux-x86_64.tar.xz).

  2. 2

    압축을 푼 배포판에서 setup 스크립트를 실행합니다.

    ./setup.sh

사용 전 알아둘 점

  • 네이티브 지원은 Linux의 X86_64 또는 ARM64로 제한됩니다. 다른 플랫폼에서는 실험적인 Peregrine 빌드가 필요하며, 빌드하려면 Linux/x86_64 호스트가 필요합니다.
  • 이 프로젝트는 패치된 clang을 기반으로 빌드되고 자체 런타임을 사용하므로, 소스에서 빌드하려면 상당한 규모의 툴체인이 필요합니다.
  • 단일 표준 라이선스가 아니라 구성 요소(LLVM, PAS, musl, cosmo, glibc 등)에 따라 달라지므로 사용 전에 라이선스 조건을 확인하세요.

포함된 컬렉션

토픽

자주 묻는 질문

fil-c은(는) 무엇인가요?
기존 코드를 거의 수정하지 않거나 전혀 수정하지 않고 컴파일하며, 메모리 오류를 패닉으로 처리하는 메모리 안전 C 및 C++ 구현입니다. Fil-C는 clang 20.1.8을 기반으로 만든 메모리 안전 C 및 C++ 구현으로, C17과 C++20을 지원합니다. C나 C++을 대상으로 하는 대부분의 소프트웨어는 코드를 전혀 또는 최소한으로 수정하고 컴파일할 수 있으며, 범위 초과 접근, 해제 후 사용, 타입 혼동 같은 메모리 안전성 위반은 메모리를 조용히 손상시키는 대신 Fil-C 패닉으로 처리됩니다.
fil-c은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
fil-c은(는) Other 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
fil-c은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. fil-c의 마지막 커밋은 2026년 11월 6일입니다.
fil-c은(는) 어디에 사용할 수 있나요?
기존 C 또는 C++ 프로그램을 메모리 안전성 악용으로부터 강화하기. 잘못된 연산에서 실행을 중단하는 런타임으로 C/C++ 코드의 메모리 오류를 찾기. 포팅된 C 소프트웨어를 바탕으로 메모리 안전 Linux 사용자 공간을 구축하기.
fil-c는 어떻게 설치하나요?
releases 페이지에서 바이너리 배포판을 다운로드합니다(예: filc-0.687-linux-x86_64.tar.xz). 압축을 푼 배포판에서 setup 스크립트를 실행합니다.: ./setup.sh
fil-c은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/pizlonator/fil-c

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트

Linux perf의 샘플링 하드웨어 프로파일을 사용해 컴파일된 바이너리를 개선하는 프로파일 기반 최적화 워크플로인 AutoFDO용 툴체인입니다.

개발 도구#compiler#performance#profile-guided-optimization
623128C++Apache-2.0업데이트 지난달