मैं नोड के नए स्थिर संस्करण की रिलीज की घोषणा करते हुए प्रसन्न हूं।
इस पर स्विच करने से कई क्षेत्रों में महत्वपूर्ण सुधार होता है, जो एपीआई में सुधार, उपयोग में आसानी और पिछड़ेपन पर केंद्रित है।
V0.8 की तुलना में महत्वपूर्ण एपीआई परिवर्तनों के बहुत संक्षिप्त अवलोकन के लिए, कृपया
एपीआई परिवर्तन विकि पृष्ठ पढ़ें।
Streams2
पिछले ब्लॉग पोस्ट में, हमने आपको
Streams2 नामक एपीआई परिवर्तनों से
परिचित कराया । यदि आपके पास उनका निरीक्षण करने का समय नहीं था, तो कृपया कम से कम तत्कालीन उपधारा
"tl; ड्र" पढ़ें
।थ्रेड इंटरफ़ेस में परिवर्तन लंबे समय से तैयार किए गए हैं। नोड के शुरुआती दिनों से, हम सभी को यह पता लग गया था
कि " डेटा की
घटनाएँ तुरंत आने लगती हैं"
और "कॉलिंग पॉज़ () जरूरी नहीं कि एक
प्रभाव हो" - यह भयानक और अनावश्यक कचरा है। 0.10 संस्करण में, हमने अंत में कड़ी मेहनत की और थ्रेड व्यवहार में सुधार के लिए बड़े बदलाव किए।
इससे भी महत्वपूर्ण बात, अब नोड कोर में सभी धागे आसानी से एक्स्टेंसिबल कोर कक्षाओं के एक ही सेट पर आधारित हैं, इसलिए उनका व्यवहार बहुत अधिक अनुमानित हो गया है, और आपके स्वयं के उपयोगकर्ता कार्यक्रमों के लिए स्ट्रीम इंटरफेस का निर्माण अभूतपूर्व रूप से सरल हो गया है।
सही मायने में, स्ट्रीम 2 एपीआई को विकसित किया गया था क्योंकि इसका उपयोग एनपीएम रजिस्ट्री से मॉड्यूल के लिए किया गया था। वर्तमान में,
37 प्रकाशित नोड मॉड्यूल पहले से ही उनकी निर्भरता के रूप में
पठनीय-धारा पुस्तकालय का उपयोग करते हैं। Npm के लिए पठनीय-स्ट्रीम पैकेज आपको अपने पुराने v0.8 कोड में स्ट्रीम इंटरफ़ेस के नए रूप का उपयोग करने की अनुमति देता है।
त्रुटि डोमेन और त्रुटि हैंडलिंग
डोमेन मॉड्यूल की स्थिति "प्रयोगात्मक"
से "अस्थिर" में अपग्रेड की गई है
। मॉड्यूल आंतरिक रूप से अतिरिक्त प्रथम श्रेणी के प्रसंस्करण से गुजरा है, जो
संस्करण v0.8 के ऊपर त्रुटियों को संभालने के लिए इस मॉड्यूल का उपयोग करते समय मनाया जाने वाले कई सीमा मामलों में इसके उपयोग को सरल करेगा
। विशेष रूप से, डोमेन-आधारित त्रुटि से निपटने की
प्रक्रिया पर निर्भर नहीं करता है
। ('uncaughtException') हैंडलर
, और नोड में
C ++ कोड अब डोमेन जागरूक है।
यदि आपने पहले अपने कार्यक्रमों में पकड़ने में डोमेन त्रुटि का उपयोग नहीं किया है, लेकिन कभी-कभी फेंकी गई त्रुटियों के बारे में बेहतर डिबगिंग जानकारी प्राप्त करना चाहते हैं (विशेषकर बहुत सारे अनुरोधों और अतुल्यकालिक कॉल के बीच में), तो आपको इस मॉड्यूल को जरूर आज़माना चाहिए।
तेजी से प्रक्रिया .nextTick
संस्करण 0.8 (और पहले) में,
process.nextTick ( ) फ़ंक्शन ने कॉलबैक फ़ंक्शन को इवेंट कतार में रखा। इससे
आमतौर पर I / O संचालन से पहले
कॉलबैक शुरू हो जाता है
। हालांकि, इस तरह के व्यवहार की गारंटी नहीं थी।
परिणामस्वरूप, कई कार्यक्रमों में (और नोड इंजन के कुछ हिस्सों में) इंटरफ़ेस के रूप में
process.nextTick का उपयोग "बाद में करते हैं - लेकिन असली
I / O शुरू होने से पहले" शुरू हो गया है
। और चूंकि सब कुछ आमतौर पर इस तरह से हुआ, यह दृष्टिकोण उपयुक्त लग रहा था।
हालाँकि, लोड के तहत, सर्वर के लिए इतने सारे
I / O संचालन को कतार में
रखना संभव था, जो
अगली बार के माध्यम से स्थानांतरित
किए गए कॉल वापस धकेल
दिए गए थे । और इससे हास्यास्पद गलतियां हुईं, एक दौड़ की स्थिति पैदा हुई - और इसे ठीक करने का कोई तरीका नहीं था, जब तक कि आप नेक्स्टटीक के शब्दार्थ को बदल नहीं दिया।
इसलिए हमने वही किया। 0.10 संस्करण में,
अगली कॉल हैंडलर प्रत्येक कॉल के तुरंत बाद
सी ++ से जावास्क्रिप्ट तक होता है। और इसका मतलब यह है कि यदि आपके जावास्क्रिप्ट कोड में
process.nextTick
कहा जाता है
, तो मुख्य कोड के संसाधित होने के तुरंत बाद स्थानांतरित कॉलबैक फ़ंक्शन शुरू हो जाएगा - घटना कतार के प्रसंस्करण शुरू
होने से
पहले । दौड़ पूरी हुई। सब ठीक है।
हालांकि, ऐसे अन्य कार्यक्रम थे जो पुनरावर्ती कॉल
प्रक्रिया का उपयोग करते थे
। Ixt / I / O ईवेंट्स की कतार में काम करने तक लंबी अवधि के कम-प्राथमिकता वाले कार्यों में अगले चरण में देरी करने के लिए क्लिक करें
। ताकि कुछ भी न टूटे, नोड इंजन अब इस स्थिति के बारे में एक चेतावनी प्रिंट करेगा और आपको इस तरह के कॉल के लिए नए
सेटमीडिएट फ़ंक्शन पर स्विच करने के लिए
कहेगा ।
खाली समय प्रतिक्रिया और कचरा संग्रह
कचरा संग्रह पर भरोसा करने वाली भाषाओं में, इसे सही तरीके से कॉन्फ़िगर करना आसान हो सकता है। अनावश्यक मेमोरी उपयोग से बचने के लिए, नोड इंजन ने पहले V8 इंजन को यह बताने की कोशिश की थी कि जब भी घटना की कतार खाली होती है तो कचरा उठाता है।
दुर्भाग्य से, ऐसी आवश्यकता होने पर वास्तव में जानना बहुत मुश्किल है। "खाली समय"
बहुत मुक्त नहीं हो सकता है, और यदि आप कोई गलती करते हैं, तो आप सबसे अप्रत्याशित समय पर कचरा इकट्ठा करने में बहुत समय बिता सकते हैं। व्यवहार में, यह पता चला है कि
IdleNotification कॉल को अक्षम करने से बेहतर प्रदर्शन होता है, लेकिन अधिक मेमोरी उपयोग के लिए नहीं, क्योंकि कचरा संग्रह शुरू करने के लिए V8 इंजन खुद को अच्छी तरह जानता है।
इसलिए संस्करण 0.10 में हमने इस कॉल को उठाया। (इस तरह का एक दृष्टिकोण है कि हमें बग से छुटकारा मिल गया, जो कि शुरुआत से ही इस कॉल का बहुत उपयोग था।) नतीजतन, प्रतिक्रिया समय अधिक अनुमानित और अधिक स्थिर हो गया। नतीजतन, आप बेंचमार्क में अंतर नहीं देखेंगे, हालांकि, आप शायद पाएंगे कि आपके आवेदन की प्रतिक्रिया का समय अधिक विश्वसनीय हो गया है।
प्रदर्शन और बेंचमार्क
अनुवादक का ध्यान दें: जब तक मुझे पता है, हबराब्र पर, एकल-चौड़ाई वाले फ़ॉन्ट में लिखे गए पाठों के ब्लॉक में पृष्ठभूमि को बदलने के लिए किसी भी सहने योग्य साधन पर नहीं है। इसलिए, मैं इस उपधारा को संख्याओं के ढेर के साथ अनुवाद करने से बचूंगा - इसे मूल स्रोत में पढ़ें, जिसे इसकी आवश्यकता है। इसका सार यह है कि नोड इंजन के प्रदर्शन में इसके संभावित अनुप्रयोगों की संख्या में वृद्धि हुई है, लेकिन कुछ में कमी आई है (उदाहरण के लिए, बफर और UTF-8 तार नेटवर्क के माध्यम से थोड़ा धीमा भेजे जाते हैं)।
निरंतर एकीकरण
कोड स्थिरता का एक उच्च स्तर बनाए रखने के लिए (और पहले पकड़ने वाली त्रुटियों के लिए आशा करने के लिए), हम जेनकिन्स का उपयोग करते हैं, जो प्रत्येक समर्थित ऑपरेटिंग सिस्टम पर परीक्षणों के एक सेट के माध्यम से हर कमिट को चलाता है। आप इसे
नोड जेनकिन्स वेब पोर्टल पर देख सकते हैं।
जल्द ही, हम
रात के निर्माण की दैनिक ऑटो-पीढ़ी शुरू करेंगे
, और अंततः नोड के नए संस्करणों को जारी करने की पूरी प्रक्रिया स्वचालित होगी।
हालांकि डेवलपर्स ने मैन्युअल और निजी दृष्टिकोण के साथ परीक्षण और बेंचमार्क का उपयोग किया, लेकिन कुछ कमियों को नजरअंदाज किया जा सकता है। उत्पाद का सामान्य स्वचालित परीक्षण उत्पाद की गिरावट को रोक देगा, जैसे कि
जिसके कारण 0.10 को रिलीज करने में कई महीनों तक देरी हुई
थी ।
बाहरी विकास
एक साल पहले, हमने घोषणा की कि नोड दुनिया में नवाचार कस्टम मॉड्यूल के क्षेत्र में होने लगेंगे। अब हमने इस राय को इसके तार्किक रूप से पूर्ण रूप में मूर्त रूप दिया है, जिसमें नोड
आंतरिक मॉड्यूल के नए संस्करणों को कस्टम के रूप में विकसित किया गया है। इस रूप में
पठनीय-धारा और tlsnappy मॉड्यूल की उपस्थिति ने उन्हें अधिक उपयोगकर्ता परीक्षण, प्रयोग, कोड दान प्राप्त करने की अनुमति दी।
इस तरह के एक मॉड्यूल को एक संगतता परत के रूप में इस्तेमाल किया जा सकता है, पुस्तकालयों को नई नोड सुविधाओं का सहारा लेने की अनुमति देता है, भले ही यह नोड इंजन के पुराने संस्करणों का समर्थन करने के लिए आवश्यक हो। नोड आंतरिक मॉड्यूल के लिए यह विकास पथ बेहद प्रभावी है। उपयोगकर्ता मॉड्यूल के रूप में भविष्य के विकास का आगे विकास जारी रहेगा।
बढ़ता जा रहा है
यह अक्सर ब्याज के साथ पूछा जाता है कि क्या नोड इंजन वर्तमान मामले के लिए तैयार है। मैं आमतौर पर उत्तर देता हूं कि यह आपके वर्तमान मामले की आवश्यकताओं पर निर्भर करता है, और कई अत्यधिक भरी हुई साइटें नोड पर काम करती हैं, और
व्यापार में नोड का उपयोग करने वाली "वास्तविक" कंपनियों की क्षमता पहले
से कहीं अधिक बढ़ गई है।
नोड का उपयोग करने वाली कंपनियों की एक पूरी सूची, और समर्थन और प्रशिक्षण विकल्पों की एक पूरी सूची देने के लिए यहां पर्याप्त जगह नहीं है। हालांकि, यहां कुछ विकल्प दिए गए हैं जो एंटरप्राइज स्पेस के लिए नोड को तेजी से बढ़ा रहे हैं और भर रहे हैं।
स्ट्रॉन्ग्लोपॉप (बेन नोरधुइज़ और बर्ट बेल्डर की एक कंपनी), जिन्होंने एक वितरण
पैकेज जारी किया जिसमें
Node v0.10 शामिल था, जिसे वे विंडोज़ पर, मैक पर, Red Hat / Fedora पर, डेबियन / उबंटू पर और कई क्लाउड प्लेटफ़ॉर्म पर समर्थन प्रदान करेंगे, वाणिज्यिक सहायता
चाहने वालों के लिए काम में आएंगे। आप
वहां उनके नोड वितरण को डाउनलोड कर सकते हैं।
नोड फर्म दुनिया भर में प्रमुख नोड कोड लेखकों और समुदाय के सदस्यों के कारोबार को सफलतापूर्वक नोड का उपयोग करने में मदद करने के लिए एक विश्वव्यापी संगठन है। वे स्टाफ प्रशिक्षण सेवाएं, परामर्श, वास्तु मार्गदर्शन,
परामर्श के लिए सदस्यता प्रदान करते हैं , जिससे स्काइप, क्वालकॉम और अन्य ग्राहकों को जल्दी और कुशलता से डायोड सीखने में मदद मिली।
एनओडी अपने वर्तमान रूप में
एनपीएम के बिना अकल्पनीय है, और एनपीएम प्रकाशित मॉड्यूल की अपनी रजिस्ट्री के बिना। हालांकि, कई व्यवसायों के लिए, सार्वजनिक रजिस्ट्री पर भरोसा करना समस्याग्रस्त है।
आईरिस एनपीएम ,
आईरिस काउच से पूरी तरह से प्रबंधित निजी
एनपीएम रजिस्ट्री प्रदान करता है
, जो टीम सार्वजनिक
एनपीएम रजिस्ट्री को बनाए रखने के लिए जिम्मेदार है
।जॉयंट - कंपनी को शायद आपको नोड प्रोजेक्ट के संरक्षक के रूप में जाना जाता है - एक उच्च-प्रदर्शन क्लाउड इन्फ्रास्ट्रक्चर प्रदान करता है, जो वेबसाइट निर्माण और मोबाइल उपकरणों के लिए वास्तविक समय के अनुप्रयोगों में विशेषज्ञता रखता है। जॉयंट अपने इंजीनियरिंग समाधानों में नोड का व्यापक उपयोग करता
है और क्रैश और एनओडी.जेएस पर अनुप्रयोगों के लिए
वास्तविक समय प्रदर्शन विश्लेषण के
बाद डिबगिंग अनुप्रयोगों के लिए प्रभावशाली
उपकरण भी प्रदान करता है। जॉयंट मेरे नियोक्ता भी हैं, इसलिए मुझे "वास्तविक" नौकरी की तलाश करनी होगी अगर वे
नोड प्रायोजक नहीं थे
:)आगे क्या है: v0.12
Node v0.12 का विकास HTTP को बेहतर बनाने पर केंद्रित होगा। नोड में HTTP का वर्तमान कार्यान्वयन काफी अच्छा है, और यह कई दिलचस्प अनुप्रयोगों के लिए काफी पर्याप्त है। हालांकि:
- स्रोत कोड अत्यधिक भ्रामक है। सर्वर और क्लाइंट में बहुत सारे कोड का एक साथ उपयोग किया जाता है, लेकिन इस तरह से कि इसे पढ़ने के लिए अप्रिय है, न कि फिक्सिंग बग्स का उल्लेख करने के लिए। सर्वर और क्लाइंट कोड का अलगाव होगा, उनके इंटरफेस अधिक स्पष्ट हो जाएंगे।
- सॉकेट पूछताछकर्ता का व्यवहार हैरान और अस्वाभाविक है। हम इसे विन्यास करेंगे और इसे एक अलग उपयोगिता में डालेंगे। यह KeepAlive के व्यवहार को अधिक उचित बनायेगा, साथ ही इन सभी तत्वों को आपके स्वयं के कार्यक्रमों में प्रयोग करने योग्य बना देगा।
Tlsnappy मॉड्यूल पर प्रयोग चल रहे हैं, जो भविष्य में TLS का आंतरिक कार्यान्वयन बन सकता है और इस व्यवसाय को काफी गति प्रदान कर सकता है।
1.0
0.12 के बाद, अगला प्रमुख स्थिर रिलीज 1.0 होगा। उस समय, परियोजना के दैनिक कार्यों में बहुत कुछ नहीं बदलेगा, हालांकि, यह संस्करण स्थिरता का एक महत्वपूर्ण मील का पत्थर बन जाएगा और नई सुविधाओं को पेश करने की इच्छा में कमी होगी। हालाँकि, इसके बिना भी हम पिछड़े अनुकूलता के लिए कड़ाई से प्रयास कर रहे हैं, ताकि इस में परिवर्तन भी मजबूत न हो।
नए संस्करण, हालांकि, विशेष रूप से उन घटकों के नए संस्करणों के रूप में जारी किए जाते रहेंगे, जिन पर नोड आधारित है, और जारी किए जाएंगे। उन्होंने V8 के लिए नोड रिलीज़ साइकल को जोड़ने और नए संस्करणों को जारी करने की प्रक्रिया को स्वचालित करने के लिए कुछ दिलचस्प संभावनाओं पर चर्चा की।
नोड का लक्ष्य हमेशा, मुख्य कार्यक्रम की "अंतिम" स्थिति को प्राप्त करना रहा है। बेशक, यह स्तर बहुत अधिक है, और अप्राप्य भी नहीं है। लेकिन जैसे-जैसे नोड अधिक व्यापक रूप से तैनात होता जाता है और नोड अनुप्रयोगों की विविधता बढ़ती जाती है, हम उस दिन के करीब आ रहे हैं जब कोर नोड कार्यक्रम के बाहर महत्वपूर्ण नवाचार होने लगते हैं।
मंच की स्थिरता इसके शीर्ष पर विकास प्रदान करती है।
और अब - पारंपरिक रिलीज रिपोर्ट:
11 मार्च 2013, संस्करण 0.10.0 (स्थिर)
- npm: संस्करण 1.2.14 में अपग्रेड
- कोर: विंडोज के तहत dlopen में फ़ाइल नाम को सही ढंग से पूरक (isaacs)
- zlib: खाली झंडे (isaacs) को सही ढंग से संभालें
- डोमेन: नेस्टेड एरर हैंडलर (इसाक्स) में डाली गई एरर हैंडल
- बफर: स्पष्ट उच्च बिट्स जब ASCII (बेन नूरुधिस) में परिवर्तित होता है
- जीत / मिस्सी: अनलॉक संशोधन और वसूली (बर्ट बेल्डर)
- जीत / मिस्सी: नोड चयन (बर्ट बेल्डर) के कुछ हिस्से बनाएं
- जीत / मिस्सी: रजिस्ट्री में कुंजियों के लिए मार्ग की दृढ़ता (बर्ट बेल्डर)
- child_process: डीग्राम सॉकेट (एंड्रियास मैडसेन) भेजने का समर्थन
- fs: एक निर्देशिका के लिए fs.read/write (isaacs) को लागू करते समय विंडोज पर एक EISDIR त्रुटि होगी
- यूनिक्स: सख्त अलियासिंग चेतावनियों को हटा दें, मैक्रोफिक्स फ़ंक्शंस (बेन नूर्डहिस)
- यूनिक्स: पर्यावरण चर का सम्मान करें UV_THREADPOOL_SIZE (बेन नूरुहिस)
- जीत / ट्टी: रंग विशेषता गणन (बर्ट बेलर) में टाइपो को ठीक करें
- विन / ट्टी: इंसर्ट या क्विक एडिट मोड (बर्ट बेल्डर) को न छुएं