مكتبة Folly C++: دليل شامل مع أمثلة عملية
1. ما هي مكتبة Folly ولماذا تحتاجها؟
مكتبة Folly (اختصارًا لـ Facebook Open-source LibrarY) هي مجموعة من المكونات البرمجية بلغة C++، تم تطويرها واستخدامها في فيسبوك (التي تُعرف الآن باسم Meta). تقدم هذه المكتبة مجموعة من الأدوات الحديثة عالية الأداء والمختبرة جيدًا، والتي تسد الفجوات الموجودة في المكتبة القياسية للغة C++ (std) ومكتبة Boost. لا تهدف Folly إلى استبدال STL، بل إلى توسيعها وتقديم حلول للمشاكل الشائعة التي تظهر عند تطوير الأنظمة الموزعة واسعة النطاق والخوادم عالية التحميل.
لماذا تحتاج إلى Folly؟ في تطوير C++ الحديث، غالبًا ما تحتاج إلى أدوات غير موجودة في المكتبة القياسية: حاويات فعالة بخصائص محددة (مثل F14HashMap)، أدوات للبرمجة غير المتزامنة (Futures)، عمليات ذرية بحواجز ذاكرة محسّنة (AtomicHashMap)، إدارة الذاكرة بدون أقفال (ConcurrentSkipList)، والعديد من التحسينات منخفضة المستوى. توفر Folly كل هذا كمكونات جاهزة ومختبرة في بيئات الإنتاج. إنها مفيدة بشكل خاص للمطورين الذين يكتبون كود خادم عالي الأداء، أو يعملون مع بروتوكولات الشبكات، أو كميات ضخمة من البيانات، أو يحتاجون إلى سلوك محدد في سيناريوهات تعدد المهام.
الميزة الرئيسية لـ Folly هي تركيزها على الأداء والدقة. العديد من الخوارزميات في Folly تم تنفيذها باستخدام أحدث إمكانيات C++ (C++14/17/20) وتراعي خصائص المعالجات الحديثة (الذاكرة المخبئية، توقع التفرع، تعليمات SIMD). إنها ليست مجرد "مكتبة أخرى"، بل هي مجموعة أدوات تسمح لك بكتابة كود يعمل بشكل أسرع وأكثر كفاءة من الحلول المماثلة باستخدام STL أو Boost، خاصة في ظروف التزامن العالي.
2. كيفية تثبيت المكتبة
Folly هي مكتبة C++، لذا لا يتم تثبيتها عبر pip أو npm. لاستخدامها، يجب عليك بناء المكتبة من الكود المصدري وربطها بمشروعك. الطريقة الموصى بها هي استخدام نظام البناء CMake.
التثبيت عبر vcpkg (موصى به لنظامي Windows و Linux)
# قم بتثبيت vcpkg إذا لم يكن مثبتًا لديك
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh # أو bootstrap-vcpkg.bat لنظام Windows
./vcpkg integrate install
# قم بتثبيت Folly
./vcpkg install folly:x64-windows # لنظام Windows
./vcpkg install folly:x64-linux # لنظام Linux
التثبيت عبر Conan
pip install conan
conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan
conan install folly/2023.01.30@ -r bincrafters
البناء من الكود المصدري (Linux/macOS)
git clone https://github.com/facebook/folly
cd folly
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install
ربط المكتبة بالمشروع (CMake)
find_package(folly REQUIRED)
target_link_libraries(my_project PRIVATE Folly::folly)
3. البداية السريعة — مثال عملي بسيط
المثال التالي يوضح استخدام folly::Future لتنفيذ مهمة غير متزامنة و folly::format لتنسيق النصوص.
#include <iostream>
#include <folly/futures/Future.h>
#include <folly/Format.h>
using namespace folly;
int main() {
// مهمة غير متزامنة: إرجاع الرقم 42
auto future = makeFuture(42);
// سلسلة معالجة: الضرب في 2 ثم التحويل إلى نص
auto result = future
.thenValue([](int x) { return x * 2; })
.thenValue([](int x) { return format("النتيجة: {}", x); })
.get(); // حظر التنفيذ حتى الحصول على النتيجة
std::cout << result << std::endl; // سيطبع: النتيجة: 84
return 0;
}