ब्रॉटली

ब्रॉटली गूगल द्वारा विकसित एक दोषरहित संपीड़न है। यह सामान्य प्रयोजन LZ77 और LZ78 दोषरहित संपीड़न एल्गोरिथ्म, हफ़मैन कोडिंग और 2-ऑर्डर संदर्भ मॉडलिंग के संयोजन का उपयोग करता है। ब्रॉटली का उपयोग मुख्य रूप से वेब सर्वर और कंटेंट डिलीवरी नेटवर्क द्वारा एचटीटीपी संपीड़न के लिए किया जाता है, जिससे इंटरनेट वेबसाइटें तेजी से लोड होती हैं। गज़िप का उत्तराधिकारी, यह सभी प्रमुख वेब ब्राउज़रों द्वारा समर्थित है और तेजी से लोकप्रिय हो गया है, क्योंकि यह गज़िप की तुलना में उत्तम संपीड़न प्रदान करता है।

इतिहास
गूगल के एम्प्लोयी जिरकी अलाकुइजाला और ज़ोल्टन स्ज़ाबादका ने प्रारंभ में वेब ओपन फ़ॉन्ट प्रारूप वेब फ़ॉन्ट के प्रसारण के आकार को कम करने के लिए 2013 में ब्रॉटली विकसित किया था। अलाकुइजाला और स्ज़ाबादका ने 2013 के समय ब्रॉटली विनिर्देश पूरा किया–2016. विनिर्देश के साथ दो अतिरिक्त लेखकों एवगेनी क्लिउचनिकोव और लॉड वांडेवेन द्वारा विकसित एक संदर्भ कार्यान्वयन भी सम्मिलित था, जिन्होंने पहले 2013 में DEFLATE और गज़िप संगत संपीड़न के गूगल के ज़ोपफ़्लि कार्यान्वयन को विकसित किया था। ज़ोफ़्फ़्ली के विपरीत जो उपस्थित डेटा प्रारूप विनिर्देश का पुन: कार्यान्वयन था, ब्रॉटली एक नया डेटा प्रारूप था और लेखकों को संपीड़न अनुपात को और भी उत्तम बनाने की अनुमति देता था।

एचटीटीपी स्ट्रीम संपीड़न (कंटेंट-एन्कोडिंग टाइप br) के लिए सितंबर 2015 में ब्रॉटली विनिर्देश को सामान्यीकृत किया गया था। इस सामान्यीकृत पुनरावृत्ति ने अधिकांशतः उपयोग किए जाने वाले शब्दों और वाक्यांशों के पूर्वनिर्धारित शब्दकोश का उपयोग करके संपीड़न अनुपात में भी सुधार किया। गूगल सॉफ़्टवेयर इंजीनियरों द्वारा सितंबर 2015 में जारी किए गए ब्रॉटली के संस्करण में सामान्य लोसलेस डेटा संपीड़न में संवर्द्धन सम्मिलित था, जिसमें एचटीटीपी संपीड़न के उपयोग पर विशेष जोर दिया गया था। एनकोडर को आंशिक रूप से फिर से लिखा गया था, जिसके परिणामस्वरूप संपीड़न अनुपात में सुधार हुआ, एनकोडर और डिकोडर दोनों में तेजी आई है, स्ट्रीमिंग एपीआई में सुधार हुआ है, और अधिक संपीड़न गुणवत्ता स्तर जोड़े गए हैं। इसके अतिरिक्त नई रिलीज़ डिकोडिंग मेमोरी में कमी के साथ सभी प्लेटफार्मों पर प्रदर्शन में सुधार दिखाती है।

इंटरनेट इंजीनियरिंग टास्क फोर्स ने टिप्पणियों के लिए सूचनात्मक अनुरोध के रूप में ब्रॉटली संपीड़ित डेटा प्रारूप विनिर्देश को स्वीकृति दे दी जुलाई 2016 में. ब्रॉटली डेटा प्रारूप वेब ओपन फ़ॉन्ट प्रारूप के दूसरे पुनरावृत्ति का एक अभिन्न अंग है, जिसे W3C में फ़ॉन्ट प्रौद्योगिकी मानकीकरण के लिए नेशनल एकेडमी ऑफ टेलीविज़न आर्ट्स एंड साइंसेज से 2021 प्रौद्योगिकी और इंजीनियरिंग एमी पुरस्कार में मान्यता दी गई थी।

पिछले कुछ वर्षों में वेब ब्राउज़र में ब्रॉटली समर्थन जोड़ा गया है, जुलाई 2022 तक विश्व भर के 96% उपयोगकर्ता इस प्रारूप का समर्थन करने वाले ब्राउज़र का उपयोग कर रहे हैं।

