خارطة طريق Starlark

تاريخ آخر عملية تحقُّق: 2020-04-21 (سجلّ التعديلات)

جهة الاتصال: laurentlb

الهدف

هدفنا هو زيادة قابلية التوسّع لشركة Bazel. ويجب أن يتمكّن المستخدمون من تطبيق قواعدهم بسهولة واستخدام لغات وأدوات جديدة. ونريد تحسين تجربة كتابة هذه القواعد والحفاظ عليها.

نركّز على أمرين:

  • اجعل اللغة وواجهة برمجة التطبيقات بسيطتين ولكن فعّالتين.
  • توفير أدوات أفضل لقراءة الرموز والكتابة والتصحيح وتصحيح الأخطاء واختبارها.

الربع الثاني من العام 2020

تحقيق الصحة وأفضل الممارسات:

  • P0. لا ننصح باستخدام وحدات ماكرو بدون اسم، مع ضمان أن يكون الاسم حرفيًا فريدًا وسلسلة. يركّز هذا العمل على قاعدة رموز Google، ولكنه قد يؤثر في الأدوات المتاحة للجميع.
  • P0. اجعل أوامر Buildozer موثوقة في ما يتعلق بالاختيارات والمتغيرات.
  • النقطة رقم 1. يمكنك إزالة ملفات مكرّرة من القوائم باستخدام Buildifier في القوائم التي لا نرتّبها بسبب التعليقات.
  • النقطة رقم 1. تحديث Lintifier لاقتراح تضمين التعبيرات البسيطة.
  • النقطة رقم 2. يمكنك دراسة حالات الاستخدام لـNative.existing_rule واقتراح بدائل.
  • النقطة رقم 2. يمكنك دراسة حالات الاستخدام لملف المقدمة واقتراح بدائل.

الأداء:

  • النقطة رقم 1. حسِّن ميزة الترجمة الفورية من خلال Starlark باستخدام بيئات مسطّحة وتجميع رموز البايت.

الحد من الديون التقنية:

  • P0. يمكنك إضافة إمكانية نقل الرموز الأصلية إلى Starlark أسفل @bazel_tools.
  • النقطة رقم 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. يمكنك تقليل وقت الاستجابة للإنشاء والاختبار بنسبة 50% لتعديل وقت الاستجابة إلى حِزم Java التابعة لشركة Bazel.

المنتدى:

  • rules_python مفعّلة ويحافظ على سلامة المنتدى.
  • الدعم المستمر لقواعد_jvm_external (لا تتوفّر طلبات سحب معلّقة أو يمكن فرز المشاكل أو إنشاء الإصدارات).
  • صيانة البنية الأساسية لوثائق Bazel: تحويل أنماط CSS إلى مركزية والاستفادة من صفحات عبر bazel-blog وbazel-blog وdocs
  • Bazel docs: أضِف اختبارات CI لإنشاء موقع مستند e2e لمنع عمليات التراجع.

الربع الأول من العام 2020

تحقيق الصحة وأفضل الممارسات:

  • السماح للتتبُّع بتتبُّع حزم المكالمات الماكرو للتصدير عبر bazel query
  • تنفيذ --incompatible_no_implicit_file_export
  • أزِل واجهات برمجة التطبيقات المتوقّفة لإلغاء إرسالها (#5817 و#10313 و#9017).
  • أضِف أداة تحليل الملفات المتقاطعة في Buildifier، ونفِّذ عملية فحص للوظائف التي تم إيقافها.

الأداء:

  • يمكنك زيادة سرعة إجراء الاختبارات الخاصة بلغة البرمجة Java بمقدار ضعفين.
  • نفِّذ محلّل وحدة المعالجة المركزية (CPU) لشركة Starlark.

الحد من الديون التقنية:

  • أزِل 8 علامات غير متوافقة (بعد قلبها).
  • إنهاء عملية تنظيف lib.syntax (إيقاف التبعيات)
  • تحسين Starlark: بيئة مسطّحة، أو مجموعة رموز بايت
  • حذف جميع التسلسلات من مرحلة التحليل، إن أمكن
  • ضع خطة لتبسيط/تحسين lib.packages

المنتدى:

  • نشر مسرد المصطلحات يحتوي على تعريفات لجميع العبارات الخاصة بلغة Bazel