المصحح البصري لجوبيتر

يعتمد تقدم معظم مشاريع البرامج على التغييرات الصغيرة التي يتم تقييمها بعناية قبل الانتقال. النتائج السريعة لتنفيذ الشفرة والسرعة العالية للتطور التكراري هي بعض الأسباب الرئيسية لنجاح Jupyter. خاصة في مجال البحث العلمي.

يحب مستخدمو Jupyter تجربة دفاتر الملاحظات ، ويستخدمون دفاتر الملاحظات كوسيلة تفاعلية للتواصل. ومع ذلك ، إذا تحدثنا عن مهام تطوير البرامج الكلاسيكية ، على سبيل المثال ، إعادة هيكلة قاعدة رمز كبيرة ، فيمكننا القول أنه لحل مثل هذه المشاكل ، يتم استبدال Jupyter غالبًا بمعرفات IDE العادية.


بيئة JupyterLab يعمل

مشروع Jupyter منذ عدة سنوات لسد الفجوة بين أجهزة الكمبيوتر المحمولة و IDEs العادية. يتم تمثيل هذه الجهود إلى حد كبير من خلال منصة JupyterLab ، والتي تمنح المطور واجهة أكثر تقدمًا وملاءمة ، والتي تشمل مدير الملفات ، ومحرري النصوص ، ووحدات التحكم ، والمفكرات.

صحيح ، حتى وقت قريب ، كان هناك شيء مفقود في JupyterLab. هذا حول السبب الرئيسي الذي دفع المستخدمين إلى الانتقال إلى بيئات أخرى. افتقر مستخدمو جوبيتر إلى مصحح بصري. لطالما سأل المستخدمون ، وخاصة أولئك الذين اعتادوا على IDE العادية ، عن هذه الميزة.

المصحح لكوكب المشتري


اليوم ، بعد عدة أشهر من التطوير ، يسعدنا أن نقدم أول إصدار علني من المصحح البصري لـ Jupyter!

هذا هو الإصدار الأول فقط ، ولكن المصحح يسمح لك بالفعل بتعيين نقاط التوقف في خلايا دفتر الملاحظات وفي ملفات المصدر. يسمح لك بفحص محتويات المتغيرات ، وعرض مكدس المكالمة. ولا تقتصر قدراته على ذلك.


Jupyter Visual Debugger في العمل

اختبار المصحح على موقع مشروع الموثق



مشروع الموثق يمكنك

تجربة مصحح أخطاء جديد في الحالة على موقع مشروع الموثق. هنا مفكرة تجريبية يمكنك تجربتها.

التركيب


يمكن تثبيت واجهة المصحح كامتداد JupyterLab:

jupyter labextension install @jupyterlab/debugger

في الإصدارات المستقبلية ، سيتم تضمين واجهة المصحح في JupyterLab بشكل افتراضي.

على الواجهة الخلفية ، لكي يعمل المصحح ، يجب أن يكون هناك نواة يتم فيها تنفيذ بروتوكول تصحيح Jupyter (سنتحدث أكثر عنه أدناه). حتى الآن ، النواة الوحيدة التي تنفذ هذا البروتوكول هي xeus-python . هو جوهر جوبيتر للغة برمجة بايثون. (تتضمن خطط تطوير المشروع أيضًا دعم بروتوكول مصحح الأخطاء في ipykernel.)

يمكنك تثبيت xeus-python kernel مثل هذا:

conda install xeus-python -c conda-forge

بعد تثبيت xeus-python وملحق المصحح ، يجب أن يكون كل شيء جاهزًا للعمل مع مصحح Jupyter المرئي.

انتبه إلى حقيقة أن هناك أيضًا "عجلات" PyPI لـ xeus-python ، ولكن لا يزال لديهم حالة تجريبية ، ويعتمد توفرها على النظام الأساسي.

تفاصيل بروتوكول Jupyter Debug


message أنواع رسائل جديدة لقنوات التحكم و IOPub


تتواصل نواة Jupyter (جزء من البنية التحتية التي تقوم بتنفيذ كود المستخدم) مع أجزاء أخرى من النظام باستخدام بروتوكول اتصالات معالجات متطورة جيدًا .

