نقل بيجزي إلى ويندوز: رحلة سلسة عبر الأنظمة الأساسية بشكل مدهش

2025-06-23
نقل بيجزي إلى ويندوز: رحلة سلسة عبر الأنظمة الأساسية بشكل مدهش

كانت عملية نقل بيجزي، وهي أداة ضغط بنمط يونكس، إلى ويندوز سهلة بشكل مدهش. وتفصل المقالة التحديات التي تم مواجهتها، مثل الاختلافات في مكتبة مؤشرات الترابط pthreads ووظائف dirent، بالإضافة إلى اختلافات طفيفة في أسماء وظائف مكتبة C. وقد استخدم الكاتب بذكاء تصحيحات توافق موجودة ونظام بناء Premake للتغلب على هذه العقبات. وقد بسّط Premake إنشاء وصيانة ملفات مشروع Visual Studio، مما أدى في النهاية إلى تنفيذ بيجزي بنجاح على ويندوز.

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

مطوّر SumatraPDF يتخلّى عن std::function بعد 16 عامًا، ويُنشئ حلاً خاصًا به

2025-06-15
مطوّر SumatraPDF يتخلّى عن std::function بعد 16 عامًا، ويُنشئ حلاً خاصًا به

بعد 16 عامًا من تطوير SumatraPDF بلغة C++، تخلى المؤلف عن `std::function` ووظائف lambda نظرًا لصعوبة تصحيح الأخطاء. كانت تقارير الأعطال صعبة الفهم بسبب الأسماء المُولّدة تلقائيًا لوظائف lambda التي يُنشئها المُجمّع. أنشأ وظائف مُخصّصة أبسط لاستدعاء الوظائف، وهي `Func0` و `Func1`. على الرغم من أنها أقل ثراءً من حيث الميزات من `std::function`، إلا أنها توفر مزايا كبيرة في مساحة الذاكرة وسرعة التجميع، كما أنها أسهل في التصحيح. تُفصّل هذه المقالة تصميم وطريقة تنفيذ `Func0` و `Func1`، وتُشرح سبب ملاءمة هذا النهج لاحتياجات SumatraPDF.

اقرأ المزيد