क्या हुआ rebless
और इसके बारे में क्या करना है, इसके बारे में आधिकारिक चर्चा के लिए jnthn का जवाब देखें ।
यह काम किया ... अब यह नहीं है। त्रुटि संदेश का कोई मतलब नहीं है ... यह विरासत में मिली कक्षाओं के साथ काम करना है ... कम से कम यह था ... प्रलेखन उपयोगी नहीं है
यह (अल्ट्रा लॉन्ग!) उत्तर उन सिद्धांतों और टीडीडी दृष्टिकोण के अभ्यास पर चर्चा करने में रुचि रखने वालों के लिए एक पढ़ने लायक हो सकता है, जो राकु प्रोग्रामिंग भाषा और संबंधित कलाकृतियों जैसे कि राकोडो कंपाइलर और डॉक्स.राकु.ओ कंटेंट पर काम करते हैं। ।
इस उत्तर को अर्ने के मूल प्रश्न के विशेष भागों के लिए विशिष्ट प्रतिक्रियाओं के रूप में संरचित किया गया है और इस उत्तर के पुराने संस्करण के जवाब में उन्होंने टिप्पणी लिखी है। मेरा इरादा अरने के लिए इसे अधिक उपयोगी बनाना था, जबकि उम्मीद है, अभी भी दूसरों के लिए उपयोगी है।
Arne: इस थ्रेड में दिया गया कोड अब काम नहीं करता है: मैं Raku में किसी ऑब्जेक्ट को कैसे री -लेस कर सकता हूं?
मैंने उस एसओ से लिंक करने के लिए उस एसओ को स्वीकृत उत्तर अपडेट कर दिया है।
Arne: मैंने पिछले साल इस कोड को लिखा था, और इसने तब काम किया। अब यह नहीं है
प्रासंगिक परिवर्तन पर चर्चा अप्रैल 2019 में की गई थी जिसमें jnthn ने लिखा था:
हाल ही में, प्रकार जो rebless
ऑपरेशन के लक्ष्य थे , को अनुकूलन की सहायता के लिए स्पष्ट रूप से मिक्सिन लक्ष्य प्रकारों के रूप में बनाने की आवश्यकता शुरू हुई। ...
में एक टिप्पणी 11 दिन पहले बंद करने rakudo जी एच मुद्दा "Rebless नहीं रह गया काम करने लगता है एक कस्टम प्रकार" , उन्होंने लिखा है:
आपको is_mixin
नामित तर्क को पास करने की व्यवस्था करने की आवश्यकता होगी ClassHOW.new_type
... क्लास सिंटैक्स के साथ ऐसा करने का कोई तरीका नहीं है, इस प्रकार बगावत के लक्ष्य प्रकार को एमओपी का उपयोग करके भी इकट्ठा करना होगा।
(यह क्या सुझाव देता है कि कैसे करना है पर नोट्स के लिए उपरोक्त लिंक पर क्लिक करें।)
इस मुद्दे पर भी थोड़ा और चर्चा की गई है कि इसमें काम किया गया ... यह अचानक नहीं हुआ ... प्रलेखन ... नीचे कॉल अनुभाग का दस्तावेज़ होना चाहिए ।
Arne: यह विरासत में मिली कक्षाओं के साथ काम करने वाला है। कम से कम यह था।
रोस्ट - आर इपोजिटरी ओ एफ ए ll s pec t ests - यह निर्धारित करता है कि Raku कोड क्या करना चाहिए। ( सेंट की रोवा सेंट के रूप में पढ़ा जा सकता है रों upposed टी ओ एस।)
में एक और अप्रैल 2019 संदेश jnthn लिखा है:
पहले के लिए कोई युक्ति नहीं थी Metamodel::Primitives.rebless
। मैंने इस स्पेक्ट को जोड़ा है ताकि अब वहाँ है। इसका मतलब यह है कि अब काम करने की उम्मीद की जा सकती है।
तथ्य यह है कि Rakudo के व्यवहार को एक निष्पादन योग्य परीक्षण सूट द्वारा निर्दिष्ट किया जाता है, यह सुनिश्चित करने के लिए @ लैरी के दृष्टिकोण का एक बुनियादी हिस्सा है कि Raku व्यवहारिक रूप से व्यवहार करता है [1] और इसका गहरा प्रभाव है [2] ।
व्यापक रूप से उपयोग किए जाने वाले मॉड्यूल पर इस परिवर्तन का प्रभाव
यहाँ लोकप्रिय इनलाइन :: Perl5 मॉड्यूल के लिए इस परिवर्तन के प्रभाव का एक स्नैपशॉट है।
अप्रैल 2019 में, निनेर ने प्रभाव पर एक राकूडो जीएच मुद्दाInline::Perl5
खोला और मैंने निनेर और जेथन के बीच एक्सचेंज के कुछ हाइलाइट्स निकाले हैं।
(मैंने कुछ सामग्री को उठाया है जो मूल संदर्भ में महत्वपूर्ण थी, लेकिन इस SO के संदर्भ में विचलित करने वाली थी। कृपया यह न समझें कि आपको इस उद्धरण से मूल वार्तालाप की पूरी समझ है। यदि संदेह हो, तो लिंक पर क्लिक करें। )
निनेर: टीबीएच जो मैं यहां करता हूं, वह शायद हमेशा दयापूर्ण रहा है ... यहां तक कि हो सकता है ... मैं इससे छुटकारा पा सकता हूं [...] हालांकि यह अच्छा होगा कि पहले से ही तैनात इनलाइन :: Perl5 संस्करण ऊपर और चल रहे हैं ।
jnthn: इसके लिए कोई पूर्व युक्ति नहीं थी Metamodel::Primitives.rebless
। मैंने [a] स्पेक्टेस्ट जोड़ा है ताकि अब वहाँ है। इसका मतलब यह है कि अब काम करने की उम्मीद की जा सकती है और इनलाइन :: Perl5 पर भरोसा किया जा सकता है।
चूंकि अज्ञात नामित मापदंडों को अनदेखा किया जाता है, लेकिन :mixin
पिछले Rakudo संस्करणों पर इसकी आवश्यकता नहीं थी, फिर एक नई इनलाइन :: Perl5 रिलीज़ करना संभव होगा जो पिछले Rakudo संस्करणों के साथ-साथ आगामी एक पर भी काम कर सकता है, इसलिए कम से कम हो सकता है वापस compat।
मुझे नहीं लगता कि मौजूदा इनलाइन :: Perl5 संस्करणों के लिए काम करने का कोई तरीका है ...
निनेर: दुर्भाग्य से गुजरने से :mixin
इस मामले में मदद नहीं मिलती है क्योंकि बिना किसी के बनाए उपवर्ग पर बगावत की जाती है Metamodel::Primitives.create_type
। उपवर्ग सामान्य का उपयोग करता है Perl6::ClassHOW
।
मैं पहली बार रिबलेस हैक से छुटकारा पाने के लिए एक प्रमुख रिफ्लेक्टर पर काम कर रहा हूं। मैं इस मुद्दे को फिर से खोल रहा हूँ इसलिए रिलीज़ मैनेजर को इस बात की जानकारी है कि कोई काम नहीं कर रहा है Inline :: rakudo के रिलीज़ उम्मीदवार पर Perl5।
jnthn: क्या आप MOP का उपयोग करके उस वर्ग को बनाते हैं? आप पास कर सकते हैं :is_mixin
करने के लिए Perl6::ClassHOW.new_type
यदि ऐसा है तो।
निनर: नहीं, यह इस स्थिति के लिए है:class Bar is Foo { }
डॉक्स के साथ मदद करना
इस उत्तर के नीचे एक टिप्पणी में आपने लिखा है:
मैं प्रलेखन भाग के साथ मदद कर सकता हूं
यह मेरे लिए आपके SOQ के मुद्दे पर एक बहुत ही उपयुक्त और उपयोगी प्रतिक्रिया की तरह लगता है। मुझे उम्मीद है कि हम काफी भाग्यशाली हैं कि यह पारित होने के लिए आता है।
अगर वह मदद करता है
Imo आपका तकनीकी लेखन उत्कृष्ट है, इसलिए मुझे उम्मीद है कि आपके द्वारा दूसरों के साथ काम करने का अंतिम परिणाम इसे बेहतर बनाने में शामिल होगा।
Docs.raku.org की सामग्री पर मौलिक बाधाएँ
कारण का एक बड़ा हिस्सा मैंने इस तरह के बहुत व्यापक उत्तर को इस तरह के एक साधारण प्रश्न के लिए लिखा था, और जोनाथन ने इसका उत्तर देने के बाद शुरू में इसे हटाने के बाद इसे फिर से बहाल कर दिया था, टीडीडी दृष्टिकोण के सिद्धांतों और अभ्यास पर चर्चा करना था जो अंडरलाइज़ काम करते हैं Raku प्रोग्रामिंग भाषा और संबंधित कलाकृतियाँ जैसे Rakudo संकलक और docs.raku.org सामग्री।
अयूई, रकु में काम करने के लिए चीजों के बीच वांछनीय संबंध, और वे वास्तव में रकुडो में कैसे काम करते हैं, और कैसे चीजों को डॉक्स.राकु पर प्रलेखित किया जाना चाहिए :
सब कुछ एक स्वयंसेवक परियोजना की मौलिक प्रकृति के अधीन होना चाहिए ; और, उस बाधा के भीतर:
भुना हुआ व्यवहार में व्यवहार को प्रलेखित किया जाना चाहिए और अन्य व्यवहार नहीं किया जाना चाहिए।
(उपलब्ध स्वयंसेवक समय, रुचि, और सर्वसम्मति को देखते हुए, अपवाद कभी-कभार एक उचित रूप से QA'd Rakudo के व्यवहार के दस्तावेजीकरण के लिए बनाए जाते हैं जो रोस्ट द्वारा कवर नहीं किया जाता है। वर्तमान अभ्यास में यह एक रिलीज़ किए गए Rakudo स्टार में एक Rakudo संस्करण के व्यवहार के लिए लगता है।)
बेकार दस्तावेज
प्रलेखन सहायक नहीं है
मैंने इसे एक उचित टिप्पणी माना। सभी बातों पर विचार किया गया, जैसा कि आपने लिखा था कि आपका प्रश्न सहायक नहीं था।
प्रलेखन बेकार था [2018 में]
यह बहुत अलग बयान है।
rebless
उस समय कोई रोस्ट एंट्री कवर नहीं थी ।
पर docs.raku.org पेज तो rebless
था उसके व्यवहार में वर्णित के रूप में यह 2018 में था, तो उस गया होता बेकार से भी बदतर है, क्योंकि यह गलत तरीके से सुझाव है कि उसके बाद वर्तमान व्यवहार समर्थित किया गया। वास्तव में इसके लिए गुंजाइश थी कि एक उचित संभावना के बिना राकूडो के भविष्य के संस्करण में टूट जाए, 2018 के व्यवहार को तीन प्रमुखों द्वारा बहाल किया जाएगा। और वास्तव में यह पारित होने के लिए आया था: 2018 से इसका असमर्थित व्यवहार टूट गया था, और बहाल नहीं किया गया था।
तो, docs.raku.org में क्या है और क्या नहीं (ऊपर देखें) पर सर्वसम्मति को देखते हुए, इसका rebless
पृष्ठ जो सबसे सहायक काम कर सकता है, वह या तो बिल्कुल दस्तावेज़ नहीं था rebless
या शायद बेहतर होगा, इसके लिए एक पृष्ठ शामिल करें लेकिन सुनिश्चित करें कि इसने अपने व्यवहार का वर्णन नहीं किया है। स्थिति क्या है: पेज मौजूद था; सीधे मददगार नहीं था; और यह यकीनन कुछ नहीं से बेहतर था।
(चीजों को अभी तक बेहतर होने की कल्पना करना आसान है। उदाहरण के लिए, क्या होगा यदि पृष्ठों के दस्तावेज़ीकरण कार्यों में एक प्रतिशत रकूडो स्टार के संस्करण में उस फ़ंक्शन से जुड़े परीक्षण कवरेज की स्थिति का दस्तावेजीकरण शामिल है? एक 0% तुरंत एक पाठक का सुराग लगा सकता है? एक जागरूकता में, जो कि कार्य रोस्ट द्वारा कवर नहीं किया गया था। उस ने कहा, जबकि इस डॉक्टर सुविधा की कल्पना करना आसान है , जो इसे लागू करना है? यह कल्पना करना भी उतना ही आसान है कि यह एक कैलेंडर वर्ष या अधिक परिश्रम का काम कर सकता है। और उपयोगी रूप से लागू करने और लागू करने के लिए सहयोग, और उस लोक का मानना है कि अन्य चीजें अधिक महत्वपूर्ण हैं।)
यह काम किया ... यह अचानक नहीं हुआ ... प्रलेखन ... कॉल का दस्तावेज होना चाहिए
इसने काम कर दिया
यह "भाग्य" था यह काम किया।
यह अचानक काम नहीं किया
क्योंकि राकोडो में सुधार किया गया था।
प्रलेखन ... कॉल का दस्तावेज होना चाहिए
जैसा कि पहले बताया गया है, aiui वर्तमान समुदाय की सहमति और / या काम करने का अभ्यास है: प्रलेखन SHOULD दस्तावेज़ कॉल का एक विशेष संस्करण , अर्थात् नवीनतम Rakudo स्टार में Rakudo के संस्करण के लिए भुना हुआ व्यवहार; और अन्य संस्करणों में MAY दस्तावेज़ व्यवहार।
और कुछ और नहीं देखें
Aiui, वर्तमान सर्वसम्मति और / या काम करने का अभ्यास यह है कि कुछ "कमजोर" डॉक्टर योगदान पर विचार कर सकते हैं, उदाहरण के लिए, कुछ संक्षिप्त, शीघ्रता से लिखित सामग्री और / या डॉक्स के बाहर लिंक, MAY पेश किया जा सकता है यदि स्वयंसेवकों को तत्काल परिवर्तन महसूस होता है कि उन्हें प्रतिबिंबित किया जाए। एक उपयोगकर्ता (जैसे इस SO) द्वारा उठाए गए कुछ चिंता और "कमजोर" परिवर्तन करने से कुछ भी नहीं करने से बेहतर होगा। आप निश्चित रूप से इसे सुधारने के लिए एक पीआर कर सकते हैं (या इसे वापस करने के लिए अगर आपको वास्तव में लगता है कि एक बदलाव इतना "कमजोर" है कि यह और भी बदतर बना देता है)।
2019.11 में परिवर्तन का संदर्भ मेरी गिनती से 7 महीने है
(यह ऐसा ही कुछ मेरे गिनती से भी, हालांकि मैं एक संकलक व्यवहार में एक ही ब्रेक के साथ 2019/03/01 होने का दावा देखा है है। [3] )
मुझे लगता है कि जेजे ने डॉक परिवर्तन किया और उन्होंने सिर्फ इस बारे में गलत टिप्पणी की कि बदलाव के लिए कैसे अनुकूल है। मुझे वर्तमान में लगता है कि यह कुछ भी नहीं से बेहतर है लेकिन आप इसे अद्यतन करने के लिए तत्पर हैं। :)
फुटनोट
[१] लैरी ने पहली बार अपने २००० "स्टेट ऑफ़ द ओनियन" भाषण में राकू की अगुवाई में परियोजना की घोषणा करने के कुछ ही मिनटों बाद कहा था :
प्रश्न: क्या [Raku] चश्मा है?
लैरी: जिसे हम विशेष रूप से तनाव देना चाहते हैं ... शायद इतना अधिक नहीं है [भाषा डिजाइन] हमारे वर्तमान प्रतिगमन परीक्षण को विकसित करने के रूप में कल्पना ... भाषा का वास्तव में क्या मतलब है और वास्तव में बाहर जाने और सभी नुक्कड़ का पता लगाने के सत्यापन परीक्षण में " और मेरे लिए यह वास्तव में बहुत अधिक महत्वपूर्ण है कि मानव पठनीय चीज़ में क्रिया क्या है।
[२] बेशक, रोस्ट केवल किसी दिए गए उपयोगकर्ता के लिए अच्छी तरह से काम करता है यदि इसके परीक्षण उपयोगकर्ता की जरूरतों को पर्याप्त रूप से कवर करते हैं। आर्न की समस्या दर्शाती है कि कैसे कवरेज में छेद आश्चर्यजनक हो सकते हैं। इन छेदों की चर्चा के लिए जैसा कि वे 2018 में खड़े थे, देखें ऐनक, संस्करण, परिवर्तन, और… टूटना । अच्छी खबर यह है कि रोस्ट रकु में लिखे गए बहुत सारे यूनिट टेस्ट हैं जो यह जांचने के लिए हैं कि विशेष मूल्यों के साथ भाव या निर्माण एक विशेष चीज करते हैं। इसलिए व्यक्तियों या निगमों के लिए टेस्ट कवरेज को बेहतर बनाने के लिए नए परीक्षणों में योगदान करना आसान है। और यह सभी संस्करण नियंत्रण (git) के अंतर्गत है, इसलिए कस्टम डाउनस्ट्रीम टैग, शाखाएं और कांटे व्यवहार्य, टिकाऊ और प्रबंधनीय हैं। (वास्तव में, यह है कि कैसे नए भाषा संस्करणों ( Christmas
, Diwali
, Eid
(?), आदि) प्रबंधित कर रहे हैं।)
[३] मैंने नियमित रूप से newclass is oldclass
सिंटैक्स दोनों काम (अपने लैपटॉप पर) का उपयोग करके बनाए गए एक नए वर्ग को पुन: रहित करने का प्रयास देखा है और ऐसा दावा करने वाले कंपाइलरों का उपयोग करके काम नहीं (प्रतिकृति पर) किया है 2019.03.1
। (संभवतः repl.it ने संकलक स्रोत कोड का एक संस्करण स्थापित किया है, या इसके साथ संकलित एक बाइनरी है, जो संकलक के संस्करण को अद्यतन किए जाने के तुरंत बाद मास्टर हेड से लिया गया है 2019.03.1
, जगह में ब्रेकिंग परिवर्तन के साथ। मैं ध्यान देता हूं कि उत्तर। ' t ने उनके ऑनलाइन राकू उत्तर को प्रचारित किया - मैंने इसे दुर्घटना से खोजा - इसलिए इस स्थिति के बारे में कुछ भी अनहोनी नहीं है, लेकिन इसने मेरे $RAKU.compiler.verbose-config
लिए काम की विधि / टूटे हुए आउटपुट में उपयोग की गई आवश्यकता को प्रबलित किया है।