تايب سكريبت لم تعد تايب سكريبت كما كانت...

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

Transcript

00:00:00أصدرت تايب سكريبت نسخة تجريبية للإصدار 7، وهذا سيكون الإصدار الذي
00:00:04تصبح فيه تايب سكريبت ليست تايب سكريبت. إذا لم تكن متابعاً، فقد كانوا يعملون على إعادة كتابة
00:00:07مترجم تايب سكريبت من تايب سكريبت نفسها إلى لغة جو، والنتائج أسرع بـ 10 مرات كما يبدو.
00:00:12يتوقعون إصدار تايب سكريبت 7 خلال الشهر القادم، لذا دعونا نستعرض ما تغير فعلياً
00:00:17وكم هي سريعة، وما إذا كانت هناك أي تغييرات جذرية يجب أن تعرفها قبل تثبيتها.
00:00:26إذا فاتتك أخبار نقلها إلى لغة جو، فقد بدؤوا هذا الأمر منذ عام تقريباً
00:00:29والخلاصة هي أنهم أدركوا أن جافا سكريبت لم تُبنى أبداً للعمل المكثف الذي يعتمد على المعالج
00:00:34والذي يقوم به فاحص الأنواع، لذا بدؤوا بإعادة كتابته بلغة جو وحققوا نجاحاً مبكراً كبيراً.
00:00:39لقد بدؤوا بأساس نقل التنفيذ الحالي لتايب سكريبت سطراً بسطر، ليكون منطق
00:00:44فحص الأنواع مطابقاً هيكلياً وله نفس السلوك، ويمكنك حتى رؤية أن بعض
00:00:48الدوال كانت متطابقة تقريباً بصرف النظر عن اللغة. وأنا متأكد أيضاً أن هذا كان قبل
00:00:52أن تتمكن ببساطة من توجيه “كلود” إلى قاعدة الكود الخاصة بك وتقول له “انقلها إلى أي لغة تريد”
00:00:56أنا أنظر إليك يا “بن”. نتائج النقل تتحدث عن نفسها، هنا لدي
00:01:00مستودع “بلايرايت”، وإذا قمت بفحص الأنواع باستخدام الإصدار القديم من تايب سكريبت، نرى هنا أن هذا
00:01:04يستغرق حوالي ست ثوانٍ ليكتمل، وقد مر على 1400 ملف ونصف مليون سطر
00:01:08من الكود. إذا تحولت الآن إلى النسخة التجريبية دون تغيير أي شيء سوى هذا الأمر
00:01:12فقد استغرق الأمر إجمالاً 0.87 ثانية، وهذا تحسن كبير. كما وجد نفس العدد تماماً من
00:01:18الأخطاء، نفس الأخطاء، ومر على نفس الملفات وكل أسطر الكود، لذا فهو يعمل تماماً
00:01:23مثل تايب سكريبت 6. الكود الأصلي للغة جو أسرع بشكل أساسي من جافا سكريبت لمهمة
00:01:27كهذه، لكنه يسمح لهم أيضاً باستخدام التوازي في الذاكرة المشتركة، حيث كان مترجم جافا سكريبت
00:01:32يعمل بخيط معالجة واحد، بينما يمكن للغة جو توزيع فحص الأنواع على عدة أنوية في وقت واحد.
00:01:37في تايب سكريبت 7، يمكنك بالفعل إجباره على العمل بخيط معالجة واحد عبر علم، ربما لإجراء تصحيح
00:01:41للأخطاء أو إذا كنت تعمل على جهاز بموارد محدودة. وإذا قمت بهذا في قاعدة كود “بلايرايت”
00:01:46هنا مع تايب سكريبت 7، نرى أنه عند العمل بخيط واحد يستغرق الأمر حوالي ثانيتين، وهو
00:01:50لا يزال أسرع بثلاث مرات مما كان عليه من قبل. وبالحديث عن العمل بالتوازي، فهم يطرحون أيضاً
00:01:54علماً جديداً للفاحصات يسمح لك فعلياً بتحديد عدد عمال فحص الأنواع الذين يمكنهم العمل بالتوازي
00:01:58وهذا يضبط افتراضياً على أربعة. زيادة هذا الرقم يمكن أن تسرع عمليات البناء في قواعد الكود الكبيرة إذا
00:02:03كان لديك الكثير من أنوية المعالج، لكن ذلك سيأتي على حساب استهلاك إضافي للذاكرة. إذا قمت بضبط الفاحصات
00:02:08على 8 في مستودع “بلايرايت” هذا، وهو ضعف القيمة الافتراضية، يبدو أنه يقلص بالفعل ثلثاً آخر
00:02:12من الوقت. يوجد أيضاً علم جديد للبنائين لموازاة بناء مشاريع المراجع، أي بناء
00:02:16مشاريع متعددة في وقت واحد، وهذا العلم يسمح لك بالتحكم في عدد البنائين المتوازيين الذين يمكنهم
00:02:20العمل في وقت واحد. والجدير بالذكر أنه إذا دمجت هذا مع الفاحصات التي رأيناها للتو، لنقل
00:02:24أن لديك أربعة من كل منهما، فهذا يعني أنه يمكنك الحصول على ما يصل إلى 16 فاحصاً للأنواع يعملون في وقت واحد.
00:02:29بجانب تغييرات الكود الأصلي والتوازي، هناك إعادة كتابة كبيرة أخرى في تايب سكريبت 7 وهي وضع المراقبة.
00:02:34عندما نقلوا إلى لغة جو، كان هذا أكثر تعقيداً قليلاً لأن المكتبة القياسية لا توفر
00:02:38واجهات برمجية مدمجة لمراقبة الملفات، والمكتبات الخارجية التي جربوها كان لديها مشاكل في جوانب مثل
00:02:43الاستقرار والأداء ودعم الأنظمة المتعددة، لذا نظر الفريق بالفعل إلى مراقب ملفات
00:02:47حزمة “بارسل” التي تستخدمها مايكروسوفت قليلاً في “في إس كود”، ولكن بما أنه كان بلغة سي++، فقد اضطروا أيضاً
00:02:53إلى نقل أجزاء منه التي يحتاجونها إلى لغة جو أيضاً. الخبر السار هو أنهم فعلوا
00:02:57كل شيء ويبدو أنه يعمل بسلاسة كبيرة وأفضل من ذي قبل. بعد ذلك، وبما أن هذا
00:03:01تحديث إصدار رئيسي، قد تتوقع الكثير من التغييرات الجذرية خاصة وأن هذه إعادة كتابة كبيرة،
00:03:05لكنني لا أعتقد أن هناك أي منها إذا كنت تنتقل من تايب سكريبت 6 إلى 7. إذا كنت
00:03:10تريد الانتقال من 5 إلى 7، فسيكون هناك عدد لا بأس به، لذا يبدو أنهم يوصون بأن
00:03:14ترتقي إلى 6 أولاً وتجعل كل شيء يعمل ثم يكون تحديث الإصدار إلى 7 بلا مشاكل. بعض
00:03:19التغييرات الكبيرة في تايب سكريبت 6 كانت إزالة استهداف “إي إس 5”، وإزالة “بيس يو آر إل”، وإيقاف دعم أنظمة
00:03:24وحدات “أي إم دي” و”يو إم دي” و”سيستم جي إس”. كما جعلوا “ستريكت” صحيحاً افتراضياً، وجعلوا الوحدات افتراضياً “إي إس نيكست”
00:03:31واستهداف النسخة الافتراضية لإصدار “إيكما سكريبت” المستقر الحالي الذي يسبق “إي إس نيكست” مباشرة. كان الأمر
00:03:36ببساطة الكثير من ترك الماضي خلفنا وتحديث تايب سكريبت وهو ما أحبه حقاً،
00:03:40لأنه أحياناً محاولة دعم المشاريع القديمة في كل إصدار تقوم به يمكن أن تبطئ حقاً
00:03:45تقدم الأداة. بالنظر إلى بقية هذه التدوينة، يبدو فعلياً أن التغيير أو الميزة الجديدة
00:03:49الوحيدة التي تهم لغة تايب سكريبت نفسها هي أن أنواع القوالب الحرفية
00:03:53تحتفظ الآن بنقاط رموز يونيكود. بشكل أساسي، قبل تايب سكريبت 7، كانت تايب سكريبت تقسم فعلياً على وحدات رموز “يو تي إف 16”
00:03:59لذا كانت تنتهي بتقسيم الإيموجي إلى نصفين، وكنت ستنتهي بهذه الأنواع الغريبة للرأس
00:04:04والذيل هنا. في تايب سكريبت 7 ومع ذلك، فهي تقسم فعلياً على نقاط رموز كاملة، أي أحرف كاملة
00:04:09لذا الآن يتم الحفاظ على الإيموجي والتقسيم هو إلى حد كبير كما تتوقع أن يكون. سأكون
00:04:13منبهراً حقاً إذا كان أي منكم قد صادف هذا في وقت استخدامه لتايب سكريبت.
00:04:18بشكل عام، هذه التغييرات يجب أن تجعل أي شيء يستخدم تايب سكريبت يبدو أسرع بكثير مثل تايب سكريبت
00:04:22في محررك خاصة للمشاريع الكبيرة. من المتوقع صدور النسخة المستقرة خلال حوالي شهر
00:04:27لكن واجهة برمجة تطبيقات برمجية مستقرة، أي الشيء الذي يستخدمه مؤلفو الأدوات للبناء فوق المترجم
00:04:32ستصل في الإصدار 7.1. وبسبب هذا، توجد أيضاً حزمة توافق حتى تتمكن من تشغيل
00:04:36تايب سكريبت 6 و 7 جنباً إلى جنب دون الدخول في صراعات. دعوني أعرف رأيكم في كل
00:04:41هذا، وأنا فضولي لمعرفة ما إذا كنت قد شعرت يوماً أن تايب سكريبت كانت بطيئة، دعوني أعرف في
00:04:44التعليقات. بينما أنتم هناك اشتركوا، وكما هو الحال دائماً، أراكم في المرة القادمة.

