Telegram Group & Telegram Channel
πŸ‘£ ΠšΡ€ΠΈΠ·ΠΈΡ Π² ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Rust Π² ядро ΠΈΠ·-Π·Π° опасСний услоТнСния сопровоТдСния

ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ Π₯Π΅Π»Π²ΠΈΠ³ (Christoph Hellwig), мэйнтСйнСр подсистСм DMA, KVM, Slab Allocator ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ PowerPC Π² ядрС Linux, Π² своё врСмя Π²Ρ…ΠΎΠ΄ΠΈΠ²ΡˆΠΈΠΉ Π² ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ тСхничСский ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Linux Foundation ΠΈ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Π²ΡˆΠΈΠΉ истцом Π² связанном с GPL судСбном Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π΅ с VMware, отказался ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡ΠΈ, связанныС с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° языкС Rust. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‡ΠΈ добавляли обвязки Π½Π°Π΄ нСсколькими функциями подсистСмы DMA, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DMA Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… Π½Π° языкС Rust.

Π’ качСствС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΎΡ‚ΠΊΠ°Π·Π° упомянуто услоТнСниС сопровоТдСния ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ обвязок Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ интСрфСйсы ΠΊ DMA Π² Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅ Π½Π° языкС Π‘ΠΈ, Π±Π΅Π· размазывания ΠΏΠΎ нСпонятным обвязкам. ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ исходному Π‘ΠΈ API DMA Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Π½Π° языкС Rust, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… абстракций, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ядра.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΡƒΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΠΎΠ·ΡŒΠΌΡƒΡ‚ Π½Π° сСбя всю Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° Π½Π° Rust, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ эти ΠΏΠ°Ρ‚Ρ‡ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ вынСсли обвязки Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (rust/kernel/dma.rs).

Π’ ΠΎΡ‚Π²Π΅Ρ‚ ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ Π½Π°Π»ΠΎΠΆΠΈΠ» Π²Π΅Ρ‚ΠΎ ("Nacked-by") Π½Π° ΠΏΡ€ΠΈΡ‘ΠΌ связанных с Rust ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΈ ΡƒΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ. ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ заявил, Ρ‡Ρ‚ΠΎ Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ обвязок хотят Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ нСвозмоТности сопровоТдСния Linux ΠΈΠ·-Π·Π° смСшивания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языков Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, ΠΈΠΌ слСдуСт Π΄Π΅Π»Π°Ρ‚ΡŒ это Π² своём Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅, Π° Π½Π΅ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ эту Ρ€Π°ΠΊΠΎΠ²ΡƒΡŽ ΠΎΠΏΡƒΡ…ΠΎΠ»ΡŒ Π½Π° основныС подсистСмы ядра.

ΠŸΡ€ΠΈ этом ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΠ», Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ² языка Rust ΠΈ считаСт Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… языков, Π½ΠΎ ΠΎΠ½ ΠΏΡ€ΠΎΡ‚ΠΈΠ² смСшивания ΠΊΠΎΠ΄Π° Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках. По словам ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π° ΠΎΠ½ Π·Π° созданиС Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Rust, Π½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΏΡ€ΠΈΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΡ Rust ΠΊ большим ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ Π±Π°Π·Π°ΠΌ Π½Π° Π‘ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ΅ смСшиваниС сильно сниТаСт удобство сопровоТдСния ядра, ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π‘ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с сопровоТдСниСм Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Rust-обвязки ставят ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΠΊΠΎΠ΄Π° Π½Π° языкС Rust. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд каТСтся, Ρ‡Ρ‚ΠΎ обвязки лишь надстройки Π½Π°Π΄ Π‘ΠΈ-структурами ΠΈ функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ сопровоТдСниС ΠΊΠΎΠ΄Π° Π½Π° Π‘ΠΈ. Но это Π½Π΅ Ρ‚Π°ΠΊ.

ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… обвязок Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ подсистСм, написанных Π½Π° Π‘ΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ влияниС ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ работоспособности обвязок. Π›ΡŽΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° Π‘ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСобходимости измСнСния ΠΊΠΎΠ΄Π° обвязок, поэтому Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° обвязки измСнСния Π² Π‘ΠΈ ΠΊΠΎΠ΄Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Rust. МногиС ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π±Ρ€Π°Ρ‚ΡŒ Π½Π° сСбя Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° исправлСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… Π² ΠΊΠΎΠ΄Π΅ Π½Π° Rust, ΠΈ Π½Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ своё врСмя Π½Π° отслСТиваниС состояния Rust-обвязок.

