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

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

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

खास जानकारी

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

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

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

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

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

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

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

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

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

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

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

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

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

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