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

पुष्टि की गई: 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 site build के लिए CI टेस्ट जोड़ें, ताकि रिग्रेशन को रोका जा सके.

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

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

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

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

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

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

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

कम्यूनिटी:

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