تحسينات وإلغاء استخدام واجهات برمجة التطبيقات في جوهرة Ruby JSON

2025-08-09

يشرح هذا المنشور أسباب وتفاصيل التحسينات وإلغاء استخدام واجهات برمجة التطبيقات في جوهرة Ruby JSON من قبل المُحافظ. يتم تناول ثلاث مناطق رئيسية: أولاً، تم إلغاء استخدام خيار `create_additions: true` غير الآمن، ويوصى باستخدام `JSON.unsafe_load` أو تمرير الخيار صراحةً. ثانياً، تم إلغاء استخدام التسامح الافتراضي للمفاتيح المكررة، واقترح استخدام خيار `allow_duplicate_key: true`. وأخيراً، على الرغم من عدم إلغاء استخدام طريقة `Object#to_json`، إلا أنه تم تقديم واجهة برمجة تطبيقات جديدة وهي `JSON::Coder`، والتي توفر طريقة أكثر أماناً ومرونة لتحويل البيانات إلى تنسيق JSON، مما يحل مشاكل السلوك والتكوين العام. يشدد الكاتب على ضرورة موازنة تكاليف وفوائد إلغاء استخدام واجهات برمجة التطبيقات، ويسلط الضوء على أن واجهات برمجة التطبيقات الجديدة تعمل على تحسين الأمان وتقليل خطر الأخطاء.

اقرأ المزيد
التطوير

إلغاء قفل أداء Ruby Ractor: القضاء على تنافس متغيرات الفئة

2025-05-28

تتناول هذه المشاركة اختناقًا في الأداء في Ruby's Ractors عند التعامل مع متغيرات مثيل الفئة. يؤدي قفل المُفسِّر العالمي إلى انخفاض كبير في الأداء عندما تصل متغيرات متعددة من Ractors بشكل متزامن إلى هذه المتغيرات. يحلّل الكاتب بعناية التنفيذ الأساسي لمتغيرات مثيل الفئة ويقترح حلًا باستخدام تفويض الكائنات للقضاء على تنافس القفل، مما يؤدي إلى تحسين الأداء بثلاثة أضعاف تقريبًا في اختبارات الأداء الدقيقة. كما يُصلح هذا الحل بشكل غير متوقع خطأ وانحدارًا في الأداء تم إدخالهما بواسطة ميزة مساحة الاسم الجديدة.

اقرأ المزيد
التطوير

تعزيز أداء Ruby Ractor: معالجة اختناق `object_id`

2025-04-27

يعاني نموذج التزامن Ractor في Ruby من قيود الأداء بسبب الأقفال العالمية. تتعمق هذه المشاركة في اختناق الأداء الناجم عن طريقة `object_id`، الناتج عن خيارات التصميم التاريخية والتحسينات في جمع القمامة. من خلال تحسين تنفيذ `object_id`، وتخزينه مباشرة داخل الكائنات بدلاً من استخدام بحث في جدول هاش عالمي، يحسّن المؤلف أداء Ractor بشكل كبير، مما يؤدي إلى مضاعفة سرعة اختبارات الأداء في JSON. على الرغم من استمرار التحديات، مثل معالجة أنواع الكائنات الخاصة، إلا أن هذا العمل يمثل خطوة مهمة نحو جعل Ractors متوازية حقًا.

اقرأ المزيد
التطوير

تحسين بروتوكولات قواعد البيانات: منظور تجربة المطور

2025-04-05

تتناول هذه المقالة أوجه القصور في بروتوكولات عملاء قواعد بيانات SQL، وتحديدًا MySQL وPostgreSQL. ويشير الكاتب إلى مشكلات في إدارة الاتصال، واستعادة الأخطاء، والتعليمات المُعدّة، مما يؤدي إلى زيادة تعقيد التطوير. على سبيل المثال، تجعل حالة الاتصال المتغيرة استعادة الأخطاء صعبة، بينما يحدّ طابع الجلسة في التعليمات المُعدّة من استخدامها في مجموعات الاتصال. يقترح الكاتب تحسينات مستوحاة من بروتوكول Redis، مثل مرحلة تكوين صريحة، ومفاتيح الاستبدال، ومعرّفات تعليمات مُعدّة ذات نطاق عالمي. ستُبسّط هذه التغييرات سير عمل التطوير، وستُحسّن من موثوقية عملاء قواعد البيانات، مما ينتج عنه تجربة مُطوّر أفضل وقواعد بيانات أكثر سهولة في الاستخدام.

اقرأ المزيد
التطوير

HTTP/2: لماذا لا يهم في خوادم HTTP Ruby

2025-02-25

تتناول هذه المشاركة أهمية دعم HTTP/2 في خوادم HTTP Ruby مثل Puma. يُجادل الكاتب بأن الميزة الرئيسية لـ HTTP/2 - وهي تعدد الإرسال لتحقيق أوقات تحميل أسرع للصفحات - ذات أهمية كبيرة عبر الإنترنت، لكنها لا تقدم فائدة تذكر على الشبكة المحلية. فإن انخفاض زمن الوصول والاتصالات طويلة الأمد داخل الشبكة المحلية يقللان من تأثير بدء TCP البطيء. علاوة على ذلك، ثبت أن وظيفة دفع الخادم في HTTP/2 ضارة، وقد تم استبدالها بـ 103 Early Hints الأكثر أناقة. ويدافع الكاتب عن ترك معالجة HTTP/2 لموازني التحميل أو وكلاء العكس، مما يبسط النشر والصيانة لخادم التطبيق.

اقرأ المزيد
التطوير

أسطورة تطبيق ريلز المرتبط بالمدخلات/المخرجات

2025-01-25

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

اقرأ المزيد
التطوير

تحسين أداء JSON في روبي: قصة تخصيص المكدس ودمج الكود

2025-01-02

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

اقرأ المزيد
التطوير

تحسين أداء JSON في روبي: الجزء الأول

2024-12-18

تتناول هذه المدونة كيفية قيام الكاتب بتحسين أداء جوهرة JSON في لغة البرمجة روبي لتصبح واحدة من أسرع محركات تحليل وإنشاء JSON. وبدلاً من استخدام تقنيات معقدة، تم تطبيق تحسينات بسيطة بناءً على عملية تحديد المواقع، مثل تجنب عمليات الفحص الزائدة، وإعطاء الأولوية للشروط الأقل تكلفة، وتقليل تكاليف الإعداد، واستخدام جداول البحث. وتنطبق هذه التحسينات على كود كل من C و روبي. وقد أدت هذه التحسينات إلى زيادة كبيرة في أداء جوهرة JSON، مما جعلها تنافسية مع بدائل مثل oj، وتقليل الحاجة إلى استخدام تقنية Monkey Patching، وحل مشاكل الاستقرار والتوافق المرتبطة بـ oj.

اقرأ المزيد
التطوير