3P by neo 4달전 | favorite | 댓글 1개
  • C를 Rust로 번역하기 (TRACTOR)

    • Dr. Dan Wallach
    • 20년 넘게 C와 C++의 메모리 안전성 문제를 해결하려는 노력 끝에, 소프트웨어 엔지니어링 커뮤니티는 결론에 도달함
    • 버그 찾기 도구에 의존하는 것만으로는 충분하지 않음
    • 컴파일 시점에서 안전하지 않은 프로그램을 거부할 수 있는 "안전한" 프로그래밍 언어를 사용하는 것이 선호됨
    • TRACTOR 프로그램은 기존 C 코드를 Rust로 자동 번역하는 것을 목표로 함
    • 숙련된 Rust 개발자가 작성한 것과 동일한 품질과 스타일을 달성하여 C 프로그램에서 발생하는 메모리 안전성 보안 취약점을 제거하는 것이 목표임
    • 이 프로그램은 정적 분석, 동적 분석, 대형 언어 모델과 같은 기계 학습 기술의 새로운 조합을 포함할 수 있음
    • 추가 정보는 SAM.Gov의 TRACTOR Special Notice에서 확인 가능함
  • DARPA의 주요 성과

    • 스텔스 혁명

      • DARPA의 스텔스 기술 연구 초기, F-117A의 프로토타입인 Have Blue가 1977년에 처음으로 성공적으로 비행함
      • F-117A 프로그램의 성공은 스텔스 혁명의 시작을 알렸으며, 이는 국가 안보에 엄청난 이익을 가져옴
    • 손바닥 안의 내비게이션

      • 초기 GPS 수신기는 크고 무거운 장치였음
      • 1983년, DARPA는 이를 소형화하기 위해 노력하여 GPS 기능의 훨씬 더 넓은 채택을 이끌어냄
    • 현대 인터넷의 길을 닦다

      • ARPA 연구는 정보 혁명을 시작하는 데 중요한 역할을 함
      • ARPANET의 개념적 기초를 개발하고, 디지털 프로토콜을 발명하여 인터넷의 탄생을 이끌었음
  • GN⁺의 정리

    • TRACTOR 프로그램은 기존 C 코드를 Rust로 자동 번역하여 메모리 안전성 문제를 해결하려는 중요한 시도임
    • DARPA의 연구는 스텔스 기술, GPS 소형화, 인터넷의 탄생 등 현대 기술 발전에 큰 기여를 함
    • 이 기사는 소프트웨어 엔지니어와 기술 역사에 관심 있는 사람들에게 유익할 수 있음
    • 유사한 기능을 가진 프로젝트로는 Microsoft의 Checked C와 Google's Carbon 언어가 있음
Hacker News 의견
  • 숙련된 프로그래머가 작성한 Rust는 C와 매우 다르며, 대부분의 흥미로운 코드는 C++로 작성됨

    • C 프로그램의 모든 할당 수명을 정적으로 결정하는 것은 매우 어려운 문제임
    • C/C++ 프로그램은 사용자 클릭과 같은 이벤트에 할당 수명을 연결할 수 있음
    • 분석하려는 프로그램이 버그가 있는 경우 수명이 의미가 없을 수 있음
    • 기존 연구는 분석 대상 코드가 올바르다고 가정함
  • 이 제안이 공개된 것이 흥미로움

    • 자동 번역의 실현 가능성에 대해 기대를 조절하려고 노력함
    • C 소스 코드에는 Rust 소스 코드보다 정보가 적음
    • 누락된 정보를 생성하는 것은 불가능함
    • 올바르게 추론하려면 판단이 필요하며, 이는 오류가 발생할 수 있음
    • 프로젝트가 어느 정도 성공할 수 있지만 신중하게 접근해야 함
    • 정부의 프로젝트가 C에 대한 전면적인 비난이나 Rust에 대한 전면적인 찬양으로 해석되지 않기를 바람
  • "Rust로 세계를 다시 작성하자"는 사고방식을 좋아하지 않음

    • 프로젝트를 새로운 언어나 플랫폼으로 포팅하려면 기계적 번역은 좋지 않음
    • 더 나은 아키텍처를 계획하고 소프트웨어 시스템을 설계하는 데 시간을 투자해야 함
    • Rust를 사용하기로 결정했다면 Rust로 작성해야 함
    • C를 현대적인 C로 업데이트하고 모델 체커를 사용하여 메모리, 리소스, 정수 수학 안전성을 검증하는 것이 더 나음
  • 많은 사람들이 이 프로젝트를 C와 C++ 코드를 Rust로 번역하라는 요구로 읽고 있음

    • C와 C++는 기본적으로 안전하지 않음
    • 가능한 한 많은 코드를 안전한 언어로 번역하거나 작성해야 함
    • 기존 C 코드를 Rust로 번역하는 소프트웨어를 지원하고 있음
    • Rust로 세계를 다시 작성하자는 합의가 아니라 안전한 언어로의 마이그레이션을 목표로 함
  • 번역된 코드베이스를 유지하는 데 문제가 있음

    • C로 작성된 코드베이스와 이를 유지할 수 있는 C 엔지니어 팀이 필요함
    • 자동 번역된 Rust 코드베이스는 원본보다 읽기 어렵고 이해하기 어려울 수 있음
    • Rust 엔지니어 팀이 필요함
    • Rust 엔지니어가 이미 있다면 수동으로 코드를 다시 작성하는 것이 더 나음
  • 자동으로 포팅하는 프로그램이 C 코드를 안전하게 만들 수 있는 모든 기능을 포함해야 함

    • Rust에는 메모리 버그가 없고 C를 자동으로 번역할 수 있다면 모든 메모리 버그를 자동으로 수정할 수 있음
    • 이는 일반적으로 불가능함
  • Mozilla에서 해고된 유능한 엔지니어를 먼저 고용하여 언어 자체를 계속 작업하게 하는 것이 좋음

    • 비동기 처리가 아직 완전히 완료되지 않음
    • 여러 가지 문제점이 있음
  • DARPA가 이 문제를 추진하는 것이 좋음

    • 안전한 Rust로 번역하는 것은 매우 어려움
    • 현재 C에서 Rust로 번역하는 도구가 있지만 결과는 유지 관리가 어려움
    • 올바르게 수행하려면 배열 크기와 비선형 포인터 사용 문제를 해결해야 함