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: |

Mr. Durov launched Telegram in late 2013 with his brother, Nikolai, just months before he was pushed out of VK, the Russian social-media platform he founded. Mr. Durov pitched his new appβ€”funded with the proceeds from the VK saleβ€”less as a business than as a way for people to send messages while avoiding government surveillance and censorship.

Spiking bond yields driving sharp losses in tech stocks

A spike in interest rates since the start of the year has accelerated a rotation out of high-growth technology stocks and into value stocks poised to benefit from a reopening of the economy. The Nasdaq has fallen more than 10% over the past month as the Dow has soared to record highs, with a spike in the 10-year US Treasury yield acting as the main catalyst. It recently surged to a cycle high of more than 1.60% after starting the year below 1%. But according to Jim Paulsen, the Leuthold Group's chief investment strategist, rising interest rates do not represent a long-term threat to the stock market. Paulsen expects the 10-year yield to cross 2% by the end of the year. A spike in interest rates and its impact on the stock market depends on the economic backdrop, according to Paulsen. Rising interest rates amid a strengthening economy "may prove no challenge at all for stocks," Paulsen said.

Rust from br


Telegram Rust
FROM USA