Linux에서 Rust 드라이버 지원을 위한 일곱 번째 버전의 패치가 게시되었습니다.

몇일 전에, 미구엘 오제다, 이러한 제안의 개발 및 제출을 책임지고 Rust-for-Linu 프로젝트의 작성자x는 일곱 번째 구성 요소 제안을 발표했습니다. 디바이스 드라이버 개발용 Linux 커널 개발자가 고려해야 합니다.

이것은 패치의 일곱 번째 판입니다. Rust 지원도 실험적인 것으로 간주되지만 이미 linux-next 분기에 포함되어 있으며 커널 하위 시스템에 대한 추상화 계층을 만들고 컨트롤러와 모듈을 작성하는 작업을 시작할 만큼 충분히 성숙했습니다. 이 개발은 Google과 Let's Encrypt 프로젝트의 창시자인 ISRG(Internet Security Research Group)가 자금을 지원하고 HTTPS와 인터넷 보안을 향상시키는 기술 개발을 촉진합니다.

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

일곱 번째 제안의 주요 참신

이 새로운 제안은 다음을 강조합니다. 툴킷 및 alloc 라이브러리의 변형, 오류에 대한 "패닉" 상태의 가능한 생성을 제거했습니다. 버전 Rust 1.60으로 업데이트됨 따라서 커널 패치에서 사용되는 "may_uninit_extra" 모드에 대한 지원이 안정화됩니다.

이 외에도 주의할 점은 문서에서 테스트를 실행하는 기능 추가 (문서에서 예제로 동시에 사용되는 테스트), 커널 API에 바인딩된 컴파일 타임 테스트를 커널 부팅 시 실행되는 KUnit 테스트로 변환합니다. 핵심 Rust 코드와 마찬가지로 Clippy linter 경고를 생성하지 않도록 테스트가 필요합니다.

그 위에 네트워크 기능이 있는 «net» 모듈의 초기 구현 제안. Rust 코드는 "Namespace"("struct net" 커널 구조 기반), SkBuff(struct sk_buff), TcpListener, TcpStream(struct socket), Ipv4Addr(struct in_addr), SocketAddrV4(struct sockaddr_in)와 같은 커널 네트워크 구조에 대한 액세스를 제공합니다. IPv6 등가물.

뒷머리 Rustc_codegen_gcc, Rustc 컴파일러를 시작하는 기능을 구현했습니다.. 컴파일러 커미셔닝은 GCC 기반 코드 생성기를 사용하여 Rustc 컴파일러를 구축하는 Rustc의 능력을 말합니다.

또한 GCC 12.1의 최근 릴리스에는 Rustc_codegen_gcc가 제대로 작동하는 데 필요한 libgccjit에 대한 수정 사항이 포함되어 있습니다. Rustup 유틸리티를 사용하여 rustc_codegen_gcc를 설치할 수 있는 기능을 제공하기 위한 준비가 진행 중입니다.

눈에 띄는 다른 변화 이 새 버전 :

  • kasync 모듈의 형태로 구현된 비동기 프로그래밍 방법(async)에 대한 초기 지원 구현.
  • 네트워크 패킷 필터를 조작하기 위해 net::filter 모듈을 추가했습니다. Rust 언어로 필터 구현과 함께 예제 rust_netfilter.rs를 추가했습니다.
  • 고정이 필요하지 않은 간단한 mutex smutex::Mutex 구현이 추가되었습니다.
  • 해제되기를 절대 기다리지 않는 NoWaitLock 잠금을 추가했으며, 다른 스레드가 이 잠금을 점유하면 호출자를 중지하는 대신 잠금 획득을 시도하는 데 실패합니다.
  • 유휴 상태가 될 수 없는 섹션에 적용되는 커널에서 raw_spinlock_t로 식별되는 RawSpinLock 잠금을 추가했습니다.
  • 참조 카운팅 메커니즘이 적용되는 객체 참조에 대한 ARef 유형이 추가되었습니다(항상 반박됨).
  • GCC를 기반으로 하는 Rust 언어 컴파일러의 구현으로 GCC의 gccrs 프론트엔드 개발이 진행되고 있습니다. 현재 gccrs에서 작업하는 두 명의 정규 개발자가 있습니다.

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


코멘트를 남겨주세요

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

*

*

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