هناك العديد من قنوات الاتصال:

  • قناة Shellتعمل وفقًا لنظام الطلب / الاستجابة وتستخدم ، على سبيل المثال ، لطلبات تنفيذ التعليمات البرمجية.
  • قناة IOPub، وهي قناة اتصال أحادية الاتجاه تعمل من القلب إلى العميل. يتم استخدامه ، على سبيل المثال ، لإعادة توجيه تدفقات الإخراج القياسية ( stdoutو stderr).
  • قناة Controlتشبه القناة Shellولكنها تعمل على مقبس مختلف. ونتيجة لذلك ، لا يتم وضع رسائله في قائمة الانتظار مع طلبات تنفيذ التعليمات البرمجية ولها أولوية أعلى. Controlتم بالفعل استخدام القناة للاستعلامات Interruptو Shutdown. قررنا أن نستخدمه للأوامر المرسلة إلى المصحح.

تمت إضافة نوعين جديدين من الرسائل إلى البروتوكول:


▍ Debug Adapter Protocol


المبدأ الرئيسي في هندسة جوبيتر هو عدم وجود ارتباط بلغة برمجة معينة. لذلك ، من المهم أن بروتوكول المصحح يدعم التكيف مع تطبيقات kernel المختلفة.

معيار تصحيح الأخطاء الشهير هو بروتوكول محول التصحيح (DAP) ، الذي طورته Microsoft. هذا بروتوكول قائم على JSON ، على سبيل المثال ، هو أساس النظام الفرعي لتصحيح أخطاء Visual Studio Code. يدعم هذا البروتوكول العديد من الخلفيات المصممة للغات مختلفة.

ونتيجة لذلك ، كان من الطبيعي تمامًا بالنسبة لنا استخدام رسائل DAP من خلال الرسائل المضافة مؤخرًا debug_[request/reply]و debug_event.

ومع ذلك ، في حالة المشتري ، لم يكن هذا كافيًا:

  • , , , Jupyter ( , , ). debug_request.
  • , , Jupyter, , , , , , .

محتوى طلبات المصحح وإجاباته ، بالإضافة إلى هذين الاختلافين ، يتوافق مع DAP.

تم اقتراح جميع هذه الامتدادات لبروتوكول نواة جوبيتر كمرشحين لإدراجها في المواصفات الرسمية. يمكن العثور على مقترح تطوير Jupyter ذي الصلة (اقتراح تحسين JEPyter ، JEP) هنا .

Xeus-python هي أول نواة Jupyter تدعم تصحيح الأخطاء


Xeus هو تطبيق C ++ لبروتوكول نواة Jupyter. هذا ، في حد ذاته ، ليس الجوهر. هذه مكتبة تساعد على تطوير النواة. هذه المكتبة مفيدة في تطوير نواة للغات التي تحتوي على واجهة برمجة تطبيقات C- أو C ++ - (مثل Python أو Lua أو SQL). انها تأخذ الرعاية من المهام تستغرق وقتا طويلا للتنفيذ على بروتوكول الرسائل Jupyter. هذا يسمح لمؤلف النواة بالتركيز على المهام المتعلقة بتفسير تراكيب اللغة: على تنفيذ التعليمات البرمجية ، وتحليلها ، وما إلى ذلك.

تم تطوير العديد من الألباب باستخدام xeus ، بما في ذلك نواة xeus-cling الشائعة لـ C ++ ، بناءً على مترجم C ++ cling الذي تم إنشاؤه في CERN. نواة xeus-python هي نواة ipykernel تعتمد على xeus. هنامواد عن الإصدار الأول من نواة زيوس بيثون.

نواة xeus-python kernel مناسبة للتنفيذ الأول لبروتوكول المصحح لعدة أسباب:

  • وهو يدعم تنفيذ التعليمات البرمجية التنافسية ، والذي يسمح لك بأداء العمل مع القناة Controlفي مؤشر ترابط منفصل.
  • يتميز بقاعدة رمز مضغوطة. وبفضل هذا ، فإن هذه النواة هي "صندوق رمل" جيد يكون مناسبًا لتنفيذ شيء جديد. سيتطلب تنفيذ الإصدار الأول من بروتوكول مصحح الأخطاء في ipykernel إعادة هيكلة أكثر جدية والمزيد من الجهد لتنسيق التغييرات في المراحل الأولى من التطوير.

