I want extern "fil-C"
Rust의 C FFI는 수십 년간의 유용한 소프트웨어에 접근할 수 있게 하지만, 컴파일 시점의 메모리 안전성을 증명하는 Rust의 장점을 무시하고 C 라이브러리의 계약을 신뢰해야 하는 근본적인 문제를 안고 있습니다. 기존 코드를 수정하는 것은 비용이 많이 들지만, 안전성을 확보하는 것은 런타임에서 이루어져야 한다는 주장이 제기됩니다.
이러한 상황에서 Fil-C는 C 및 C++를 재컴파일하면서 런타임 검사, 동시 가비지 컬렉터, 그리고 메모리 안전성을 제공하여 메모리 안전 위반이 익스플로잇이 되는 대신 패닉으로 처리되도록 합니다. 필자는 Rust가 Fil-C의 ABI를 이해하는 FFI를 통해 이 안전성을 활용할 것을 제안하며, Rust를 빠른 경로로, 기존 C를 안전한 경로로, 그리고 마이그레이션할 성능상의 이유를 제시하고자 합니다.
이러한 목표를 달성하기 위해 Fil-C는 C와 ABI 호환성은 없지만 소스 호환성을 가지며, 기존 C와의 상호 운용성을 목표로 하지 않습니다. 이미 Nix의 filnix는 Fil-C를 크로스 컴파일 플랫폼으로 활용하여 종속성 그래프를 재구축하는 도구를 제공하고 있으며, Zig 역시 Fil-C에서 영감을 받은 ABI를 탐색하고 있습니다. 이러한 프로젝트들은 Rust와 C 생태계 간의 협업을 통해 메모리 안전성과 성능을 동시에 확보하는 방법을 모색하고 있습니다.
이러한 상황에서 Fil-C는 C 및 C++를 재컴파일하면서 런타임 검사, 동시 가비지 컬렉터, 그리고 메모리 안전성을 제공하여 메모리 안전 위반이 익스플로잇이 되는 대신 패닉으로 처리되도록 합니다. 필자는 Rust가 Fil-C의 ABI를 이해하는 FFI를 통해 이 안전성을 활용할 것을 제안하며, Rust를 빠른 경로로, 기존 C를 안전한 경로로, 그리고 마이그레이션할 성능상의 이유를 제시하고자 합니다.
이러한 목표를 달성하기 위해 Fil-C는 C와 ABI 호환성은 없지만 소스 호환성을 가지며, 기존 C와의 상호 운용성을 목표로 하지 않습니다. 이미 Nix의 filnix는 Fil-C를 크로스 컴파일 플랫폼으로 활용하여 종속성 그래프를 재구축하는 도구를 제공하고 있으며, Zig 역시 Fil-C에서 영감을 받은 ABI를 탐색하고 있습니다. 이러한 프로젝트들은 Rust와 C 생태계 간의 협업을 통해 메모리 안전성과 성능을 동시에 확보하는 방법을 모색하고 있습니다.