حزم JSON التجريبية في Go 1.25: تعزيز الأداء ونحو بناء جملة أكثر صرامة

2025-09-10

يقدم Go 1.25 حزمًا تجريبية جديدة `encoding/json/v2` و `encoding/json/jsontext` لتحسين قدرات ترميز وفك ترميز JSON في Go. تعالج هذه الحزم أوجه القصور الموجودة في حزمة `encoding/json` الحالية، مثل التعامل غير الدقيق مع بناء جملة JSON، واختناقات الأداء، ونقص في واجهة برمجة التطبيقات. تتضمن التحسينات معالجة أكثر صرامة لـ UTF-8 غير الصحيح، والمفاتيح المكررة، والقطع/الخرائط الفارغة. يُحسّن المعالجة التدفقية الأداء بشكل كبير، خاصةً فك الترميز. على الرغم من التوافق مع الإصدارات السابقة إلى حد كبير، يُشجع المطورون على إجراء الاختبار باستخدام `GOEXPERIMENT=jsonv2` وتقديم ملاحظاتهم.

اقرأ المزيد
(go.dev)
التطوير

وحدة التشفير الأصلية من جو FIPS 140-3: حل آمن وبسيط

2025-07-16

يدعم Go 1.24 والإصدارات الأحدث الآن الامتثال لـ FIPS 140-3 بشكلٍ أصلي من خلال وحدة تشفير جديدة تم تطويرها بالتعاون مع Geomys. هذه الوحدة، التي تم التحقق منها من خلال شهادة CAVP A6650 وتخضع للمراجعة من قبل CMVP، تقضي على نقاط الاحتكاك السابقة لمستخدمي Go في البيئات الخاضعة للتنظيم. فهي توفر تجربة سلسة للمطورين، مع أمانٍ لا يُقاوَم، باستخدام ECDSA مُحسّن و NIST DRBG القائم على AES-256-CTR. وهي تدعم مجموعة واسعة من الأنظمة الأساسية والخوارزميات، متجاوزة قدرات وأمان سابقتها، Go+BoringCrypto. توفر هذه الوحدة الأصلية الطريق الأسهل والأكثر أمانًا للامتثال لـ FIPS 140-3 لمطوري Go.

اقرأ المزيد
(go.dev)
التطوير وحدة التشفير

واجهات عامة في جو: استخدام ذكي للواجهات العامة لهياكل الأشجار الفعالة والقابلة للتكيف

2025-07-10

تتناول هذه المقالة الاستخدام المتقدم للواجهات العامة في لغة جو، وتحديدًا كيفية التعامل مع قيود الأنواع بشكل أنيق عند بناء هياكل بيانات مثل أشجار البحث الثنائية باستخدام واجهات عامة ذات مرجع ذاتي. باستخدام هيكل شجرة كمثال، تقارن ثلاث طرق للتنفيذ: استخدام `cmp.Ordered`، ودالة مقارنة مخصصة، وواجهة عامة ذات مرجع ذاتي. أخيرًا، تتعمق المقالة في دمج قيود `comparable` لبناء مجموعات مرتبة وتجنب التعقيدات الناتجة عن مستقبلات المؤشرات، مع التوصية بإعطاء الأولوية للبساطة وسهولة القراءة في التصميم.

اقرأ المزيد
(go.dev)

ملحمة معالجة الأخطاء في جو: نهاية حرب بناء الجملة

2025-06-03

بعد سنوات من المحاولات لتحسين معالجة الأخطاء المفصلة في جو، قرر فريق جو التخلي عن الجهود المبذولة لتغيير بناء جملة اللغة. لم تتمكن المقترحات مثل "check/handle" و "try" و عامل التشغيل "؟" من تحقيق توافق عام. تُفصّل المقالة هذه القصة، مُفسرةً القرار بسبب عدم وجود توافق، وتكاليف التنفيذ المرتفعة، وكفاية النهج الحالية. يُجادل الفريق بأن التركيز على آليات وأدوات أفضل لمعالجة الأخطاء أكثر إنتاجية من السعي وراء السكر النحوي، مع التركيز على التطبيق العملي وقابلية القراءة بدلاً من إيجاز الكود.

اقرأ المزيد
(go.dev)
التطوير

Go 1.25 يزيل أنواع النواة، مما يبسط مواصفات اللغة

2025-03-26

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

اقرأ المزيد
(go.dev)
التطوير مواصفات اللغة

Go 1.24 يعزز قدرات Wasm: مُفاعلات WASI والوظائف المُصدرة

2025-02-14

يعزز Go 1.24 بشكل كبير دعم WebAssembly (Wasm) من خلال إدخال توجيه `go:wasmexport` وإمكانية إنشاء مُفاعلات WASI. يسمح هذا للمطورين باستخدام Go بتصدير الدوال إلى Wasm، مما يُمكّن التكامل السلس مع تطبيقات المضيف. يُسهّل وضع مُفاعل WASI الجديد تشغيل وحدات Wasm باستمرار والتي يمكنها الاستجابة لأحداث أو طلبات متعددة دون إعادة تهيئة. على الرغم من وجود قيود، مثل طبيعة Wasm أحادية النواة وقيود الأنواع، إلا أن تحسينات Go 1.24 تُمهد الطريق لتطبيقات Wasm القائمة على Go أكثر قوة ومتنوعة.

اقرأ المزيد
(go.dev)
التطوير

واجهة برمجة التطبيقات الجديدة غير الشفافة لـ Go Protobuf تُحسّن الأداء والأمان

2024-12-16

أصدر فريق Go واجهة برمجة تطبيقات جديدة غير شفافة لـ Go Protobuf، تعمل جنبًا إلى جنب مع واجهة برمجة التطبيقات الموجودة Open Struct. تُحسّن واجهة برمجة التطبيقات الجديدة هذه الأداء من خلال فصل التعليمات البرمجية المُولّدة عن تمثيل الذاكرة الأساسي، مما يؤدي إلى تحسين الأداء وتقليل عمليات تخصيص الذاكرة، كما تُمكّن عمليات تحسين مثل فك التشفير الكسول. ومن خلال إخفاء حقول الهياكل والوصول إليها فقط من خلال أساليب الوصول، تمنع هذه الواجهة الأخطاء المتعلقة بالشارات والعمليات المشتركة غير المقصودة. تتضمن عملية الترحيل تمكين واجهة برمجة التطبيقات الهجينة، واستخدام أداة `open2opaque`، ثم التبديل إلى واجهة برمجة التطبيقات غير الشفافة. تبقى واجهة برمجة التطبيقات Open Struct الموجودة مدعومة.

اقرأ المزيد
(go.dev)
التطوير