ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° обсъТданС Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠ° Π·Π° добавянС Π½Π° инструмСнти Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Rust към ядрото Π½Π° Linux

Ник Π”Π΅Π·Π°Π½ΠΈΠ΅ (Ник Π”Π΅ΡΠΎΠ»Π½ΠΈΡŠΡ€Ρ), ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² Google, Π·Π° Π΄Π° прСдоставя ΠŸΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ядрото Π½Π° Linux с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Clang ΠΈ ΡΡŠΡ‰ΠΎ ΠΏΠΎΠΌΠ°Π³Π°ΠΉΠΊΠΈ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π° Rust, Π’ΠΎΠΉ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ Π½Π° конфСрСнция ΠšΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΡ Π½Π° Π²ΠΎΠ΄ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Linux 2020 Π³ сСсия Π·Π° обсъТданС Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° ядрото Π² Rust. Ник ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π° микроконфСрСнция, посвСтСна Π½Π° LLVM, ΠΈ вярва, Ρ‡Π΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ Ρ…ΡƒΠ±Π°Π²ΠΎ Π΄Π° сС ΠΎΠ±ΡΡŠΠ΄ΡΡ‚ тСхничСскитС аспСкти Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½Π°Ρ‚Π° интСграция Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Rust Π² ядрото (Ρ‚ΠΎΠΉ Π²Π΅Ρ‡Π΅ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΠ» Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Π·Π° KBuild) ΠΈ Π΄Π° сС Ρ€Π°Π·Π±Π΅Ρ€Π΅ Π΄Π°Π»ΠΈ Ρ‚Π°ΠΊΠ°Π²Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° трябва ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π΄Π° сС добавят ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ ограничСния Π²ΡŠΡ€Ρ…Ρƒ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Rust трябва Π΄Π° сС ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚.

НСка си ΠΏΡ€ΠΈΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Π΅ Π² ΡΠΊΠΎΡ€ΠΎΡˆΠ½Π° дискусия Π½Π° Open Source Summit ΠΈ Embedded Linux конфСрСнцията Линус Ворвалдс Π½Π΅ Π³ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈ появата Π½Π° ΠΎΠ±Π²ΡŠΡ€Π·Π²Π°Π½ΠΈΡ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° нСосновни подсистСми Π½Π° ядрото (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ) Π½Π° Π΅Π·ΠΈΡ†ΠΈ ΠΊΠ°Ρ‚ΠΎ Rust. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌΠ΅ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ Π² Rust Π±ΠΈ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Π΄Π° създавамС ΠΏΠΎ-бСзопасни ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ усилия, Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° слСд освобоТдаванС, Π΄Π΅Ρ€Π΅Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ Π½Π° Π½ΡƒΠ»Π΅Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π» ΠΈ ΠΏΡ€Π΅ΠΏΡŠΠ»Π²Π°Π½Π΅ Π½Π° Π±ΡƒΡ„Π΅Ρ€. Π’Π΅Ρ‡Π΅ ΠΈΠΌΠ° няколко ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° Ρ‚Ρ€Π΅Ρ‚ΠΈ страни Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Ρ‚Π°Π·ΠΈ функция:

  • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΎΡ‚ компанията β€žΠ ΠΈΠ±Π° Π² Π±ΡŠΡ‡Π²Π°β€œ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ инструмСнти Π·Π° писанС Π½Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π΅ΠΌΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° ядрото Π½Π° Linux Π½Π° Π΅Π·ΠΈΠΊΠ° Rust, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ абстрактни слоСвС Π²ΡŠΡ€Ρ…Ρƒ интСрфСйситС ΠΈ структуритС Π½Π° ядрото Π·Π° повишаванС Π½Π° сигурността. Π‘Π»ΠΎΠ΅Π²Π΅Ρ‚Π΅ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ въз основа Π½Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅ Π·Π°Π³Π»Π°Π²Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ядрото с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° bindgen. Clang сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° слоСвС. Π’ допълнСниС към ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈΡ‚Π΅ слоСвС, сглобСнитС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΠ°ΠΊΠ΅Ρ‚Π° staticlib.
  • Π˜Π·ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΎΡ‚ китайския унивСрситСт Π² Π₯ΠΎΠ½ΠΊΠΎΠ½Π³ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ сС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ систСми ΠΈ устройства Π·Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π½Π° Π½Π΅Ρ‰Π°Ρ‚Π° Π² Rust, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‰ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° bindgen Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° слоСвС въз основа Π½Π° Π·Π°Π³Π»Π°Π²Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° ядрото. Π Π°ΠΌΠΊΠ°Ρ‚Π° Π²ΠΈ позволява Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈΡ‚Π΅ сигурността Π½Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈΡ‚Π΅, Π±Π΅Π· Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ядрото - вмСсто Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π½ΠΈΠ²Π° Π½Π° изолация Π·Π° Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π² ядрото, сС ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° компилация, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΏΠΎ-сигурния Π΅Π·ΠΈΠΊ Rust. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° сС, Ρ‡Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ‚ΡŠΡ€ΡΠ΅Π½ ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰ΠΈ собствСни Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΈ Π½Π°Π±ΡŠΡ€Π·ΠΎ, Π±Π΅Π· Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ подходящ ΠΎΠ΄ΠΈΡ‚.
  • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° Ρ€Π°ΠΌΠΊΠ° C2Rust Π·Π° ΠΈΠ·Π»ΡŠΡ‡Π²Π°Π½Π΅ Π½Π° C ΠΊΠΎΠ΄ към Rust, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ СкспСримСнти Π·Π° ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° ядрото с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈ Ρ€ΡŠΡ‡Π½ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ†ΠΈΠΈ. Π•Π΄ΠΈΠ½ ΠΎΡ‚ отбСлязанитС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π² ΠΌΠ½ΠΎΠ³ΠΎ части Π½Π° ядрото Π½Π° ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° GCC Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ, ΠΊΠΎΠΈΡ‚ΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ Π² C2Rust. Π—Π° Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, C2Rust ΠΏΠ»Π°Π½ΠΈΡ€Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° GCC Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ inline, cold, alias, used ΠΈ section, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π΄Π° Ρ€Π°Π·ΡˆΠΈΡ€ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π½Π° вградСния асСмблСр ΠΈ Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ със структури, ΠΊΠΎΠΈΡ‚ΠΎ са Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Ρ€Π°Π²Π½Π΅Π½ΠΈ ΠΈ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ xregs_state) . Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ изискват Ρ€ΡŠΡ‡Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚ Π½Π΅Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»Π½ΠΈ C макроси Π² Rust макроси ΠΈ нСобходимостта ΠΎΡ‚ ΠΏΡ€Π΅Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ C2Rust ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π° C Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π² Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π° libc, Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π½Π° ядрото.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€