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

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

इनसे संपर्क करें: laurentlb

लक्ष्य

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

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

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

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

बिल्ड की परफ़ॉर्मेंस और सबसे सही तरीके:

  • P0. ऐसे मैक्रो के इस्तेमाल को हतोत्साहित करना जिनका कोई नाम नहीं है. साथ ही, यह पक्का करना कि नाम एक यूनीक स्ट्रिंग लिटरल हो. यह काम Google के कोडबेस पर फ़ोकस करता है, लेकिन इससे सार्वजनिक तौर पर उपलब्ध टूलिंग पर असर पड़ सकता है.
  • P0. Buildozer के कमांड को सेलेक्ट और वैरिएबल के मामले में भरोसेमंद बनाना.
  • P1. Buildifier को ऐसी सूचियों में मौजूद डुप्लीकेट आइटम हटाने के लिए बनाना जिन्हें हम टिप्पणियों की वजह से क्रम से नहीं लगाते.
  • P1. Buildifier लिंटर को अपडेट करना, ताकि वह मामूली एक्सप्रेशन को इनलाइन करने का सुझाव दे सके.
  • P2. native.existing_rules के इस्तेमाल के उदाहरणों का अध्ययन करना और विकल्प सुझाना.
  • 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 चालू है और कम्यूनिटी इसे अच्छी तरह से बनाए रखती है.
  • rules_jvm_external के लिए लगातार सहायता उपलब्ध कराना. जैसे, पुल के अनुरोधों को पूरा करना, समस्याओं को हल करना, और रिलीज़ करना.
  • Bazel के दस्तावेज़ों के इन्फ़्रास्ट्रक्चर को बनाए रखना. जैसे, bazel-website, bazel-blog, और docs पर सीएसएस स्टाइल को एक जगह पर इकट्ठा करना और उन्हें कैननिकल बनाना
  • Bazel के दस्तावेज़: e2e doc साइट के बिल्ड के लिए सीआई टेस्ट जोड़ना, ताकि रिग्रेशन को रोका जा सके.

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

बिल्ड की परफ़ॉर्मेंस और सबसे सही तरीके:

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

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

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

तकनीकी कर्ज़ कम करना:

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

कम्यूनिटी:

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