Linux에서 Rust 드라이버 지원을 위한 세 번째 버전의 패치가 이미 릴리스되었습니다.

두 번째 버전 발행 후 XNUMX개월, 미구엘 오제다, Rust-for-Linux 프로젝트의 저자, 세 번째 옵션의 제안을 알렸습니다. Linux 커널의 Rust 언어로 된 장치 드라이버 개발을 위해.

Rust 지원은 실험적인 것으로 간주되지만 linux-next 분기에 포함하는 것은 이미 동의했습니다. 이 개발은 Google과 Let's Encrypt 프로젝트의 설립자인 ISRG(Internet Security Research Group) 조직에서 자금을 지원하고 HTTPS의 홍보와 인터넷 보안을 개선하는 기술 개발에 기여합니다.

제안된 변경 사항으로 인해 Rust가 커널 드라이버와 모듈을 개발하기 위한 두 번째 언어로 사용될 수 있음을 기억해야 합니다.

Linux의 Rust 드라이버
관련 기사 :
Linux에서 Rust 드라이버 지원을위한 두 번째 버전의 패치가 이미 출시되었습니다.

Rust 지원은 기본적으로 활성화되지 않은 옵션으로 광고됩니다. 필요한 기본 빌드 종속성에 Rust가 포함되지 않습니다. 드라이버 개발에 Rust를 사용하면 해제된 메모리 영역에 액세스하고 null 포인터를 역참조하고 버퍼 제한을 초과하는 번거로움 없이 최소한의 노력으로 더 좋고 더 안전한 드라이버를 만들 수 있습니다.

새 버전의 패치는 패치의 첫 번째 및 두 번째 버전에 대한 토론과 우리가 찾을 수 있는 가장 주목할만한 변경 사항에 대해 논의하는 동안 계속해서 의견을 제거합니다.

Rust 1.57 안정 버전으로 전환 참조 컴파일러로서 Rust 2021 언어의 안정화 버전에 대한 바인딩이 확보되었습니다. Rust 2021 p 사양으로 전환이러한 불안정한 기능을 사용하지 않도록 작업을 시작할 수 있습니다. const_fn_transmute, const_panic, const_unreachable_unchecked 및 core_panic 및 try_reserve와 같은 패치에서.

또한 alloc 버전의 개발은 계속되었습니다 Rust 라이브러리의 새 버전에서 기능을 비활성화하기 위해 "no_rc" 및 "no_sync" 옵션이 구현됩니다. 이것은 커널용 Rust 코드에서 사용되지 않으므로 라이브러리를 더 모듈화합니다. 우리는 메인 라이브러리에 필요한 커널 변경 사항을 가져오기 위해 메인 할당 개발자들과 계속 협력하고 있습니다. 라이브러리가 커널 수준에서 작동하는 데 필요한 "no_fp_fmt_parse" 옵션이 Rust의 기본 라이브러리(커널)로 이동되었습니다.

가능한 컴파일러 경고를 제거하기 위해 코드를 정리했습니다. CONFIG_WERROR 모드에서 커널을 컴파일할 때. Rust에서 코드를 만들 때 추가 진단 컴파일러 모드와 Clippy linter 경고가 포함됩니다.

그들은 제안했다 seqlocks를 사용하는 추상화 (시퀀스 잠금), 전원 관리를 위한 콜백 호출, 메모리 I/O(readX/writeX), 인터럽트 및 스레드 핸들러, GPIO, 장치 액세스, 드라이버 및 녹 코드의 자격 증명.

드라이버 개발 도구가 확장되었습니다. 재배치 가능한 뮤텍스, 비트 반복기, 포인터에 대한 단순화된 바인딩, 향상된 오류 진단 및 데이터 버스 독립 인프라를 사용합니다.

Ref 유형을 사용하여 링크 작업이 개선되었습니다. 참조를 계산하기 위해 동일한 이름의 중앙 API를 사용하는 refcount_t 백엔드를 기반으로 단순화되었습니다. 표준 매핑 라이브러리에서 제공되는 Arc 및 Rc 유형에 대한 지원이 제거되었으며 커널 수준에서 실행되는 코드에서 사용할 수 없습니다(라이브러리 자체의 경우 이러한 유형을 비활성화하는 옵션이 준비되어 있음).

Rust로 재작성된 PL061 GPIO 드라이버 버전이 패치에 추가되었습니다. 드라이버의 특징은 거의 라인 단위 구현이 기존 C GPIO 드라이버를 반복한다는 것입니다. Rust의 빌딩 컨트롤러에 익숙해지려는 개발자를 위해 라인별 비교가 준비되어 있어 Rust의 어떤 빌드가 C 코드가 되었는지에 대한 통찰력을 제공합니다.

Rust의 주요 코드베이스는 libgccjit 라이브러리를 사용하여 AOT 컴파일을 구현하는 GCC용 rustc 백엔드인 rustc_codegen_gcc를 채택하고 있습니다. 백엔드가 적절하게 개발되면 GCC를 사용하여 커널과 관련된 Rust 코드를 수집할 수 있습니다.
ARM, Google 및 Microsoft 외에도 Red Hat은 Linux 커널에서 Rust를 사용하는 데 관심을 표명했습니다.

마지막으로, 그것에 대해 더 알고 싶다면 자세한 내용을 참조하십시오. 다음 링크에서.


코멘트를 남겨주세요

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

*

*

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