लिनक्स पैकेज मैनेजर C ++ 20 मॉड्यूल को कैसे संभालेंगे?


12

हम अब 2020 में हैं और C ++ 20 लंबे समय से प्रतीक्षित C ++ मॉड्यूल फीचर के साथ आ रहा है। लेकिन CppCon पर कुछ बातचीत देखने के बाद मुझे पता चलता है कि C ++ मॉड्यूल एक अजीब जगह पर हैं, विशेष रूप से लिनक्स पैकेज प्रबंधकों (pacman, apt, उभरते, आदि ...) के लिए

मैंने जो सीखा है, उससे C ++ मॉड्यूल हैं

  1. संकलक निर्भर
    • आप Clang में GCC द्वारा निर्मित मॉड्यूल का उपयोग नहीं कर सकते
    • GCC 9.1 मॉड्यूल GCC 9.2 पर काम नहीं करेगा
  2. आपके पास एक ही मॉड्यूल के कई अलग-अलग संस्करण हो सकते हैं
    • जब तक उन्हें एक ही दायरे में निर्यात नहीं किया जाता है
  3. यदि इसकी निर्भरता अद्यतन हो, तो आपको एक मॉड्यूल का पुनर्निर्माण करना होगा

मेरी समस्या यह है कि सभी रोलिंग-रिलीज़ डिस्ट्रोस कंपाइलरों में हर समय अपडेट होता रहता है और उपयोगकर्ता का अपना कंपाइलर बिल्ड हो सकता है। वर्तमान में कोई केवल कंपाइलर को अपडेट कर सकता है या अपडेट भी कर सकता है libstdc++। लेकिन मॉड्यूल के साथ, ऐसा लगता है कि libstdc++कंपाइलर अपडेट होने पर इसे अपडेट करना होगा।

पैकेज मैनेजर अपडेट को कैसे हैंडल करेगा, उदाहरण के लिए, कंपाइलर अपडेट होने पर एसटीएल? मुझे नहीं लगता कि संकलक के हर संस्करण के लिए एसटीएल मॉड्यूल के हर संस्करण का निर्माण संभव है। न ही उपयोगकर्ता अपने एसटीएल मॉड्यूल को एक अच्छा विचार बनाने के लिए है।


1
" आप Clang में GCC द्वारा निर्मित मॉड्यूल का उपयोग नहीं कर सकते हैं " आप Clang में GCC द्वारा बनाए गए मॉड्यूल के संकलित परिणामों का उपयोग नहीं कर सकते ।
निकोल बोलस

1
मैं समस्या को पकड़ नहीं सकता। पहले से तैयार मॉड्यूल फ़ाइलों को वितरित करना संभव है, लेकिन यह एक जरूरी नहीं है। प्रत्येक उपयोगकर्ता प्रत्येक संकलक / संस्करण के लिए एक बार उन्हें संकलित कर सकता है और सब ठीक है। यदि डिस्ट्रो पैकेज उस प्री-कम्पाइल की गई फ़ाइलों को डिलीवर करता है, तो यह केवल एक ही कंपाइल को बचाता है, जो वर्तमान में हम हर कंपाइल पर करते हैं। Precompiled मॉड्यूल देने के लिए लाभ कहां है? डाउनलोड / इंस्टॉल करने में संकलन के रूप में अधिक समय लग सकता है।
क्लॉस

आप किस तरह के एवर की कल्पना करते हैं जो शुद्ध अटकलें नहीं होगी?
एन। 'सर्वनाम' मी।

@ क्लॉस वास्तव में, कोई लाभ नहीं है। लेकिन अधिकांश एप्लिकेशन 2 भाग में विभाजित हैं। एक इंटरफ़ेस और कोर लिब। तो लोग सीधे कोर कार्यक्षमता के साथ बातचीत कर सकते हैं। उदाहरण के लिए yosys को लें। यह libyosys और yosys में लगाया जाता है। यदि लिबायोसिस तेज बिल्ड के लिए मॉड्यूल का उपयोग करने का निर्णय लेता है, तो प्रत्येक उपयोगकर्ता द्वारा लिबायोसिस का निर्माण किया जाना है। प्रभावी रूप से प्रत्येक पैकेज प्रबंधक को AUR में बदलना या उभरना।
मैरी चांग

@ n.'pronouns'm। मैं उम्मीद कर रहा था कि एक पैकेज मैनेजर डेवलपर सवाल देखेगा और बताएगा कि वे समस्या को कैसे हल कर रहे हैं।
मैरी चांग

जवाबों:


1

अभी (जनवरी / 10/2020) के लिए, मॉड्यूल सिस्टम को हेडर / लिबास डिस्ट्रीब्यूशन के प्रतिस्थापन के बजाय प्रोजेक्ट-इनर फीचर का अधिक माना जाता है। जैसा कि क्लैंग समुदाय के लोग सुझाव देते हैं, हालांकि एक कंपाइलर स्वतंत्र एएसटी फॉर्म बनाने का प्रस्ताव है, न तो क्लैंग और न ही जीसीसी और न ही माइक्रोसॉफ्ट के पास ऐसा करने की योजना है। तो आप अंदाजा लगाइए

आपके पास एक ही मॉड्यूल के कई अलग-अलग संस्करण हो सकते हैं

सही है और कुछ समय तक बना रहेगा।

पैकेज प्रबंधन प्लेटफ़ॉर्म के पहलू के रूप में, रिज़ॉल्यूशन अभी भी अज्ञात है, लेकिन चूंकि मॉड्यूल सिस्टम एक प्रोजेक्ट-इनर फीचर से अधिक है, इसलिए सबसे खराब स्थिति यह है कि "हेडर / लिबास" रास्ता अभी भी जगह लेगा।

पीएस मुझे लगता है कि स्टैकओवरफ्लो इन जैसे सवालों के लिए एक अच्छी जगह नहीं है, अगर आप वास्तव में जवाब चाहते हैं, तो इस मेल सूची से पूछें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.