Key Takeaway

تنتقل تايب سكريبت 7 إلى استخدام لغة جو (Go) كركيزة أساسية، مما يحقق تسريعاً يبلغ 6.8 ضعفاً في فحص الأنواع ويدعم المعالجة المتوازية عبر أنوية متعددة.

Highlights

  • إعادة كتابة مترجم تايب سكريبت 7 بلغة جو (Go) أدت إلى تسريع عملية فحص الأنواع بمقدار 6.8 مرة في مستودع 'بلايرايت'.

  • انخفض زمن فحص 1400 ملف ونصف مليون سطر من الكود من 6 ثوانٍ إلى 0.87 ثانية عند الانتقال إلى النسخة التجريبية من تايب سكريبت 7.

  • تتيح تايب سكريبت 7 تعدد المعالجة (Parallelism) عبر توزيع فحص الأنواع على عدة أنوية معالج، مع خيار افتراضي لاستخدام 4 عمال فحص.

  • يمكن دمج موازاة بناء مشاريع المراجع مع فحص الأنواع للوصول إلى 16 عملية فحص تعمل في وقت واحد.

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

  • لا تتضمن عملية الترقية من تايب سكريبت 6 إلى 7 تغييرات جذرية، بينما تتطلب الترقية من 5 إلى 7 تحديثاً وسيطاً عبر الإصدار 6.