Битуация с услоТнСниСм сопровоТдСния Π½Π΅ ΡƒΠΌΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ. К дискуссии ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ ДТСйсон Π“Π°Π½Ρ‚ΠΎΡ€ΠΏ (Jason Gunthorpe), мэйнтСйнСр TPM, VFIO ΠΈ Infiniband ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ NVIDIA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Ρ‘Π» ΠΏΡ€ΠΈΠΌΠ΅Ρ€ отклонСния Линусом Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄ΡΠΎΠΌ pull-запроса с измСнСниями Π² подсистСмС управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ сбою ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ сборки ядра с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Rust. Π‘Π±ΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄ Π½Π° Rust Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ обвязок (bindgen). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ подсистСму управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ измСнСния, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠΎΠ΄Π° Π½Π° Π‘ΠΈ ΠΈ ядра Π² Ρ†Π΅Π»ΠΎΠΌ, оказались зависимы ΠΎΡ‚ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ стороннСго ΠΊΠΎΠ΄Π° Π² ядрС, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди.

ΠžΡ‚ΠΊΠ°Π· ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ обвязки Π½Π°Π΄ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ DMA поставил Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rust for Linux Π² Ρ‚ΡƒΠΏΠΈΠΊ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π±Π΅Π· ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… обвязок Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° языкС Rust Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½Π°. Π“Π΅ΠΊΡ‚ΠΎΡ€ ΠœΠ°Ρ€Ρ‚ΠΈΠ½ (Hector Martin), мэйнтСйнСр ΠΊΠΎΠ΄Π° для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈ ARM-Ρ‡ΠΈΠΏΠΎΠ² Apple ΠΈ Π»ΠΈΠ΄Π΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Asahi Linux, Π² качСствС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ принятия обвязки Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· Линуса Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄ΡΠ°, Π² ΠΎΠ±Ρ…ΠΎΠ΄ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ подсистСму DMA.
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/rust_code/878
Create:
Last Update:

πŸ‘£ ΠšΡ€ΠΈΠ·ΠΈΡ Π² ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Rust Π² ядро ΠΈΠ·-Π·Π° опасСний услоТнСния сопровоТдСния

ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ Π₯Π΅Π»Π²ΠΈΠ³ (Christoph Hellwig), мэйнтСйнСр подсистСм DMA, KVM, Slab Allocator ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ PowerPC Π² ядрС Linux, Π² своё врСмя Π²Ρ…ΠΎΠ΄ΠΈΠ²ΡˆΠΈΠΉ Π² ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ тСхничСский ΠΊΠΎΠΌΠΈΡ‚Π΅Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Linux Foundation ΠΈ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Π²ΡˆΠΈΠΉ истцом Π² связанном с GPL судСбном Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²Π΅ с VMware, отказался ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ‚Ρ‡ΠΈ, связанныС с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° языкС Rust. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‡ΠΈ добавляли обвязки Π½Π°Π΄ нСсколькими функциями подсистСмы DMA, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DMA Π² Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π°Ρ… Π½Π° языкС Rust.

Π’ качСствС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΎΡ‚ΠΊΠ°Π·Π° упомянуто услоТнСниС сопровоТдСния ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ обвязок Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ интСрфСйсы ΠΊ DMA Π² Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²ΠΈΠ΄Π΅ Π½Π° языкС Π‘ΠΈ, Π±Π΅Π· размазывания ΠΏΠΎ нСпонятным обвязкам. ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ исходному Π‘ΠΈ API DMA Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅ Π½Π° языкС Rust, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… абстракций, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ядра.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΡƒΠΊΠ°Π·Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΠΎΠ·ΡŒΠΌΡƒΡ‚ Π½Π° сСбя всю Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ ΠΊΠΎΠ΄Π° Π½Π° Rust, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°Ρ‚ΡŒ эти ΠΏΠ°Ρ‚Ρ‡ΠΈ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈ вынСсли обвязки Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (rust/kernel/dma.rs).

Π’ ΠΎΡ‚Π²Π΅Ρ‚ ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ Π½Π°Π»ΠΎΠΆΠΈΠ» Π²Π΅Ρ‚ΠΎ ("Nacked-by") Π½Π° ΠΏΡ€ΠΈΡ‘ΠΌ связанных с Rust ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ ΠΈ ΡƒΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π½Π΅ Π½ΡƒΠΆΠ΅Π½ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ. ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ заявил, Ρ‡Ρ‚ΠΎ Ссли Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ обвязок хотят Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ нСвозмоТности сопровоТдСния Linux ΠΈΠ·-Π·Π° смСшивания Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… языков Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, ΠΈΠΌ слСдуСт Π΄Π΅Π»Π°Ρ‚ΡŒ это Π² своём Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π΅, Π° Π½Π΅ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ эту Ρ€Π°ΠΊΠΎΠ²ΡƒΡŽ ΠΎΠΏΡƒΡ…ΠΎΠ»ΡŒ Π½Π° основныС подсистСмы ядра.

