कैरिज रिटर्न और लाइन फ़ीड की परिभाषा
- कैरिज रिटर्न (CR): कर्सर को उसी पंक्ति के बाएँ मार्जिन पर ले जाता है
- लाइन फ़ीड (LF): कर्सर को एक पंक्ति नीचे ले जाता है और पिछली पंक्तियों को ऊपर स्क्रॉल करता है
- न्यूलाइन (NL): कर्सर को एक पंक्ति नीचे ले जाकर बाएँ मार्जिन पर ले जाता है
अवलोकन
- CR और NL उपयोगी control characters हैं। NL सबसे सामान्य काम करता है, यानी टेक्स्ट की नई पंक्ति को बाएँ मार्जिन से शुरू करता है
- LF व्यवहारिक रूप से बेकार है। कोई भी पंक्ति के बीच से अगली पंक्ति में जाकर उसी कॉलम में लिखना जारी नहीं रखना चाहता
- LF की उत्पत्ति लगभग 70 साल पहले के यांत्रिक टेलीटाइपराइटर युग में हुई थी
ऐतिहासिक पृष्ठभूमि
- टेलीटाइपराइटर लगभग 5 सेकंड में 5 अक्षर प्रिंट करते थे
- CRLF की परंपरा 1950 के दशक के टेलीटाइपराइटर की यांत्रिक सीमाओं से निकली
- Multix और Unix के दौर में यह समझ फैल गई कि CRLF को NL की तरह इस्तेमाल करना अक्षम है
आधुनिक स्थिति
- आज CR को U+000d के रूप में, और LF तथा NL को U+000a के रूप में दर्शाया जाता है
- अधिकांश आधुनिक मशीनें U+000a का उपयोग केवल NL के रूप में करती हैं
- कुछ protocols अभी भी CRLF की मांग करते हैं, लेकिन अधिकांश software एकल NL को स्वीकार करता है
कार्रवाई का आह्वान
- U+000a code point का नाम "लाइन फ़ीड" के बजाय "न्यूलाइन" रखा जाए
- अनावश्यक CR भेजना बंद किया जाए
- जो protocols CRLF की मांग करते हैं, उन्हें केवल NL भेजा जाए
- ऐसे software को ठीक किया जाए जो CR के बिना NL मिलने पर error देता है
सारांश और लेखक
- CRLF का अंत बहुत पहले हो जाना चाहिए था। इस पुराने अवशेष को हटाने के लिए हमें मिलकर काम करना चाहिए
- लेखक: D. Richard Hipp, SQLite के संस्थापक
# GN⁺ का संक्षेप
- यह लेख CRLF की ऐतिहासिक पृष्ठभूमि और आधुनिक अक्षमताओं को समझाता है, और इसे समाप्त करने की अपील करता है
- CRLF यांत्रिक सीमाओं से निकली एक परंपरा है, जो आज अनावश्यक जटिलता पैदा करती है
- यह विषय खास तौर पर programmers और software developers के लिए उपयोगी हो सकता है, और कुशल data transmission के लिए महत्वपूर्ण है
- समान कार्यक्षमता वाले अन्य protocols या systems का उपयोग करते समय भी CRLF की आवश्यकता पर फिर से विचार करने की ज़रूरत है
8 टिप्पणियां
मैं कभी-कभी line feed का इस्तेमाल करता हूँ....
काफी उग्र है, हद है lol
14 अक्टूबर के संशोधन के अनुसार, कहा जा रहा है कि बदलाव के प्रस्ताव को वापस ले लिया गया है.
यह केवल एक सिस्टम बदलने की बात नहीं थी, बल्कि प्रोटोकॉल और उससे प्रभावित सभी सिस्टमों को चरणबद्ध तरीके से बदलना पड़ता, इसलिए मुझे लगता है कि लेखक ने पर्याप्त सावधानी नहीं बरती थी.
क्या उन्हें लगा कि इसे हटाने में होने वाली लागत से, इसे हटाने से मिलने वाला फ़ायदा ज़्यादा है?
CR+LF का एक लंबा इतिहास है...
ओह.. तो इसकी यही वजह है..
यह कोई गलत तरीके से परिभाषित specification भी नहीं है, बल्कि उस समय के hardware environment को दर्शाता है...
लगता है कि backward compatibility को भूलकर सिर्फ़ इसी पल के बारे में सोचा जा रहा है।
क्या hardware specification बदलने पर हमें हर बार protocol को पूरी तरह बदल देना चाहिए?
इसे हटाने के पक्ष में भी नहीं हूँ और विरोध में भी नहीं।
पता नहीं क्यों, लेकिन Millennium bug याद आ गया?
Hacker News राय
\r\nकी जगह\nइस्तेमाल करने के लिए अपडेट किया गया, लेकिन इससे Zig के HTTP client के साथ compatibility टूट गई.gitattributefile का इस्तेमाल सिखाना चाहिए, और Byte Order Mark से नफ़रत करना भी सिखाना चाहिए