Bagaimana manajer paket Linux menangani modul C ++ 20?

12

Kami berada di tahun 2020 sekarang dan C ++ 20 akan datang, bersama dengan fitur modul C ++ yang telah lama ditunggu. Tetapi setelah menonton beberapa pembicaraan tentang CppCon saya menemukan modul C ++ berada di tempat yang aneh, terutama untuk manajer paket Linux (pacman, apt, emerge, dll ...)

Dari apa yang saya pelajari, modul C ++ adalah

  1. Ketergantungan kompilator
    • Anda tidak dapat menggunakan modul yang dibangun oleh GCC di Dentang
    • Modul GCC 9.1 tidak akan berfungsi pada GCC 9.2
  2. Anda dapat memiliki banyak versi berbeda dari modul yang sama
    • Selama mereka tidak diekspor ke ruang lingkup yang sama
  3. Anda perlu membangun kembali modul jika dependensinya diperbarui

Masalah saya adalah, di semua distro kompiler bergulir rilis diperbarui setiap saat dan pengguna mungkin memiliki kompilator build sendiri. Saat ini seseorang dapat memperbarui kompiler atau memperbarui libstdc++. Tetapi dengan modul, tampaknya menyarankan libstdc++harus diperbarui ketika kompiler memperbarui.

Bagaimana pengelola paket menangani pembaruan, misalnya, STL ketika kompiler memperbarui? Saya tidak berpikir membangun setiap versi dari modul STL untuk setiap versi dari compiler adalah layak. Pengguna juga tidak harus membuat modul STL sendiri ide yang bagus.

Mary Chang
sumber
1
" Anda tidak dapat menggunakan modul yang dibangun oleh GCC di Dentang " Anda tidak dapat menggunakan hasil kompilasi dari modul yang dibangun oleh GCC di Dentang.
Nicol Bolas
1
Saya tidak bisa menangkap masalahnya. Dimungkinkan untuk mendistribusikan file modul yang sudah dikompilasi, tetapi itu bukan keharusan. Setiap pengguna dapat mengkompilasinya satu kali untuk setiap kompiler / versi dan semuanya baik-baik saja. Jika paket distro memberikan file yang telah dikompilasi, itu hanya menyimpan satu kompilasi yang saat ini kami lakukan pada setiap kompilasi. Di mana manfaat untuk mengirimkan modul yang sudah dikompilasi? Unduh / Instalasi mungkin lebih lama karena kompilasi satu kali.
Klaus
Anawer macam apa yang Anda bayangkan yang bukan spekulasi murni?
n. 'kata ganti' m.
@ Klaus Tepat, tidak ada manfaatnya. Tetapi sebagian besar aplikasi dibagi menjadi 2 bagian. Antarmuka dan lib inti. Jadi orang dapat berinteraksi dengan fungsionalitas inti secara langsung. Ambil yosys misalnya. Itu diludahkan ke dalam libyosys dan yosys. Jika libyosys memutuskan untuk menggunakan modul untuk build yang lebih cepat, libyosys harus dibangun oleh setiap pengguna. Secara efektif mengubah setiap manajer paket menjadi AUR atau emerge.
Mary Chang
@ n.'pronouns'm. Saya berharap pengembang paket manajer akan melihat pertanyaan dan menjelaskan bagaimana mereka memecahkan masalah.
Mary Chang

Jawaban:

1

Untuk saat ini (10 Januari / 2020), sistem modul dianggap lebih sebagai fitur proyek-dalam daripada penggantian distribusi header / lib. Seperti yang disarankan oleh orang-orang dari komunitas Clang, meskipun ada proposal untuk membuat formulir AST independen kompiler, Clang atau Gcc maupun Microsoft tidak memiliki rencana untuk melakukan ini. Jadi kamu menebak tentang

Anda dapat memiliki banyak versi berbeda dari modul yang sama

benar dan akan diam beberapa saat.

Sebagai aspek platform manajemen paket, resolusi masih belum diketahui, tetapi karena sistem modul lebih merupakan fitur proyek-dalam, kasus terburuknya adalah bahwa cara "header / lib" masih akan terjadi.

PS Saya pikir stackoverflow bukan tempat yang baik untuk pertanyaan seperti ini, jika Anda benar-benar menginginkan jawaban, tanyakan daftar mail ini .

ravenisadesk
sumber