Timeline

إعادة كتابة المترجم بلغة جو

  • استبدلت تايب سكريبت مترجمها القائم على جافا سكريبت بلغة جو (Go).
  • تتجاوز سرعة التنفيذ في لغة جو سرعة جافا سكريبت في مهام فحص الأنواع المكثفة.

أدرك فريق التطوير أن جافا سكريبت غير مصممة للعمليات المكثفة التي يطلبها فاحص الأنواع، لذا تمت إعادة كتابة المنطق برمجياً بلغة جو. نُقل التنفيذ سطراً بسطر لضمان تطابق السلوك والهيكل مع الإصدارات السابقة.

تحسينات الأداء والسرعة

  • يستغرق فحص مستودع 'بلايرايت' 0.87 ثانية في تايب سكريبت 7 مقارنة بـ 6 ثوانٍ في الإصدارات السابقة.
  • تسمح تايب سكريبت 7 بموازاة العمل عبر عدة أنوية معالج بدلاً من خيط معالجة واحد.
  • يمكن تخصيص عدد عمال الفحص وموازاة بناء مشاريع المراجع لتسريع المهام الكبيرة.

أثبت الاختبار على مستودع ضخم أن الأداء تحسن بـ 6.8 مرة بشكل افتراضي. توفر تايب سكريبت 7 علامات جديدة للتحكم في تعدد المعالجة، حيث يؤدي رفع عدد عمال الفحص إلى 8 إلى تقليص الوقت بشكل إضافي، مع مراعاة زيادة استهلاك الذاكرة.

مراقب الملفات وتحديثات النظام

  • أعيدت كتابة وضع المراقبة بالكامل باستخدام أجزاء من حزمة 'بارسل' المكتوبة بلغة سي++ والمترجمة إلى جو.
  • يعمل مراقب الملفات الجديد باستقرار وكفاءة أعلى عبر أنظمة تشغيل متعددة.

تطلب الانتقال إلى لغة جو تطوير مراقب ملفات جديد لعدم توفر واجهات برمجة تطبيقات متوافقة في المكتبة القياسية للغة جو. دمج الفريق تقنيات مراقبة ملفات عالية الأداء لضمان توافق النظام وسرعة الاستجابة.

توافق الإصدارات والتغييرات الجذرية

  • ينصح بالترقية من 5 إلى 6 ثم إلى 7 لتجنب المشاكل في التحديث.
  • تعدل تايب سكريبت 7 كيفية معالجة أنواع القوالب الحرفية للحفاظ على نقاط رموز يونيكود.
  • ستتوفر واجهة برمجة تطبيقات مستقرة للمترجم في الإصدار 7.1.

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

Community Posts

No posts yet. Be the first to write about this video!

Write about this video