Linux paket yöneticileri C ++ 20 modüllerini nasıl işler?


12

Şimdi 2020 yılındayız ve uzun zamandır beklenen C ++ modülleri özelliğinin yanı sıra C ++ 20 geliyor. Ancak CppCon'da birkaç görüşmeyi izledikten sonra, özellikle Linux paket yöneticileri için (pacman, apt, emerge, vb ...) C ++ modüllerinin garip bir yerde olduğunu görüyorum.

Öğrendiklerimden, C ++ modülleri

  1. Derleyiciye bağlı
    • Clang'da GCC tarafından oluşturulan bir modülü kullanamazsınız
    • GCC 9.1 modülleri GCC 9.2'de çalışmaz
  2. Aynı modülün birçok farklı sürümüne sahip olabilirsiniz
    • Aynı kapsama ihraç edilmedikleri sürece
  3. Bağımlılıkları güncellenirse bir modülü yeniden oluşturmanız gerekir

Benim sorunum, tüm haddeleme sürüm dağıtım derleyiciler her zaman güncellenen ve kullanıcı kendi derleyici inşa olabilir. Şu anda sadece derleyiciyi güncelleyebilir veya güncelleyebilirsiniz libstdc++. Ancak modüller ile, libstdc++derleyici güncellendiğinde güncellenmesi gerektiği görülüyor .

Derleyici güncelleştirilirken paket yöneticisi güncelleştirmeyi, örneğin STL'yi nasıl ele alır? Derleyicinin her sürümü için STL modülünün her sürümünü oluşturmanın mümkün olduğunu düşünmüyorum. Kullanıcı da kendi STL modülünü oluşturmak zorunda değildir.


1
" Clang'da GCC tarafından oluşturulan bir modülü kullanamazsınız " Clang'da GCC tarafından oluşturulan bir modülün derlenmiş sonuçlarını kullanamazsınız .
Nicol Bolas

1
Sorunu yakalayamıyorum. Önceden derlenmiş modül dosyalarını dağıtmak mümkündür, ancak bu bir zorunluluk değildir. Her kullanıcı her derleyici / sürüm için bir kez derleyebilir ve her şey yolunda. Dağıtım paketi bu önceden derlenmiş dosyaları sağlıyorsa, şu anda her derlemede yaptığımız tek bir derlemeyi kaydeder. Önceden derlenmiş modüller sunmanın yararı nerededir? İndirme / Yükleme bir kez derleme olarak daha uzun sürebilir.
Klaus

Saf spekülasyon olmayacak ne tür bir benzerini düşünüyorsunuz?
n. 'zamirler' m.

@Klaus Kesinlikle hiçbir faydası yok. Ancak çoğu uygulama 2 kısma ayrılmıştır. Bir arayüz ve çekirdek lib. Böylece insanlar doğrudan temel işlevlerle etkileşime girebilirler. Örneğin yosys'i ele alalım. Libyosys ve yosys içine tükürülür. Eğer libyosys daha hızlı kurulumlar için modüller kullanmaya karar verirse, libyosys her kullanıcı tarafından oluşturulmalıdır. Her paket yöneticisini etkili bir şekilde AUR'ye dönüştürün veya ortaya çıkın.
Mary Chang

@ n.'pronouns'm. Bir paket yöneticisi geliştiricisinin soruyu görmesini ve sorunu nasıl çözdüklerini açıklamasını umuyordum.
Mary Chang

Yanıtlar:


1

Şimdilik (Ocak / 10/2020), modül sistemi, başlık / lib dağıtımının yerini almaktan ziyade, proje-içi bir özellik olarak kabul edilmektedir. Clang topluluğunun adamlarının önerdiği gibi, derleyiciden bağımsız bir AST formu oluşturma önerisi olmasına rağmen, ne Clang ne de Gcc veya Microsoft'un bunu yapmayı planlamıyor. Yani tahmin edersin

Aynı modülün birçok farklı sürümüne sahip olabilirsiniz

haklı ve bir süre hareketsiz kalacak.

Paket yönetim platformunun yönü olarak, çözünürlük hala bilinmemektedir, ancak modül sistemi daha çok proje-içsel bir özellik olduğundan, en kötü durum "başlık / lib" yolunun hala gerçekleşeceğidir.

Not: Stackoverflow böyle sorular için iyi bir yer olmadığını düşünüyorum, gerçekten bir cevap istiyorsanız, bu posta listesine sorun.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.