libmdbx 0.13.2 (MDBX) کا اجراء شائع کیا گیا ہے، جس میں ایک اعلی کارکردگی والے کمپیکٹ ایمبیڈڈ کلیدی قدر ڈیٹا بیس کو نافذ کیا گیا ہے۔ libmdbx کوڈ Apache 2.0 لائسنس کے تحت تقسیم کیا جاتا ہے۔ تمام موجودہ آپریٹنگ سسٹمز اور آرکیٹیکچرز سپورٹ ہیں، نیز روسی ایلبرس 2000۔ libmdbx C++ کے لیے ایک ترقی یافتہ API پیش کرتا ہے، ساتھ ہی Rust, Haskell, Python, NodeJS, Ruby, Go, Nim زبانوں کے لیے پرجوش تعاون یافتہ بائنڈنگز پیش کرتا ہے۔ ، ڈینو، سکالا۔
تاریخی طور پر، libmdbx LMDB DBMS کا ایک گہرا کام ہے اور قابل اعتماد، فیچر سیٹ اور کارکردگی میں اپنے آباؤ اجداد سے برتر ہے۔ LMDB کے مقابلے، libmdbx کوڈ کے معیار، API استحکام، جانچ، اور خودکار جانچ پر بہت زیادہ زور دیتا ہے۔ کچھ وصولی کی صلاحیتوں کے ساتھ ڈیٹا بیس کے ڈھانچے کی سالمیت کو جانچنے کے لیے ایک افادیت فراہم کی جاتی ہے۔ ٹیکنالوجی کے لحاظ سے، libmdbx ACID، مضبوط تبدیلی سیریلائزیشن، اور سی پی یو کور میں لکیری اسکیلنگ کے ساتھ نان بلاکنگ ریڈز پیش کرتا ہے۔ آٹو کمپیکٹیفیکیشن، خودکار ڈیٹا بیس سائز مینجمنٹ، اور رینج کے استفسار کا تخمینہ تعاون یافتہ ہے۔
اہم تبدیلیاں:
- پیچیدہ حالات میں صفحہ کی فہرستیں واپس کرتے/ ڈالتے وقت GC اپ ڈیٹ کو تیز کریں۔ پہلے سے غیر فعال تجرباتی اصلاحی فیڈ بیک موڈ کو بہتر اور فعال کر دیا گیا ہے۔ اس سے بنیادی طور پر کنورجنسنس میں بہتری آئی ہے (دوبارہ کوششوں کی تعداد میں کمی ہوئی ہے)، اور نایاب مخصوص حالات میں ٹرانزیکشنز (MDBX_PROBLEM غلطی کی واپسی کے ساتھ) کرتے وقت "لوپنگ" کا باعث بننے والی خرابی کو بھی ختم کر دیا ہے۔
- CMake تعمیر اسکرپٹ میں C23 معیار شامل ہے۔
- جوڑا بنائے گئے char/wchar_t فنکشنز کے لیے T-macros کو شامل کیا گیا۔
- C++ API میں نیسٹڈ رائٹ ٹرانزیکشنز کے لیے سپورٹ شامل کیا گیا۔
- سیمنٹک ورژننگ تفصیلات ("Semantic Versioning 2") کے دوسرے ایڈیشن میں منتقلی مکمل ہو چکی ہے اور VERSION.json کو ورژن کی معلومات کی برآمد کو یقینی بنایا گیا ہے۔
- دوبارہ پیدا کرنے کی صلاحیت کے لیے، SOURCE_DATE_EPOCH ماحولیاتی متغیر کے لیے اضافی تعاون۔ MDBX_BUILD_TIMESTAMP سپورٹ برقرار ہے اور اس متغیر کو فوقیت حاصل ہے۔
- MDBX_BUILD_METADATA آپشن کے ذریعے libmdbx کی تعمیر کے بارے میں اضافی معلومات کی وضاحت کرنے کی صلاحیت شامل کی گئی۔ اب مخصوص معلومات کو لائبریری کے اندر صرف mdbx_build.metadata ویلیو کے طور پر شامل کیا گیا ہے، اور مستقبل میں اسے پیکجز وغیرہ بناتے وقت بھی استعمال کیا جائے گا۔
- API سے واپس آنے والی غلطیوں کی لاگنگ شامل کی گئی۔ اب، ایسا کرنے کے لیے، لاگنگ لیول MDBX_LOG_DEBUG (لاگنگ کی غلطیوں کے لیے مائنس MDBX_NOTFOUND) یا MDBX_LOG_TRACE (تمام خرابیوں کے ساتھ ساتھ MDBX_RESULT_TRUE لاگ ان کرنے کے لیے) سیٹ کرنا کافی ہے۔
- رویے میں تبدیلی:
- mdbx::cursor::get_multiple_samelenth() طریقہ شامل کیا گیا اور mdbx::txn::put_multiple_samelenth() کا نام تبدیل کر دیا گیا۔
- C++ API مستقل مزاجی کے لیے، MDBX_GET_MULTIPLE آپریشن اب کلید کی قدر بھی واپس کرتا ہے۔
- mdbx::env::geometry size constants کے لیے، بنیادی قسم کو unsigned size_t سے دستخط شدہ intptr_t میں تبدیل کر دیا گیا ہے۔
- CRT کے بجائے ntdll استعمال کرنے کا انتخاب اب صرف C++ API کو واضح طور پر غیر فعال کرنے پر کیا جاتا ہے۔
- اس بات کو یقینی بناتا ہے کہ mdbx_txn_commit() کو بھیجے گئے اسقاط شدہ/منقطع پڑھے گئے لین دین کی میموری کو آزاد کر دیا گیا ہے۔ API کنونشن کا تقاضا ہے کہ اس طرح کے لین دین کو mdbx_txn_abort() کا استعمال کرتے ہوئے جاری کیا جائے، جس کی وجہ سے mdbx_txn_commit() ایسے معاملات میں خود ٹرانزیکشنز کو ختم کیے بغیر غلطی واپس کر دیتا ہے۔ اس کے نتیجے میں ایپلی کیشنز میں کیڑے کی وجہ سے میموری کا اخراج ہوا، جس سے رویے میں تبدیلی آتی ہے۔
- اگر وضاحت کی گئی ہو تو __deprecated_enum میکرو کا استعمال کرنا۔
- CMake کے ساتھ تعمیر کرتے وقت، C زبان کا معیار اب CMAKE_C_STANDARD کی بنیاد پر منتخب کیا جاتا ہے۔
ماخذ: opennet.ru