ΠŸΡ€ΠΈ этом ΠšΡ€ΠΈΡΡ‚ΠΎΡ„ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΠ», Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ² языка Rust ΠΈ считаСт Π΅Π³ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… Π½ΠΎΠ²Ρ‹Ρ… языков, Π½ΠΎ ΠΎΠ½ ΠΏΡ€ΠΎΡ‚ΠΈΠ² смСшивания ΠΊΠΎΠ΄Π° Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках. По словам ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π° ΠΎΠ½ Π·Π° созданиС Π½ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° Rust, Π½ΠΎ ΠΏΡ€ΠΎΡ‚ΠΈΠ² ΠΏΡ€ΠΈΠΌΠ΅ΡˆΠΈΠ²Π°Π½ΠΈΡ Rust ΠΊ большим ΠΊΠΎΠ΄ΠΎΠ²Ρ‹ΠΌ Π±Π°Π·Π°ΠΌ Π½Π° Π‘ΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ΅ смСшиваниС сильно сниТаСт удобство сопровоТдСния ядра, ΠΊΠ°ΠΊ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.

Π‘ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с сопровоТдСниСм Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Rust-обвязки ставят ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ ΠΊΠΎΠ΄Π° Π½Π° языкС Rust. На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд каТСтся, Ρ‡Ρ‚ΠΎ обвязки лишь надстройки Π½Π°Π΄ Π‘ΠΈ-структурами ΠΈ функциями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ сопровоТдСниС ΠΊΠΎΠ΄Π° Π½Π° Π‘ΠΈ. Но это Π½Π΅ Ρ‚Π°ΠΊ.

ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… обвязок Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ подсистСм, написанных Π½Π° Π‘ΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ влияниС ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π½Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ работоспособности обвязок. Π›ΡŽΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ структур Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° Π‘ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСобходимости измСнСния ΠΊΠΎΠ΄Π° обвязок, поэтому Π²Π»ΠΈΡΡŽΡ‰ΠΈΠ΅ Π½Π° обвязки измСнСния Π² Π‘ΠΈ ΠΊΠΎΠ΄Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Rust. МногиС ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ Π½Π΅ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ Π±Ρ€Π°Ρ‚ΡŒ Π½Π° сСбя Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° исправлСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… Π² ΠΊΠΎΠ΄Π΅ Π½Π° Rust, ΠΈ Π½Π΅ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ своё врСмя Π½Π° отслСТиваниС состояния Rust-обвязок.

Битуация с услоТнСниСм сопровоТдСния Π½Π΅ ΡƒΠΌΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ. К дискуссии ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠ»ΡΡ ДТСйсон Π“Π°Π½Ρ‚ΠΎΡ€ΠΏ (Jason Gunthorpe), мэйнтСйнСр TPM, VFIO ΠΈ Infiniband ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ NVIDIA, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Ρ‘Π» ΠΏΡ€ΠΈΠΌΠ΅Ρ€ отклонСния Линусом Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄ΡΠΎΠΌ pull-запроса с измСнСниями Π² подсистСмС управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ сбою ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ сборки ядра с Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Rust. Π‘Π±ΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊ ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠ΄ Π½Π° Rust Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния Π² Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ обвязок (bindgen). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ подсистСму управлСния ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ измСнСния, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΊΠΎΠ΄Π° Π½Π° Π‘ΠΈ ΠΈ ядра Π² Ρ†Π΅Π»ΠΎΠΌ, оказались зависимы ΠΎΡ‚ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ стороннСго ΠΊΠΎΠ΄Π° Π² ядрС, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ люди.

ΠžΡ‚ΠΊΠ°Π· ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ обвязки Π½Π°Π΄ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ DMA поставил Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Rust for Linux Π² Ρ‚ΡƒΠΏΠΈΠΊ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π±Π΅Π· ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… обвязок Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½Ρ‹Ρ… Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° языкС Rust Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π½Π°. Π“Π΅ΠΊΡ‚ΠΎΡ€ ΠœΠ°Ρ€Ρ‚ΠΈΠ½ (Hector Martin), мэйнтСйнСр ΠΊΠΎΠ΄Π° для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈ ARM-Ρ‡ΠΈΠΏΠΎΠ² Apple ΠΈ Π»ΠΈΠ΄Π΅Ρ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Asahi Linux, Π² качСствС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ принятия обвязки Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· Линуса Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄ΡΠ°, Π² ΠΎΠ±Ρ…ΠΎΠ΄ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ подсистСму DMA.

BY Rust


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/rust_code/878

View MORE
Open in Telegram


Rust Telegram | DID YOU KNOW?

Date: |

Can I mute a Telegram group?

In recent times, Telegram has gained a lot of popularity because of the controversy over WhatsApp’s new privacy policy. In January 2021, Telegram was the most downloaded app worldwide and crossed 500 million monthly active users. And with so many active users on the app, people might get messages in bulk from a group or a channel that can be a little irritating. So to get rid of the same, you can mute groups, chats, and channels on Telegram just like WhatsApp. You can mute notifications for one hour, eight hours, or two days, or you can disable notifications forever.

What is Telegram Possible Future Strategies?

Cryptoassets enthusiasts use this application for their trade activities, and they may make donations for this cause.If somehow Telegram do run out of money to sustain themselves they will probably introduce some features that will not hinder the rudimentary principle of Telegram but provide users with enhanced and enriched experience. This could be similar to features where characters can be customized in a game which directly do not affect the in-game strategies but add to the experience.

Rust from ye


Telegram Rust
FROM USA