C++ di Linux, topik itu dihidupkan semula selepas 6 tahun

Linux C++

Penggunaan C++ dalam Linux telah dicadangkan lagi

Ia seolah-olah bahawa pengenalan Rust sebagai bahasa kedua pengaturcaraan dalam Linux Kernel telah mewakili salah satu perubahan yang paling penting bahawa Linux telah dan tidak bercakap dalam skop ciri dan fungsi, tetapi ia telah menandakan titik permulaan yang sangat penting dalam bagaimana Linus Torvalds dan pasukan pembangunan telah mengambil langkah penting ke arah memodenkan Linux menjadi lebih baik.

Hal ini dapat diperhatikan, sejak kebelakangan ini, pada senarai mel kernel Linux satu perbincangan telah dihidupkan semula yang dimulakan enam tahun lalu, secara berseloroh membentangkan 1 April 2018.

Dan ia telah diletakkan semula di atas meja semula. isu "kebolehlaksanaan menerima pakai kod C++ moden dalam kernel Linux", melangkaui penggunaan tradisional bahasa C dengan serpihan penghimpun dan promosi bahasa Rust.

Cadangan awal telah dilancarkan pada 2018, oleh seorang jurutera Red Hat sebagai gurauan untuk sambutan April fool yang terkenal, di mana ramai yang mengambil kesempatan untuk membuat gurauan pada komuniti dan pada masa itu ia adalah seperti itu, kerana ia kononnya telah mengeluarkan satu set 45 patch yang termasuk penggunaan templat, warisan kelas dan kelebihan beban fungsi C++.

Pada pendapat saya, C++14 ialah versi "minimum" yang mempunyai sokongan metaprogramming yang munasabah dan kebanyakannya tanpa jenis daripada versi sebelumnya (C++11 mempunyai kebanyakannya, tetapi C++14 mengisi beberapa bahagian utama yang hilang). Walau bagaimanapun, pada pendapat saya, C++20 benar-benar penukar permainan terbesar; Walaupun versi sebelumnya boleh melaksanakan banyak penggodaman SFINAE, mereka juga memberikan mesej ralat yang sama sekali tidak berguna.

Kami melakukan banyak pengaturcaraan meta dalam kernel Linux, dilaksanakan menggunakan helah makro yang sering benar-benar mengerikan. Ini juga hampir mustahil untuk nyahpepijat. Mari kita ambil contoh hacks jenis uaccess.h, sebahagian daripadanya saya reka dan tulis. Dalam C++, pelakon dan penyataan kes yang berbeza boleh dibahagikan kepada contoh templat yang berasingan, dan dengan sedikit kepintaran, perkara seperti penunjuk ruang pengguna berbanding penunjuk ruang pengguna kernel juga boleh dikuatkuasakan dengan ketat, serta penunjuk ruang pengguna yang sudah ditanda, berbanding yang tidak, apatah lagi pengendalian mudah kes jenis ruang pengguna 32-bit dalam kernel 64-bit dan aplikasi penukaran endian.

Sekarang, hampir selepas 6 tahun ini, Hans Peter Anvin, pembangun inti Intel utama dan pencipta projek seperti syslinux, klibc dan LANANA, telah mengambil inisiatif untuk meneruskan perbincangan. Menurut Anvin, sejak 1999, bahasa C dan C++ telah melihat kemajuan yang ketara dalam pembangunannya, dan bahasa C++ telah terbukti lebih sesuai daripada C untuk pembangunan kernel sistem pengendalian.

Anvin menyebut bahawa ciri yang sebelum ini memerlukan sambungan khusus daripada GCC, kini boleh dilaksanakan dengan mudah dalam C++ standard, dan dalam banyak kes, menggunakan C++ akan menambah baik infrastruktur tanpa perlu menukar kod sepenuhnya.

Selain itu, Adalah dicadangkan untuk menggunakan sekurang-kurangnya spesifikasi C++ 14, yang merangkumi alat pengaturcaraan meta, dan penggunaan spesifikasi C++ 20 adalah digalakkan, yang memperkenalkan sokongan untuk konsep yang boleh mengurangkan kejadian ralat.

Ia dikatakan bahawa C++ lebih disukai daripada Rust, kerana yang terakhir berbeza dengan ketara dalam sintaks daripada bahasa C, adalah perkara biasa bagi pembangun kernel semasa dan tidak membenarkan penulisan semula kod secara beransur-ansur. Dalam kes bahasa C++, adalah mungkin untuk menterjemah bahagian kod bahasa C secara beransur-ansur, sama seperti cara kod C boleh disusun sebagai C++.

Walaupun kernel Linux terutamanya kod C dengan pelbagai bahagian yang ditulis dalam pemasangan dan kerja berkembang di sekitar sokongan Rust dalam kernel Linux, masih tidak jelas sama ada terdapat cukup berat untuk ini menjadi realiti, mengenai kemungkinan melihat kod Linux kernel C ditukar kepada C++ pada masa hadapan.

akhirnya jika anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh menyemak butiran di pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.