منصوبے کے بارے میں

pybind11 ایک ہلکی پھلکی، ہیڈر صرف C++ لائبریری ہے جو C++ اور Python کے درمیان ہموار انٹرآپریبلٹی کو قابل بناتی ہے۔ یہ بنیادی طور پر موجودہ C++ کوڈ کے Python بائنڈنگز بنانے کے لیے استعمال ہوتی ہے، C++ کی اقسام کو Python میں ظاہر کرتی ہے اور اس کے برعکس۔ یہ پروجیکٹ Boost.Python کے ایک چھوٹے، خود ساختہ متبادل کے طور پر بنایا گیا تھا، جو C++11 کی خصوصیات جیسے ٹیپلز، لیمبڈا فنکشنز، اور ویری ایڈک ٹیمپلیٹس پر انحصار کرکے Boost کے بڑے انحصار کے نشان سے بچتا ہے۔ لائبریری C++ کی خصوصیات کی ایک وسیع رینج کو Python میں میپ کرنے میں معاونت کرتی ہے، بشمول حسب ضرورت ڈیٹا ڈھانچے والے فنکشنز، انسٹینس اور سٹیٹک میتھڈز، اوور لوڈڈ فنکشنز، ایٹریبیوٹس، استثنیات، انیومریشنز، کال بیکس، آئیٹریٹرز، حسب ضرورت آپریٹرز، وراثت، STL کنٹینرز، سمارٹ پوائنٹرز، اور Python سے ورچوئل میتھڈ ایکسٹینشن۔ یہ مربوط NumPy سپورٹ، NumPy arrays پر خودکار فنکشن ویکٹرائزیشن، موثر ڈیٹا ٹرانسفر کے لیے بفر پروٹوکول کی نمائش، سلائس پر مبنی رسائی، اور C++ اقسام کے لیے پکل سپورٹ بھی فراہم کرتی ہے۔ pybind11 CPython 3.9+، PyPy3، اور GraalPy کے ساتھ ایک نفاذ سے آزاد انٹرفیس کے ذریعے کام کرتی ہے۔ لائبریری صرف چند ہیڈر فائلوں پر مشتمل ہے اور اسے اضافی لائبریریوں کے خلاف لنک کرنے کی ضرورت نہیں ہے۔ دستاویزات pybind11.readthedocs.io پر دستیاب ہیں، جس میں setuptools، scikit-build، اور CMake انٹیگریشن کی مثالیں ہیں۔ یہ پروجیکٹ BSD طرز کے لائسنس کے تحت تقسیم کیا گیا ہے اور PyPI اور conda-forge پر دستیاب ہے۔