2016 में ड्रॉपबॉक्स ने दुर्भावनापूर्ण क्लाइंट के विपरीत अधिक सुरक्षित होने की अपनी आवश्यकता को पूरा करने के लिए रस्ट में ब्रॉटली को फिर से प्रयुक्त किया। 2018 में उन्होंने विलुप्त सुविधा को प्रयुक्त किया जिससे कोई व्यक्ति ब्रॉटली संपीड़ित फ़ाइल में जोड़ सकते है।

एल्गोरिथम
ब्रॉटली का नया फ़ाइल प्रारूप इसके लेखकों को कई एल्गोरिथम और प्रारूप-स्तरीय सुधारों द्वारा डिफ्लेट में सुधार करने की अनुमति देता है: शाब्दिक और प्रतिलिपि दूरी के लिए संदर्भ मॉडल का उपयोग, पिछली दूरी के माध्यम से प्रतिलिपि दूरी का वर्णन, एन्ट्रॉपी कोड चयन में मूव-टू-फ्रंट केयूए का उपयोग, शाब्दिक और प्रतिलिपि लंबाई की संयुक्त-एन्ट्रॉपी कोडिंग, ब्लॉक विभाजन में ग्राफ़ एल्गोरिदम का उपयोग, और एक बड़ी बैकवर्ड संदर्भ विंडो उदाहरण सुधार हैं।

अधिकांश सामान्य प्रयोजन संपीड़न एल्गोरिदम के विपरीत, ब्रॉटली गतिशील रूप से पॉप्युलेट (स्लाइडिंग विंडो) शब्दकोश के अतिरिक्त, एक पूर्वनिर्धारित शब्दकोश का उपयोग करता है, जिसका आकार लगभग 120 केआईबी है। पूर्वनिर्धारित शब्दकोश में 13000 से अधिक सामान्य शब्द, वाक्यांश और टेक्स्ट और एचटीएमएल दस्तावेज़ों के एक बड़े टेक्स्ट संग्रह से प्राप्त अन्य उपस्ट्रिंग सम्मिलित हैं। पूर्वनिर्धारित शब्दकोश का उपयोग संपीड़न को बढ़ाने के लिए दिखाया गया है जहां फ़ाइल में अधिकतर समान्यत: उपयोग किए जाने वाले शब्द होते हैं। चूँकि, अलाकुइजाला के अनुसार, पूर्वनिर्धारित शब्दकोश ब्रॉटली की सामान्यता से विचलित नहीं होता है, और उत्तम संपीड़न का मुख्य कारण नहीं है। उनका प्रमाण है कि ऑल-ज़ीरो डिक्शनरी के साथ ब्रॉटली एल्गोरिथम की प्रगति के कारण अभी भी वेब कंटेंट पर अच्छा प्रदर्शन करता है।

ब्रॉटली की स्लाइडिंग विंडो 16 MiB तक सीमित है। यह सीमित संसाधनों वाले मोबाइल फोन पर डिकोडिंग को सक्षम बनाता है, किन्तु बड़ी फ़ाइलों वाले संपीड़न बेंचमार्क पर ब्रॉटली को व्यर्थ प्रदर्शन देता है। छोटी विंडो आकार की बाधाओं को बड़ी विंडो ब्रॉटली का उपयोग करके कम किया जा सकता है, जो RFC7932 (ब्रॉटली उचित) के साथ संगत नहीं है।

नाम
जबकि गूगल के डिफ्लेट कंप्रेशन एल्गोरिदम के ज़ोपफ़्लि कार्यान्वयन का नाम ज़ोपफ़ली के नाम पर रखा गया है, जो स्नैक-आकार के ज़ोपफ़ के लिए स्विस जर्मन शब्द है, ब्रोटली का नाम ब्रेड रोल या यूरोप के लिए स्विस जर्मन शब्द ब्रॉटली के नाम पर रखा गया है। गूगल का ब्रॉटली विनिर्देशन का कार्यान्वयन 2016 में अनुमेय मुफ्त सॉफ्टवेयर लाइसेंस माय लाइसेंस की नियमों के अनुसार जारी किया गया था। ब्रॉटली विनिर्देश का औपचारिक सत्यापन स्वतंत्र रूप से मार्क एडलर द्वारा कार्यान्वित किया गया था। ज़्लिब/गज़िप संपीड़न प्रारूप और लाइब्रेरी के सह-लेखकों में से एक एडलर का कार्यान्वयन समान अनुमेय अपाचे लाइसेंस की नियमों के अनुसार जारी किया गया था। विनिर्देश के अन्य कार्यान्वयन भी उपस्थित हैं, जिनमें स्रोत-से-स्रोत मिला हुआ लैंग्वेज भी सम्मिलित है।

अनुप्रयोग
ब्रॉटली संपीड़न का उपयोग सामान्यतः वेब पर गज़िप के विकल्प के रूप में किया जाता है, क्योंकि ब्रॉटली उत्तम समग्र संपीड़न प्रदान करता है। जीज़िप कम्प्रेशन की तुलना में, ब्रॉटली से संपीड़ित जावास्क्रिप्ट फ़ाइलें लगभग 15% छोटी होती हैं, एचटीएमएल फ़ाइलें लगभग 20% छोटी होती हैं, और CSS फ़ाइलें लगभग 16% छोटी होती हैं।

