पुराने सिस्टम के साथ काम करने की सुविधा

इस पेज पर, बैकवर्ड कंपैटिबिलिटी को मैनेज करने के तरीके के बारे में जानकारी दी गई है. इसमें एक रिलीज़ से दूसरी रिलीज़ पर माइग्रेट करने का तरीका और कंपैटिबल न होने वाले बदलावों के बारे में जानकारी देने का तरीका शामिल है.

Bazel में लगातार बदलाव हो रहे हैं. एलटीएस के मुख्य वर्शन के तहत रिलीज़ किए गए माइनर वर्शन, पूरी तरह से बैकवर्ड कंपैटिबल होते हैं. एलटीएस की नई मुख्य रिलीज़ में, कंपैटिबल न होने वाले बदलाव शामिल हो सकते हैं. इनके लिए, माइग्रेशन से जुड़ी कुछ कोशिशें करनी पड़ सकती हैं. Bazel के रिलीज़ मॉडल के बारे में ज़्यादा जानने के लिए, कृपया रिलीज़ मॉडल वाला पेज देखें.

खास जानकारी

  1. ब्रेकिंग बदलावों के लिए, --incompatible_* फ़्लैग इस्तेमाल करने का सुझाव दिया जाता है.
  2. हर --incompatible_* फ़्लैग के लिए, GitHub की समस्या में, व्यवहार में हुए बदलाव के बारे में बताया जाता है. साथ ही, माइग्रेशन के लिए निर्देश दिए जाते हैं.
  3. कंपैटिबल न होने वाले फ़्लैग को, एलटीएस की सबसे नई रिलीज़ में बैक-पोर्ट करने का सुझाव दिया जाता है. हालांकि, इन्हें डिफ़ॉल्ट रूप से चालू नहीं किया जाना चाहिए.
  4. --experimental_* फ़्लैग से सुरक्षित किए गए एपीआई और व्यवहार में कभी भी बदलाव किया जा सकता है.
  5. कभी भी --experimental_* या --incompatible_* फ़्लैग के साथ, प्रोडक्शन बिल्ड न चलाएं.

इस नीति का पालन करने का तरीका

स्थिर फ़ंक्शनैलिटी क्या है?

आम तौर पर, --experimental_... फ़्लैग के बिना एपीआई या व्यवहार को Bazel में स्थिर और काम करने वाली सुविधाएं माना जाता है.

इसमें इस तरह का कॉन्टेंट शामिल है:

  • Starlark भाषा और एपीआई
  • Bazel के साथ बंडल किए गए नियम
  • Bazel के एपीआई, जैसे कि रिमोट एक्ज़ीक्यूशन एपीआई या बिल्ड इवेंट प्रोटोकॉल
  • फ़्लैग और उनके सिमैंटिक्स

कंपैटिबल न होने वाले बदलाव और माइग्रेशन के लिए निर्देश

Bazel की टीम, नई रिलीज़ में कंपैटिबल न होने वाले हर बदलाव के लिए, माइग्रेशन के निर्देश देने की कोशिश करती है. इससे आपको अपना कोड अपडेट करने में मदद मिलती है. इसमें BUILD और .bzl फ़ाइलें, स्क्रिप्ट में Bazel का इस्तेमाल, Bazel API का इस्तेमाल वगैरह शामिल हैं.

कंपैटिबल न होने वाले बदलावों के लिए, --incompatible_* फ़्लैग और GitHub की समस्या होनी चाहिए.

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

कंपैटिबल न होने वाले बदलावों के बारे में जानकारी देना

कंपैटिबल न होने वाले बदलावों के बारे में जानकारी का मुख्य सोर्स, GitHub की समस्याएं हैं जिन पर "incompatible-change" लेबल लगा है.

कंपैटिबल न होने वाले हर बदलाव के लिए, समस्या में यह जानकारी दी जाती है:

  • कंपैटिबल न होने वाले बदलाव को कंट्रोल करने वाले फ़्लैग का नाम
  • बदली गई फ़ंक्शनैलिटी का ब्यौरा
  • माइग्रेशन के लिए निर्देश

जब कंपैटिबल न होने वाला कोई बदलाव, Bazel के HEAD के साथ माइग्रेट करने के लिए तैयार हो जाता है, तो उसे migration-ready लेबल से मार्क किया जाना चाहिए. इसलिए, Bazel की अगली रोलिंग रिलीज़ के साथ भी ऐसा किया जाना चाहिए. जब कंपैटिबल न होने वाले फ़्लैग को HEAD पर फ़्लिप किया जाता है, तब कंपैटिबल न होने वाले बदलाव की समस्या बंद हो जाती है.