development خطة تطوير نواة Xeus-python


من بين أهداف التنمية قصيرة المدى لـ xeus-python ما يلي:

  • إضافة دعم لميزات IPython. الآن هذا ، بالمقارنة مع ipykernel ، هو السمة المفقودة الرئيسية لـ xeus-python.
  • تحسين PyPI- "عجلات" xeus-python.

bحول النوى الأخرى


ما تم فعله بالفعل فيما يتعلق بدعم تصحيح الأخطاء في الواجهة الأمامية يمكن استخدامه مع أي نواة تقوم بتنفيذ بروتوكول kernel الموسع.

هذا العام سنعمل على توفير دعم تصحيح الأخطاء في أكبر عدد ممكن من النوى.

يتوفر دعم تصحيح الأخطاء قريبًا لحبوب أخرى تعتمد على Xeus والتي تشترك كثيرًا في نواة xeus-python. على سبيل المثال ، مثل xeus-cling.

تفاصيل هندسة الواجهة الأمامية المصحح


يمنح ملحق مصحح الأخطاء لـ JupyterLab المستخدمين الآليات المتوقعة عادةً من IDE:

  • الشريط الجانبي مع النوافذ التي تنفذ الميزات التالية: مراقبة المتغيرات ، عرض نقاط التوقف ، عرض التعليمات البرمجية ، تحليل مكدسات المكالمات.
  • القدرة على تعيين نقاط التوقف مباشرة في التعليمات البرمجية ، ولا سيما في التعليمات البرمجية الموجودة في خلايا المفكرة ووحدات التحكم.
  • علامات مرئية تشير إلى الموضع الذي توقف عنده تنفيذ التعليمات البرمجية.

عند العمل مع دفاتر Jupyter المحمولة ، يتم تخزين المعلومات حول حالة تنفيذ التعليمات البرمجية في النواة. ولكن يمكن تنفيذ رمز الخلية ، وبعد ذلك يمكن حذف هذه الخلية من دفتر الملاحظات. ماذا يجب أن يحدث إذا أراد المستخدم ، أثناء التصحيح ، إدخال كتلة بعيدة من التعليمات البرمجية؟

يدعم الملحق هذا السيناريو المحدد ويمكنه عرض رمز خلية تم تنفيذها سابقًا في وضع القراءة فقط.


التبديل إلى الرمز الموجود في الخلية البعيدة يمكنك

تصحيح الرمز الموجود في وحدات التحكم وفي الملفات.


رمز التصحيح من وحدة التحكم في JupyterLab


تصحيح الأخطاء في JupyterLab

يمكن تمكين التعليمات البرمجية الموجودة في ملف التصحيح على مستوى المفكرة ، مما سيسمح للمستخدمين بتصحيح المفكرة ، وفي نفس الوقت ، العمل مع مفكرة أخرى.


تصحيح العديد من دفاتر الملاحظات في نفس الوقت

يمكن عرض المتغيرات باستخدام طريقة عرض شجرة أو جدول.


أدوات لاستكشاف المتغيرات

تم تصميم امتداد المصحح لـ JupyterLab للعمل مع أي نواة تدعم التصحيح.

نظرًا لحقيقة أن الملحق يعتمد على بروتوكول DAP ، فإنه يلخص ميزات اللغات المختلفة ويمنح المستخدم واجهة تصحيح ثابتة.

يوضح الرسم البياني التالي تدفق الرسائل المرسلة أثناء جلسة تصحيح الأخطاء بين المستخدم وامتداد JupyterLab والنواة.


استخدام بروتوكول محول التصحيح في المصحح ( المصدر )

خطط مستقبلية


في عام 2020 ، نخطط لتحسين المصحح بجدية. وبالتحديد نتحدث عن الآتي:

  • دعم لإخراج أنواع MIME المختلفة في نافذة المستكشف المتغير.
  • دعم العمل مع نقاط التوقف الشرطية في واجهة المصحح.
  • تحسين قابلية استخدام واجهة المصحح.
  • تنفيذ القدرة على تصحيح تطبيقات Voilà من الامتداد @jupyter-voila/jupyterlab-preview.

القراء الأعزاء! هل جربت مصحح Jupyter البصري؟


All Articles