Дискуссия ΠΎΠ± использовании языка C++ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ядра Linux

Π’ спискС рассылки Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ядра Linux возобновилось Π½Π°Ρ‡Π°Ρ‚ΠΎΠ΅ ΡˆΠ΅ΡΡ‚ΡŒ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ обсуТдСниС пСрспСктив использования соврСмСнного ΠΊΠΎΠ΄Π° Π½Π° C++ Π² ядрС Linux, ΠΏΠΎΠΌΠΈΠΌΠΎ Π½Ρ‹Π½Π΅ΡˆΠ½Π΅Π³ΠΎ примСнСния языка Π‘ΠΈ с ассСмблСрными вставками ΠΈ продвиТСния языка Rust. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΠΌΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ядра Π½Π° C++ Π±Ρ‹Π»Π° поднята Π² 2018 Π³ΠΎΠ΄Ρƒ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΎΠΌ ΠΈΠ· Red Hat, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ апрСля Π² качСствС ΡˆΡƒΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π½Π°Π±ΠΎΡ€ ΠΈΠ· 45 ΠΏΠ°Ρ‚Ρ‡Π΅ΠΉ для использования шаблонов, наслСдуСмых классов ΠΈ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ C++ Π² ΠΊΠΎΠ΄Π΅ ядра.

Π‘ ΠΈΠ½ΠΈΡ†ΠΈΠ°Ρ‚ΠΈΠ²ΠΎΠΉ продолТСния обсуТдСния выступил Ганс ΠŸΠΈΡ‚Π΅Ρ€ Анвин (Hans Peter Anvin), ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ядра Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Intel ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΊΠ°ΠΊ syslinux, klibc ΠΈ LANANA, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΉ для ядра Linux систСму автомонтирования, Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ RAID 6, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ CPUID ΠΈ x32 ABI. По мнСнию Анвина, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ многочислСнных макросов ΠΈ ассСмблСрных вставок Π² ядрС, с 1999 Π³ΠΎΠ΄Π° языки C ΠΈ C++ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΠ»ΠΈΡΡŒ Π²ΠΏΠ΅Ρ€Ρ‘Π΄ Π² своём Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠΈ ΠΈ язык C++ стал Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Π‘, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ядра ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм.

ВозмоТности, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅Ρ‰Ρ‘ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚ΡŒ спСцифичныС GCC-Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° стандартном C++, ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях использованиС C++ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ инфраструктуру Π±Π΅Π· глобального измСнСния ΠΊΠΎΠ΄Π°. Π’ качСствС минимальной упоминаСтся использованиС спСцификации C++14, которая Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ срСдства мСтапрограммирования, Π° Π² качСствС ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΉ — использованиС спСцификации C++20, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ появилась ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, способных ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ появлСниС ΠΌΠ½ΠΎΠ³ΠΈΡ… ошибок.

Анвин считаСт, Ρ‡Ρ‚ΠΎ C++ Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»Π΅Π½, Ρ‡Π΅ΠΌ Rust, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ послСдний сущСствСнно отличаСтся ΠΎΡ‚ языка Π‘ ΠΏΠΎ синтаксису, Π½Π΅ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π΅Π½ для Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ядра ΠΈ Π½Π΅ позволяСт постСпСнно ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ (Π² случаС языка Π‘++ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ частям ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ с языка C, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π‘-ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ C++). Π’ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ использования Π‘++ Π² ядрС Ρ‚Π°ΠΊΠΆΠ΅ выступили Π˜Ρ€ΠΆΠΈ Π‘Π»Π°Π±ΠΈ (Jiri Slaby) ΠΈΠ· ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ SUSE ΠΈ Дэвид Π₯ауэллс (David Howells) ΠΈΠ· Red Hat.

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