Linux에서 Rust 드라이버 지원을 위한 패치의 XNUMX번째 버전이 도착합니다.

미구엘 오제다, Rust-for-Linux 프로젝트의 저자 여덟 번째 출시 Linux 커널 개발자가 고려해야 할 Rust 언어 지원으로 Linux 커널 패치를 개발하는 방법.

이것은 패치의 XNUMX번째 릴리스로 순위가 매겨집니다(버전 번호가 없는 첫 번째 릴리스 버전 고려).. Rust 지원은 실험적인 것으로 간주되며, 그러나 이것은 5.20/6.0의 가을 릴리스에 통합을 주장하는 linux-next 분기에 이미 포함되어 있으며 커널 하위 시스템 위에 추상화 계층을 만들고 컨트롤러와 모듈을 작성하는 작업을 시작할 수 있을 만큼 충분히 발전했습니다.

개발은 Google과 ISRG에서 자금을 지원합니다. (Internet Security Research Group)은 Let's Encrypt 프로젝트의 창시자이며 인터넷 보안을 강화하기 위한 HTTPS 및 기술 개발을 촉진합니다.

제안된 변경 사항으로 인해 Rust를 드라이버 및 커널 모듈 개발을 위한 두 번째 언어로 사용할 수 있습니다. Rust 지원은 기본적으로 활성화되지 않은 옵션으로 제공되며 Rust가 커널에 필요한 빌드 종속성에 포함되지 않습니다. Rust를 사용하여 드라이버를 개발하면 메모리 영역을 해제한 후 액세스하거나 null 포인터를 역참조하거나 버퍼 오버플로와 같은 문제 없이 최소한의 노력으로 더 좋고 안전한 드라이버를 만들 수 있습니다.

메모리 안전은 참조를 확인하고, 객체 소유권 및 객체 수명(범위)을 추적하고, 코드를 실행하는 동안 메모리 액세스의 정확성을 평가함으로써 컴파일 타임에 제공됩니다.

이번 XNUMX번째 릴리스의 새로운 기능은 무엇입니까?

발표된 이 새로운 제안서에는 다음과 같이 언급되어 있습니다. alloc 라이브러리 변형, 오류에 대한 "패닉" 상태의 가능한 생성을 제거했습니다. Rust 버전 1.62로 업데이트되었습니다. 이전 버전과 비교하여 Rust 툴킷은 커널 패치에서 사용되는 const_fn_trait_bound 기능에 대한 지원을 안정화했습니다.

게다가 바인딩 코드는 "바인딩" 상자 묶음으로 분리됩니다. 메인 커널 패키지만 변경되면 쉽게 다시 빌드할 수 있습니다.

그만큼 "concat_idents!" 매크로 구현, concat_idents 기능에 연결되지 않고 로컬 변수 참조를 사용할 수 있도록 하는 절차적 매크로로 다시 작성되었습니다.

또한 매크로는 다음과 같이 언급됩니다. "정적 주장!" "core::assert!()"를 허용하도록 다시 작성되었습니다. 매크로 "construction_error!" 모듈에 대해 "RUST_BUILD_ASSERT_{WARN,ALLOW}" 모드를 설정할 때 작동하도록 조정되었습니다.

fs 모듈 추가됨 파일 시스템 작업을 위한 링크를 제공합니다. Rust로 작성된 간단한 파일 시스템의 예와 시스템 큐와 함께 작동하도록 추가된 작업 큐 모듈이 제안됩니다.

다른 변경 사항 중 이 새로운 제안에서 눈에 띄는 것은:

  • 별도의 구성 파일 "kernel/configs/rust.config"를 추가했습니다.
  • 매크로 대체에서 처리된 "*.i" 파일은 "*.rsi"로 이름이 변경되었습니다.
  • C 코드에 사용되는 것과 다른 최적화 수준으로 Rust 구성 요소를 빌드하는 지원을 제거했습니다.
  • kasync 모듈의 개발은 비동기 프로그래밍 방식(async)의 구현으로 계속되었습니다.
  • Rust로 작성된 커널 레벨 TCP 서버의 예를 추가하고 Rust에서 인터럽트를 처리하는 기능을 추가했습니다.
  • file_operations 구조와 같은 함수 포인터 테이블로 더 쉽게 작업할 수 있도록 프로시저 매크로를 추가했습니다.
  • 양방향 연결 목록 구현 "unsafe_list::List"를 추가했습니다.
  • 읽기 잠금이 현재 스레드에 바인딩되어 있는지 확인하기 위해 RCU 및 Guard 유형에 대한 초기 지원이 추가되었습니다.
  • 커널 스레드를 자동으로 생성하고 시작하는 Task::spawn() 함수를 추가했습니다.
  • Task::wake_up() 메서드도 추가되었습니다.
  • 지연 모듈 추가

최종적으로 그것에 대해 더 많이 알고 싶다면, 당신은 세부 사항을 확인할 수 있습니다 다음 링크에서.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.