انطلق 1.11 - WebAssembly والوحدات الأصلية

يوم الجمعة ، تم إصدار Go 1.11. الأشياء الأساسية حول الإصدار هي الدعم التجريبي لـ WebAssembly ، بالإضافة إلى مفهوم جديد للوحدات النمطية ، والتي تم تصميمها لتصبح المعيار لتوزيع التعليمات البرمجية.

قبل الانتقال إلى الأشياء الرئيسية للإصدار ، يجدر قول بضع كلمات عن التغييرات التي لا يمكن ملاحظتها للمستخدم. كما هو الحال في الإصدارات السابقة ، في Go 1.11 ، تم العمل على تحسين مكتبات اللغة وسلسلة الأدوات ومكتبات وقت التشغيل (على سبيل المثال ، الآن لا توجد قيود على الحد الأقصى لحجم الورك). بالطبع ، تم العمل على زيادة إنتاجية اللغة (الأهم من ذلك كله - في الرياضيات / الحساب الكبير - الحساب الطويل).

الآن عن WebAssembly. في الواقع ، في حبري هناك بالفعل العديد من المقالات حول كيفية كتابة التعليمات البرمجية لـ Wasm on Go. لذا ، فإن هذه الميزة التجريبية في الإصدار ليست أخبارًا على الإطلاق. ومع ذلك ، أعتقد أن الجميع يفهم أن هذا مهم جدًا. بعد كل شيء ، إذا نجح الكمبيوتر في وضع اللمسات الأخيرة على سلسلة الأدوات ، وكذلك Wasm ، إلى حالة جاهزة للإنتاج ، فيمكننا كتابة رمز الواجهة الأمامية بلغة لطيفة مع كتابة قوية ثابتة (مرحبًا ، جافا سكريبت!). هنا مثال صغير على استخدام التكنولوجيا -


بالمناسبة ، بدأت حلول مختلفة تظهر بالفعل لتحسين حياة المبرمجين لتطوير الواجهة الأمامية. على سبيل المثال ، https://github.com/dave/wasmgo - ترجمة Go to WASM ، ونشرها على CDN في أمر واحد.

الآن دعنا ننتقل إلى أهم شيء ، في رأيي ، في هذا الإصدار - نظام الوحدات. لقد بدأ الحديث عن هذه الوحدات منذ فترة طويلة. كانت معروفة للعالم باسم Vgo . تمت مناقشة الوحدات حتى في RuNet - https://habr.com/sandbox/115542/ ، وكذلك في إطار البودكاست Devzen من قبل Gopher - Alexey - https://devzen.ru/episode-0180/ . مقدمة جيدة للوحدات هي https://roberto.selbach.ca/intro-to-go-modules/ .

أهم شيء في هذه الوحدات:

  • العمل على Semver . علاوة على ذلك ، يسمح لك الأمر go mod بترقية إصدار التصحيح الأقصى فقط (رقم الإصدار الثالث) وأي إصدار ثانوي أقصى (رقم الإصدار الثاني أو الثالث). في الإصدار الرئيسي ، الذي يكسر التوافق ، لن تقوم بالترقية تلقائيًا بأي شكل من الأشكال - وهذا رائع جدًا.
  • بدأت عملية التخلي عن مفهوم GOPATH . يرغب مطورو Go في الابتعاد عن هذا التجريد في عام 2019 ، لذا فإن الوحدات الجديدة تعمل الآن فقط خارج GOPATH. ومع ذلك ، يمكنك تعيين متغير البيئة GO111MODULE = على لإزالة هذا التقييد.
  • بدأت عملية مغادرة البائع. حتى الآن ، هناك فرصة في الوحدات الجديدة لوضع التبعيات في مجلد منفصل ، واستخدامها من هناك. ومع ذلك ، في المستقبل ، يريد مطورو Go الابتعاد عن هذا. في رأيهم ، يجب دائمًا الحصول على التبعيات من المستودع (على سبيل المثال ، Github) ، أو يجب على الشركة وكيل المستودع عن طريق تخزين التعليمات البرمجية المصدر من جانبها مؤقتًا (على سبيل المثال ، باستخدام Artifactory).

من المهم أن نفهم أن الوحدات الجديدة لا تزال أيضًا تجربة. أدوات التطوير الحديثة ليست جاهزة تمامًا لهذا. لذلك ، قد تضطر إلى الاستمرار في العيش مع Dep . ومع ذلك ، هناك بالفعل محاولات للحصول على Vgo على CI العام - https://arslan.io/2018/08/26/using-go-modules-with-vendor-support-on-travis-ci/ .

في GoLand ، توجد وحدات جديدة بالفعل كتجريد. ومع ذلك ، كل شيء يعمل بشكل نسبي نسبيًا (على سبيل المثال ، إذا قمت بتنزيل الوحدة باستخدام Vgo ، ولكن دون القيام بذلك ، فلن يبدأ تحليل الكود الخاص بك):

الصورة

لتلخيص. Go 1.11 هو إصدار رائع. لم يكسر شيء (كالعادة) - وهذا رائع جدًا. ظهرت ميزات مثيرة للاهتمام. حصلنا تلقائيًا على بعض تعزيز الأداء. بشكل عام ، كل شيء كما ينبغي أن يكون في اللغة الحديثة للتنمية الصناعية. وستكون التغييرات في Go 2 القادمة ، والتي تتم مناقشتها الآن بنشاط.

Source: https://habr.com/ru/post/ar421355/


All Articles