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

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

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 की समस्या होनी चाहिए.

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

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

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

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

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