2015-05-27 6 views
9

मैं संक्षेप में हास्केल के लिए अर्ध-उद्धरण पुस्तकालयों में देख रहा हूं। ये पुस्तकालय Haskell को अन्य भाषाओं के साथ एकीकृत करने की अनुमति देते हैं। सी के साथ एकीकृत करने के लिए, वहाँ इसी तरह की सुविधा के साथ दो संकुल प्रतीत होता है:इनलाइन-सी और भाषा-सी-इनलाइन के बीच अंतर क्या हैं?

मैं की एक अर्ध उद्धरण पुस्तकालय का निर्माण देख रहा हूँ के रूप में मेरा अपना, मुझे डिजाइन विकल्पों, एपीआई मतभेदों, प्रदर्शन इत्यादि में दिलचस्पी है।

एकमात्र अंतर मुझे पता है कि language-c-quote सी और उद्देश्य-सी का समर्थन करता है, जबकि inline-c सी

आप इन पैकेजों को कैसे अलग करेंगे? मौलिक मतभेद क्या हैं? क्या वे वास्तव में समान हैं?

उत्तर

7

कुछ मतभेद जहां (शीघ्र ही) inline-c's reddit announcement में चर्चा:

कैसे इस भाषा-सी इनलाइन की तुलना में कैसा

  • inline-c में हम जो अतिरिक्त विरोधी quoters के साथ आसानी से एक्स्टेंसिबल है एक बहुत ही सरल कोर पुस्तकालय है। मैं चाहता था कि कोर कार्यक्षमता बहुत अनुमानित हो, और विशिष्ट उपयोग मामलों तक फैनसीयर मार्शलिंग छोड़ दें। language-c-inline में marshalling हार्ड-कोड किए गए नियमों और उपयोगकर्ता द्वारा आपूर्ति किए गए टेम्पलेट हास्केल फ़ंक्शंस के मिश्रण के साथ काम करता है।
  • हम भाषा को जितना संभव हो सके सी कोड को शामिल करना चाहते थे। इनलाइन सी को अर्ध उद्धरण के साथ विभाजित किया गया है और कोई टेम्पलेट हास्केल फ़ंक्शन नहीं है। इनलाइन सी कोड एंटी-कोटर्स का उपयोग करके कैप्चर करने के लिए हास्केल वेरिएबल्स निर्दिष्ट करता है, और लक्ष्य प्रकार सभी सी सिंटैक्स का उपयोग करके निर्दिष्ट किए जाते हैं। जैसा कि मैंने ब्लॉग पोस्ट में कहा है, मैंने काफी कुछ ख्याल रखा है कि यह मामला है, यह विश्वास करने के लिए कि सी में जो हो रहा है वह वह है जो आप उम्मीद करते हैं। संबंधित रूप से, केवल एंटी-कोटर्स की जांच की जाती है: शेष सी कोड को पार्स नहीं किया जाता है और बाएं वर्बैटिम नहीं होता है, इसलिए हमें उपयोगकर्ता द्वारा उपयोग किए जाने वाले सी कंपाइलर के बीच अंतिम असंगतताओं और Haskell C पार्सर के बारे में चिंता करने की आवश्यकता नहीं है जो language-c-inline उपयोग ।
  • हम यह भी सुनिश्चित कर रहे हैं कि आधारभूत संरचना और निर्माण प्रक्रिया चिकनी है। addTopDecl फ़ंक्शन का उपयोग language-c-inline जैसे रनटाइम पर तालिकाओं को पॉप्युलेट करने से बचने के लिए किया जाता है, और मैं यह सुनिश्चित करने के लिए विभिन्न युक्तियों को भी नियोजित करता हूं कि सब कुछ आसानी से निर्माण के दौरान काम करेगा। उदाहरण के लिए, जेनरेट किए गए सी फ़ंक्शंस के नाम फ़ंक्शन की सामग्री के हैश पर आधारित होते हैं। यह गारंटी देना काफी महत्वपूर्ण है कि कैबल द्वारा एक ही फाइल का बार-बार निर्माण होता है - उदाहरण के लिए प्रोफाइलिंग समर्थन के साथ संकलन करते समय - परिणामस्वरूप उसी सी प्रतीक उत्पन्न होते हैं, जबकि यह सुनिश्चित करते हुए कि प्रतीक केवल तभी होते हैं जब सी स्निपेट मॉड्यूल में वही हैं।

    [...]

संक्षेप में, दो पुस्तकालयों भावना में बहुत समान हैं, लेकिन हम inline-c कोडित बेहतर हमारी जरूरतों के विभिन्न डिजाइन विकल्प लेने के लिए उपयुक्त माना जाता है। ऊपर दिए गए कुछ फायदे आसानी से language-c-inline पर भेजे जा सकते हैं, खासतौर पर अंतिम बिंदु में।

announcement on fpcomplete में अतिरिक्त जानकारी भी है, लेकिन सभी में, हाँ, उनके कुछ समान हैं।

+0

धन्यवाद! मुझे एहसास नहीं हुआ कि हाल ही में 'इनलाइन-सी' कैसा था। –

संबंधित मुद्दे