संदर्भ कार्यान्वयन gzip के समान एक कमांड-लाइन प्रोग्राम brotli शिप करता है किन्तु यूनिक्स जैसी दुनिया में एक साधारण कंप्रेसर के रूप में उपयोग दुर्लभ है। लिबर्चिव डेवलपर्स को  फ़ाइलों के रॉ स्ट्रीम प्रारूप का समर्थन करना मुश्किल लगता है, क्योंकि फ़ाइल प्रारूप को निरुपित करने के लिए कोई जादुई संख्या नहीं है

ब्राउज़र और अन्य क्लाइंट

 * मोज़िला फ़ायरफ़ॉक्स ने संस्करण 44 (26 जनवरी 2016 को जारी) में बीआर कंटेंट-एन्कोडिंग विधि के लिए समर्थन प्रस्तुत किया गया था।
 * गूगल Chrome ने संस्करण 50 (20 अप्रैल 2016 को जारी) से br कंटेंट-एन्कोडिंग विधि का समर्थन किया है।
 * ओपेरा (वेब ​​​​ब्राउज़र) ने संस्करण 38 (8 जून 2016 को जारी) के बाद से बीआर कंटेंट-एन्कोडिंग विधि का समर्थन किया है।
 * माइक्रोसॉफ्ट बढ़त ने संस्करण 15 (5 अप्रैल 2017 को जारी) से बीआर कंटेंट-एन्कोडिंग पद्धति का समर्थन किया है।
 * सफ़ारी (वेब ​​​​ब्राउज़र) ने संस्करण 11 (5 अक्टूबर 2017 को जारी) के बाद से बीआर कंटेंट -एन्कोडिंग विधि का समर्थन किया है।
 * 29 नवंबर 2017 को जारी संस्करण 7.57 के अनुसार लिब्रोटली का उपयोग करके br कंटेंट-एन्कोडिंग विधि का समर्थन करने के लिए cURL के पास एक संकलन-समय विकल्प है।
 * 7zip, 7zip-zstd द्वारा ब्रॉटली के साथ विस्तारित रूप में उपलब्ध है।
 * पीज़िप संपीड़न और निष्कर्षण के लिए ब्रॉटली .BR प्रारूप का समर्थन करता है

वेब सर्वर

 * अपाचे एचटीटीपी सर्वर के लिए, br कंटेंट-एन्कोडिंग विधि को संस्करण 2.4.26 से mod_brotli मॉड्यूल द्वारा समर्थित किया गया है।
 * माइक्रोसॉफ्ट आईआईएस के पास मई 2018 से एक समर्थित एक्सटेंशन है जो br कंटेंट-एन्कोडिंग विधि के लिए समर्थन जोड़ता है।
 * माइक्रोसॉफ्ट एज़्योर, ब्रॉटली का उपयोग करके किनारे पर कंटेंट को गतिशील रूप से संपीड़ित कर सकता है 17 अप्रैल, 2019 को लॉन्च होने के बाद से है ।
 * nginx के पास दिसंबर 2016 से गूगल द्वारा प्रदान किया गया एक ngx_brotli मॉड्यूल है।
 * Node.js में संस्करण 11.7.0 के बाद से एक अंतर्निहित देशी एन- और डिकोडर की सुविधा है, जिसका उपयोग br कंटेंट-एन्कोडिंग का समर्थन करने के लिए किया जा सकता है।
 * अमेज़ॅन क्लाउडफ्रंट सितंबर 2020 तक ब्रॉटली का उपयोग करके किनारे पर कैश करने योग्य प्रतिक्रियाओं को स्वचालित रूप से संपीड़ित कर सकता है।
 * लाइटस्पीड वेब सर्वर ने जुलाई 2017 में संस्करण 5.2 के बाद से केवल स्थिर फ़ाइलों के लिए बीआर कंटेंट-एन्कोडिंग विधि को सम्मिलित किया है।
 * क्लाउडफ्लार सीडीएन अपने एज नोड और उपयोगकर्ता के बीच डेटा को संपीड़ित करने के लिए एक ब्रॉटली विकल्प प्रदान करता है।
 * नेवीसर्वर ने संस्करण 4.99.17b1 में समर्थन जोड़ा
 * कैडी (वेब ​​​​सर्वर) 21 दिसंबर 2016 से संस्करण 0.9.4 के बाद से स्थिर रूप से संपीड़ित .br फ़ाइलें सर्व करता है।
 * lighttpd mod_deflate 1.4.56 से .br नवंबर 2020 से समर्थन करता है

संदर्भ

 * Notes



बाहरी संबंध

 * ब्रॉटली reference implementation at