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

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

संपर्क करने की जगह: Laurentlb

लक्ष्य

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

हम दो क्षेत्रों पर फ़ोकस करते हैं:

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

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

सेहत बनाएं और सबसे सही तरीके अपनाएं:

  • P0. बिना नाम वाले मैक्रो का इस्तेमाल न करें और पक्का करें कि नाम यूनीक स्ट्रिंग लिटरल हो. यह काम Google कोडबेस पर केंद्रित है, लेकिन सार्वजनिक रूप से उपलब्ध टूल पर इसका असर पड़ सकता है.
  • P0. चुनें और वैरिएबल के हिसाब से, Buildozer के निर्देशों को भरोसेमंद बनाएं.
  • P1. बिल्डिफ़ायर के ज़रिए सूचियों से डुप्लीकेट उन डुप्लीकेट को हटाएं जिन्हें हम टिप्पणियों की वजह से सॉर्ट नहीं करते.
  • P1. छोटे-छोटे एक्सप्रेशन को इनलाइन करने के लिए, बिल्डिफ़ायर लिंटर को अपडेट करें.
  • P2. Native.मौजूदा_नियमs के इस्तेमाल के उदाहरणों को समझें और दूसरे विकल्प सुझाएं.
  • P2. शुरुआती फ़ाइल के इस्तेमाल के उदाहरणों का अध्ययन करें और विकल्पों के सुझाव दें.

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

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

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

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

कम्यूनिटी:

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

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

सेहत बनाएं और सबसे सही तरीके अपनाएं:

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

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

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

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

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

कम्यूनिटी:

  • Bazel से जुड़े सभी खास शब्दों की परिभाषा वाली ग्लॉसरी पब्लिश करें