स्टारलाक रोडमैप

किसी समस्या की शिकायत करें स्रोत देखें

पिछली बार पुष्टि किए जाने की तारीख: 21-04-2020 (अपडेट का इतिहास)

संपर्क का स्थान: लौरेंटल

लक्ष्य

हमारा लक्ष्य Bazel को ज़्यादा एक्सटेंसिबल बनाना है. उपयोगकर्ताओं को आसानी से अपने नियम लागू करने के साथ-साथ नई भाषाओं और टूल के साथ काम करने में मदद करनी चाहिए. हम लिखने और उन नियमों को बनाए रखने के अनुभव को बेहतर बनाना चाहते हैं.

हम दो चीज़ों पर फ़ोकस करते हैं:

  • भाषा और एपीआई को इस्तेमाल करने के तरीके को आसान और असरदार बनाएं.
  • कोड पढ़ने, लिखने, अपडेट करने, डीबग करने, और उसकी जांच करने के लिए बेहतर टूल उपलब्ध कराएं.

2020 की दूसरी तिमाही

स्वास्थ्य और सबसे सही तरीके तैयार करना:

  • पी0 बिना किसी नाम के मैक्रो को कोई नाम न दें. साथ ही, यह पक्का करें कि उनका नाम एक खास स्ट्रिंग लिटरल हो. यह Google कोडबेस पर फ़ोकस करता है, लेकिन सार्वजनिक रूप से उपलब्ध टूल पर असर डाल सकता है.
  • पी0 सेलेक्ट और वैरिएबल के हिसाब से Buildozer निर्देश भरोसेमंद बनाएं.
  • पी1. उन सूचियों में मौजूद डुप्लीकेट बनाने वाले को हटा दें जिन्हें हम टिप्पणियों की वजह से क्रम से नहीं लगाते.
  • पी1. छोटे अक्षरों को इनलाइन करने का सुझाव देने के लिए, Buildifier लिंटर को अपडेट करें.
  • पी2. देशी.मौजूदा_नियमों और उपयोग के विकल्पों के लिए इस्तेमाल के उदाहरणों का अध्ययन करें.
  • पी2. प्रस्तावना फ़ाइल और प्रस्तावित विकल्पों के लिए उपयोग के मामलों का अध्ययन करें.

परफ़ॉर्मेंस:

  • पी1. फ़्लैट एनवायरनमेंट और बाइटकोड कंपाइलेशन का इस्तेमाल करके, Starlark अनुवादक को ऑप्टिमाइज़ करें.

तकनीकी क़र्ज़ में कमी:

  • पी0 @bazel_tools के नीचे Starlark में नेटिव सिंबल पोर्ट करने की सुविधा जोड़ें.
  • पी1. पुराने हो चुके फ़्लैग हटाएं (इनमें से कुछ Google में अब भी इस्तेमाल किए जाते हैं, इसलिए हमें पहले कोडबेस को साफ़ करना होगा): incompatible_always_check_depset_elements, incompatible_disable_deprecated_attr_params, incompatible_no_support_tools_in_action_inputs, incompatible_new_actions_api.
  • पी1. पक्का करें कि नीचे दिए गए फ़्लैग को Bazel 4.0: incompatible_disable_depset_items, incompatible_no_implicit_file_export, incompatible_run_shell_command_string, incompatible_restrict_string_escapes में फ़्लिप किया जा सकता हो.
  • पी1. lib.syntax के काम को पूरा करें (एपीआई क्लीनअप, Bazel से अलग करना).
  • पी2. Bazel के Java पैकेज की सामान्य बदलाव की वजह से, बिल्ड+टेस्ट के इंतज़ार के समय को 50% कम करें.

कम्यूनिटी:

  • rules_python सक्रिय है और समुदाय उसका रखरखाव करता है.
  • Rules_jvm_external के लिए लगातार सहायता (पुल के किसी अनुरोध, खास समस्या के लिए, प्राथमिकता तय करना, और रिलीज़ बनाना).
  • Bazel से जुड़े दस्तावेज़ का इन्फ़्रास्ट्रक्चर बनाए रखें: सीएसएस स्टाइल को एक ही जगह से, बेज़ल-वेबसाइट, bazel-blog, और Docs में कैननिकल बनाएं
  • बेज़ल दस्तावेज़: प्रतिगमन रोकने के लिए e2e दस्तावेज़ साइट बनाने के लिए CI परीक्षण जोड़ें.

2020 की पहली तिमाही

स्वास्थ्य और सबसे सही तरीके तैयार करना:

  • bazel query के ज़रिए एक्सपोर्ट करने के लिए, टारगेट को उनका मैक्रो कॉल स्टैक ट्रैक करने की अनुमति दें
  • --incompatible_no_implicit_file_export लागू करें
  • रोके गए डिपसेट एपीआई (#5817, #10313, #9017) को हटाएं.
  • Buildifier में एक क्रॉस फ़ाइल विश्लेषक जोड़ें, काम नहीं करने वाले फ़ंक्शन के लिए चेक लागू करें.

परफ़ॉर्मेंस:

  • Bazel की अपनी Java-आधारित जांच को दोगुना तेज़ करें.
  • Starlark सीपीयू प्रोफ़ाइलर को लागू करें.

तकनीकी क़र्ज़ में कमी:

  • ध्यान न देने वाले आठ फ़्लैग हटाएं (उन्हें फ़्लिप करने के बाद).
  • lib.syntax क्लीनअप का काम खत्म करें (ब्रेक डिपेंडेंसी).
  • Starlark ऑप्टिमाइज़ेशन: फ़्लैट एनवायरमेंट, बाइट कोड कंपाइलेशन
  • अगर संभव हो, तो विश्लेषण के चरण से सभी सीरीज़ मिटाएं
  • lib.packages को आसान बनाने/ऑप्टिमाइज़ करने की योजना बनाएं

कम्यूनिटी:

  • शब्दावली प्रकाशित करें, जिसमें Bazel से जुड़े सभी खास शब्दों की परिभाषाएं शामिल हैं