▲GN⁺ 2024-12-22 | parent | ★ favorite | on: C를 안전한 Rust로 컴파일하는 공식화된 방법(arxiv.org)Hacker News 의견 Rust로 프로젝트를 포팅하면서 몇 가지 결론을 얻음 C 프로그램을 Rust로 변환하면 Rust의 엄격한 제약 덕분에 버그를 빠르게 발견할 수 있음 C에서 Rust로의 자동 변환은 완전히 해결되지 않을 문제로, 두 언어의 설계가 근본적으로 다르기 때문임 일부 경우에는 C에서 Rust로의 포팅이 불가능할 수 있으며, 이는 설계 자체에 내재된 불안전성 때문임 도구의 발전이 포팅 과정을 더 원활하게 만들 것임 기존의 형식적으로 검증된 C 코드베이스와 일반적인 시스템 C 코드베이스는 다름 2002년에 연구자들이 Cyclone이라는 안전한 C 방언에 대한 논문을 발표했으며, C에서 Cyclone으로 코드를 포팅하면서 안전성 버그를 발견함 이러한 수동 또는 자동 변환은 안전한 언어의 채택을 증가시키고 기존 버그를 발견할 가능성이 있음 Rust로의 단순한 번역은 안전한 부분과 불안전한 부분을 생성할 수 있으며, 수동 작업은 불안전한 영역의 안전성을 검증하는 것에 집중할 수 있음 불안전한 부분이 크더라도 이점이 있을 수 있음 C의 작은 부분을 컴파일하는 접근 방식에 대한 기대가 낮음 Rust의 소유권 모델이 실제 C 프로그램과 너무 다르기 때문임 Zig의 C 변환 기능과 비교에 대한 궁금증 Zig는 새로운 코드와 기존 C 코드의 혼합 환경을 잘 생성하며, C 컴파일러로도 사용 가능함 Linux 커널 유지보수자들이 Zig를 C의 대체로 고려하지 않는 이유에 대한 궁금증 C2Rust가 형식적으로 올바른 코드를 생성할 수 있는지에 대한 질문 Rust 코드를 생성하는 소스 코드에 대한 링크가 보이지 않음 C 라이브러리가 작동한다면 Rust의 불안전성을 사용해 번역하는 것이 가치가 있을 수 있음 Rust는 일반적으로 라이브러리가 부족함 높은 최적화 수준이 Rust의 속도를 크게 향상시키지 못한 점이 흥미로움 O3 최적화 수준에서 C를 Rust로 한 번에 컴파일하는 것이 얼마나 잘 작동할지에 대한 궁금증
Hacker News 의견
Rust로 프로젝트를 포팅하면서 몇 가지 결론을 얻음
기존의 형식적으로 검증된 C 코드베이스와 일반적인 시스템 C 코드베이스는 다름
2002년에 연구자들이 Cyclone이라는 안전한 C 방언에 대한 논문을 발표했으며, C에서 Cyclone으로 코드를 포팅하면서 안전성 버그를 발견함
Rust로의 단순한 번역은 안전한 부분과 불안전한 부분을 생성할 수 있으며, 수동 작업은 불안전한 영역의 안전성을 검증하는 것에 집중할 수 있음
C의 작은 부분을 컴파일하는 접근 방식에 대한 기대가 낮음
Zig의 C 변환 기능과 비교에 대한 궁금증
C2Rust가 형식적으로 올바른 코드를 생성할 수 있는지에 대한 질문C 라이브러리가 작동한다면 Rust의 불안전성을 사용해 번역하는 것이 가치가 있을 수 있음
높은 최적화 수준이 Rust의 속도를 크게 향상시키지 못한 점이 흥미로움