ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Rust для ядра Linux ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»Π°ΡΡŒ с ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠΎΠΉ Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄ΡΠ°

Линус Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ ΠΏΡ€ΠΎΠ²Ρ‘Π» Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ c Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ возмоТности создания Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² Π½Π° языкС Rust для ядра Linux, ΠΈ высказал Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ критичСскиС замСчания.

НаибольшиС ΠΏΡ€Π΅Ρ‚Π΅Π½Π·ΠΈΠΈ Π²Ρ‹Π·Π²Π°Π»Π° ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡ…ΠΎΠ΄Π° Π² panic() Π² ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½Ρ‹Ρ… ситуациях, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ситуации Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти, ΠΊΠΎΠ³Π΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ динамичСского распрСдСлСния памяти, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ядра, ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒΡΡ ошибкой. Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ заявил, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π² ядрС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½ΠΎ нСдопустим ΠΈ ΠΏΡ€ΠΈ Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠΈ этого ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ (totally NAKed) любой ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ попытаСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉΡΡ ΠΏΠ°Ρ‚Ρ‡Π°ΠΌΠΈ, согласился с Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΈ считаСт Π΅Ρ‘ Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ.

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ стали ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ использования вычислСний с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΈΠ»ΠΈ 128-Π±ΠΈΡ‚Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, Ρ‡Ρ‚ΠΎ Π½Π΅ являСтся допустимым для Ρ‚Π°ΠΊΠΈΡ… ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ядро Linux. Π­Ρ‚ΠΎ оказалось Π±ΠΎΠ»Π΅Π΅ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ базовая (core) Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Rust Π½Π΅Π΄Π΅Π»ΠΈΠΌΠ° ΠΈ прСдставляСт собой ΠΎΠ΄ΠΈΠ½ большой blob — Π² Π½Π΅ΠΉ Π½Π΅Ρ‚ возмоТности Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· возмоТностСй, ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΠ² использованиС Ρ‚ΠΎΠΉ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. РСшСниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² компиляторС rust ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π΅Ρ‰Ρ‘ Π½Π΅Ρ‚ стратСгии, ΠΊΠ°ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ языка.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ Π’ΠΎΡ€Π²Π°Π»ΡŒΠ΄Ρ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ прСдоставлСнный ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° — бСсполСзный ΠΈ посовСтовал ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€, Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: Компания Google заявила ΠΎ своём участии Π² ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²Π΅ ΠΏΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Rust Π² ядро Linux ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π»Π° тСхничСскиС аспСкты цСлСсообразности внСдрСния Rust для Π±ΠΎΡ€ΡŒΠ±Ρ‹ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ ΠΈΠ·-Π·Π° ошибок ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. Google ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Rust ΡƒΠΆΠ΅ Π³ΠΎΡ‚ΠΎΠ² ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ ΠΊ Π‘ΠΈ Π² качСствС языка для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ядра Linux. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования языка Rust для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ядра, Π² контСкстС ΠΈΡ… использования Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅ Android (Rust ΠΏΡ€ΠΈΠ·Π½Π°Π½ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ языком для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Android).

ΠžΡ‚ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Google ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ» Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ написанного Π½Π° языкС Rust Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° для ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° мСТпроцСссного взаимодСйствия Binder, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ провСсти Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ сравнСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ бСзопасности Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ Binder Π½Π° Π‘ΠΈ ΠΈ Rust. Π’ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Π° Π΅Ρ‰Ρ‘ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, Π½ΠΎ ΡƒΠΆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ для всСх Π±Π°Π·ΠΎΠ²Ρ‹Ρ… абстракций Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ядра, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Binder, ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Ρ‹ прослойки для использования этих абстракций Π² ΠΊΠΎΠ΄Π΅ Π½Π° языкС Rust.

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