Bionic (software)
بایونک معیاری سی لائبریری کا نفاذ ہے، جسے گوگل نے اپنے اینڈرائڈ آپریٹنگ سسٹم کے لیے تیار کیا ہے۔ یہ عام لینکس سسٹم سے کم میموری اور پروسیسر پاور والے آلات کے لیے ڈیزائن کیے جانے میں جی این یو سی لائبریری (جی ایل آئی بی سی) سے مختلف ہے۔ یہ فری بی ایس ڈی، نیٹ بی ایس ڈی، اور اوپن بی ایس ڈی کے نئے کوڈ اور کوڈ کا مجموعہ ہے جو جی ایل آئی بی سی کے بجائے بی ایس ڈی لائسنس کے تحت جاری کیا گیا ہے، جو جی این یو لیسر جنرل پبلک لائسنس استعمال کرتا ہے۔ یہ فرق اینڈرائیڈ کے ابتدائی دنوں میں اہم تھا، جب جامد لنکنگ عام تھی، اور اب بھی ملکیتی آپریٹنگ سسٹم کے لیے استعمال ہونے والی سافٹ ویئر کمپنیوں کو اینڈرائیڈ متعارف کرانے میں مددگار ہے، جو ایل جی پی ایل سے محتاط رہ سکتے ہیں، اور اس کے اور مکمل جی این یو جنرل پبلک لائسنس (جی پی ایل) کے درمیان فرق کے بارے میں واضح نہیں ہیں۔ بایونک لینکس کرنل کے ساتھ استعمال کے لیے ایک سی لائبریری ہے، اور libc، libdl، اور libm فراہم کرتا ہے (libpthreed فعالیت libc کا حصہ ہے، کچھ دوسرے سسٹمز کی طرح علیحدہ لائبریری نہیں)۔ یہ بی ایس ڈی سی لائبریریوں سے مختلف ہے جن کے ساتھ بایونک کوڈ کا اشتراک کرتا ہے، کیونکہ انہیں بی ایس ڈی دانا کی ضرورت ہوتی ہے۔ اصل اہداف بایونک کے لیے عوامی طور پر بیان کردہ اصل اہداف درج ذیل تھے: بی ایس ڈی لائسنس یافتہ: گوگل ایک ملکیتی یوزر اسپیس اور ایپلیکیشن ماحولیاتی نظام بنانے کے لیے اینڈرائیڈ ایپلی کیشنز کو کاپی لیفٹ لائسنس کے اثر سے الگ کرنا چاہتا تھا، لیکن: اینڈرائیڈ لینکس کرنل پر مبنی ہے، جو کاپی لیفٹ جی این یو جنرل پبلک لائسنس (جی پی ایل) ورژن 2 کے تابع ہے۔ لینکس دانا کے لیے سب سے زیادہ وسیع پیمانے پر معیاری سی لائبریری جی این یو سی لائبریری (جی ایل آئی بی سی) ہے، جو جی این یو لیسر جنرل پبلک لائسنس (ایل جی پی ایل) کے تابع ہے، جو ایک کاپی لیفٹ لائسنس بھی ہے۔ جی پی ایل کے برعکس، ایل جی پی ایل واضح طور پر متحرک لنکنگ کی اجازت دیتا ہے لیکن یہ سورس کوڈ یا لنک ایبل آبجیکٹ فائلیں فراہم کیے بغیر ملکیتی سافٹ ویئر کے جامد لنکنگ کی اجازت نہیں دیتا ہے۔ اجازت والا بی ایس ڈی لائسنس ایک غیر کاپی لیفٹ لائسنس ہے جو دونوں سمتوں میں مطابقت رکھتا ہے۔ ایک بی ایس ڈی لائسنس یافتہ گلبک متبادل کاپی لیفٹ کور (دانا) اور غیر کاپی لیفٹ ایپلی کیشنز کے درمیان ایک الگ تھلگ پرت کے طور پر کام کر سکتا ہے، اور اس لیے گوگل نے اسے اپنے بایونک کے لیے گلبک متبادل کے طور پر منتخب کیا تھا۔ چھوٹا سائز: بایونک جی این یو سی لائبریری سے بہت چھوٹا تھا ؛ اس سے بھی اہم بات یہ ہے کہ اس کی میموری کی ضروریات بہت کم تھیں (اور باقی ہیں)۔ رفتار: بایونک کو نسبتا کم گھڑی تعدد پر سی پی یو کے لیے ڈیزائن کیا گیا تھا۔ معاون آرکیٹیکچرز بایونک صرف لینکس دانے کی حمایت کرتا ہے، لیکن فی الحال بازو، بازو 64، رسکو 64، x86، اور x 86-64 آرکیٹیکچرز کی حمایت کرتا ہے۔ پلیٹ فارم کو خود مارش میلو کے بعد سے نیون کے ساتھ آرم وی 7 کی ضرورت تھی، حالانکہ اینڈرائڈ نیٹو ڈویلپمنٹ کٹ (این ڈی کے) نے این ڈی کے آر 16 تک آرم وی 5 (جسے اس نے ارمیبی کہا تھا) کی حمایت جاری رکھی۔ این ڈی کے اب بھی نیون کے ساتھ اور اس کے بغیر آرم وی 7 کو سپورٹ کرتا ہے۔ تاریخی طور پر پلیٹ فارم میں جزوی ایس ایچ-4 سپورٹ موجود تھی، لیکن کبھی بھی کوئی ڈیوائس نہیں بھیجی گئی اور اس کے بعد سے سپورٹ کو ہٹا دیا گیا ہے۔ این ڈی کے نے کبھی بھی ایس ایچ-4 کی حمایت نہیں کی، اور آر 17 میں این ڈی کے سے ایم آئی پی ایس اور ایم آئی پی ایس 64 کی حمایت کو ہٹا دیا گیا۔ اجزاء libc ماخذ کے کچھ حصے، جیسے stdio، بی ایس ڈی (بنیادی طور پر اوپن بی ایس ڈی) سے ہیں، جبکہ دیگر، جیسے پی تھریڈ کا نفاذ، شروع سے لکھا گیا تھا۔ متحرک میموری الاکیٹر کا نفاذ وقت کے ساتھ بدل گیا ہے۔ لالی پاپ سے پہلے ایک واحد مقامی میموری الاکیٹر تھا، ڈوگ لی کا ڈی ایل میلوک۔ لولی پاپ اور مارش میلو کے لیے دو نفاذ تھے: ڈی ایل میلوک اور جیمالوک۔ جیملوک ڈی ایل میلوک کے مقابلے میں بہت زیادہ کارکردگی دیتا ہے، لیکن حساب کتاب کے لیے درکار اضافی میموری کی قیمت پر۔ زیادہ تر آلات جیملوک استعمال کرتے تھے لیکن کم میموری والے آلات اب بھی ڈی ایل میلوک استعمال کرتے ہیں۔ اینڈرائڈ 10 کے ذریعے نوگٹ کے لیے، تمام آلات جیمالوک استعمال کرتے ہیں۔ کم میموری والے آلات جیمالوک کی "سویلیٹ" ترتیب کا استعمال کرتے ہیں جو جیمالوک کی زیادہ تر رفتار کو برقرار رکھتے ہوئے ڈی ایل میلوک کے نچلے میموری اوور ہیڈ سے تقریبا ملنے کے لیے ٹی کیش کو غیر فعال کر دیتا ہے۔ اینڈرائیڈ 11 میں، زیادہ تر آلات کے لیے میموری الاکیٹر کو سکوڈو میں تبدیل کر دیا گیا تھا، جو اضافی حفاظتی سختی کی خصوصیات کے لیے جیملوک کی کچھ اعلی کارکردگی کی قربانی دیتا ہے۔ تاہم، کم میموری والے آلات کو اب بھی جیمالوک استعمال کرنے کی اجازت ہے۔ کچھ 64 بٹ ڈیوائسز، جیسے کہ نیکسس 9، مؤثر طریقے سے کم میموری والے ڈیوائسز ہیں کیونکہ 64 بٹ پوائنٹرز کی اضافی جگہ کی ضروریات اور دو زیگوٹس کی میزبانی کی وجہ سے۔ (زیگوٹ ایک اینڈرائڈ سسٹم سروس ہے جو تمام اینڈرائڈ ایپلی کیشن کے عمل کی بنیاد ہے۔) لبم کا ذریعہ بڑی حد تک فری بی ایس ڈی کا ہے، لیکن مختلف ایس او سی فروشوں کے تعاون سے بہتر اسمبلر کے ساتھ۔ متحرک لنکر (اور libdl) شروع سے لکھا گیا تھا۔ بایونک میں لبتھریڈ _ ڈی بی (جی ڈی بی سرور کے ذریعہ استعمال کیا جاتا ہے) شامل نہیں ہے، لیکن این ڈی کے کرتا ہے۔ اینڈرائیڈ پلیٹ فارم میں ایک مستحکم طور پر منسلک جی ڈی بی سرور شامل ہے، تاکہ ڈویلپرز پرانے آلات پر بھی جدید ترین جی ڈی بی استعمال کر سکیں۔ اینڈرائیڈ پر کوئی علیحدہ libpthreed، libresolv، یا librart نہیں ہے۔ تمام فعالیت libc میں ہے۔ لب تھریڈ کے لیے، سنگل تھریڈ کیس کے لیے بہتر بنانے کی کوئی کوشش نہیں کی جاتی ہے کیونکہ ایپس تھرڈ پارٹی کوڈ کی پہلی ہدایت کے چلنے سے پہلے ہی ملٹی تھریڈ ماحول میں ہوتی ہیں۔ اینڈرائیڈ پلیٹ فارم C + + معیاری لائبریری کے لیے libc + + کا استعمال کرتا ہے (لالی پاپ استعمال شدہ اسٹیلپورٹ تک اور اس میں شامل)۔ این ڈی کے نے تاریخی طور پر اسٹیلپورٹ اور جی این یو لبسٹ ڈی سی + + کی پیشکش کی، لیکن انہیں این ڈی کے آر 18 کے طور پر ہٹا دیا گیا۔ نوٹ کریں کہ اگر اینڈرائیڈ ایپ میں کوئی مقامی کوڈ C + + استعمال کرتا ہے، تو تمام C + + کو ایک ہی STL استعمال کرنا چاہیے۔ ایس ٹی ایل اینڈرائیڈ او ایس کے ذریعے فراہم نہیں کیا جاتا ہے، اور اسے ہر ایپ کے ساتھ بنڈل ہونا چاہیے۔ پوزیکس سے اختلافات اگرچہ بایونک کا مقصد تمام سی 11 اور پوزیکس کو نافذ کرنا ہے، لیکن اب بھی (اورییو کے طور پر) تقریبا 70 پوزیکس افعال libc سے غائب ہیں۔ پوزیکس فنکشنز بھی ہیں جیسے اینڈپونٹ/گیٹپونٹ/سیٹپونٹ فیملی جو اینڈرائیڈ پر لاگو نہیں ہیں کیونکہ اس میں پاس ڈبلیو ڈی ڈیٹا بیس کا فقدان ہے۔ اوریو کے طور پر، لبم مکمل ہے۔ کچھ فنکشن حفاظتی وجوہات کی بناء پر جان بوجھ کر پوزیکس یا سی معیارات کے مطابق نہیں ہوتے ہیں، جیسے کہ پرنٹ ایف جو% n فارمیٹ سٹرنگ کی حمایت نہیں کرتا ہے۔ سب سے زیادہ استعمال ہونے والی جی این یو ایکسٹینشنز میں سے بہت سی بایونک میں لاگو کی جاتی ہیں، جیسا کہ مختلف بی ایس ڈی ایکسٹینشنز ہیں۔ این ڈی کے پلیٹ فارم کوڈ سے تعلق براہ راست بایونک کا استعمال کرتا ہے، لیکن تھرڈ پارٹی ڈویلپرز اینڈرائڈ نیٹو ڈویلپمنٹ کٹ (این ڈی کے) کا استعمال کرتے ہیں۔ بہت سے تھرڈ پارٹی ڈویلپرز اب بھی پرانی او ایس ریلیزز کو نشانہ بناتے ہیں، جو اس وسیع عقیدے میں معاون ہے کہ بایونک میں بہت سی خصوصیات کا فقدان ہے۔ جنجر بریڈ نے libc سے 803 افعال برآمد کیے لیکن Oreo 1278 (1.6x اضافہ) برآمد کرتا ہے۔ تاریخی طور پر این ڈی کے اور پلیٹ فارم الگ ہو گئے، لیکن این ڈی کے آر 11 اور بعد میں این ڈی کے فورکس کو ان کے موجودہ پلیٹ فارم کے مساوی کے ساتھ تبدیل کر دیا گیا ہے۔ یہ کام ابتدائی طور پر جی سی سی اور کلانگ مرتب کرنے والوں پر مرکوز تھا۔ این ڈی کے آر 14 سے پہلے، جب "یونیفائیڈ" ہیڈرز کو پہلی بار آپٹ ان کی بنیاد پر پیش کیا گیا تھا، تو این ڈی کے نے مختلف اے پی آئی سطحوں کے لیے پلیٹ فارم ہیڈرز کی کاپیاں فورک کر دی تھیں۔ اس کا مطلب یہ تھا کہ صرف ہیڈر فکسس (مثال کے طور پر مستقل یا ساخت کی تعریفوں کے فکسس) زیادہ تر این ڈی کے صارفین کے لیے دستیاب نہیں تھے کیونکہ وہ ایک پرانی اے پی آئی سطح کو نشانہ بنا رہے تھے، لیکن پلیٹ فارم فکسس صرف موجودہ پلیٹ فارم ہیڈرز میں جا رہے تھے۔ اوریو ڈویلپمنٹ پیریڈ میں پلیٹ فارم ہیڈرز کو اے پی آئی سطح کی معلومات کے ساتھ اینوٹیٹ کیا گیا تھا تاکہ ہیڈرز کا ایک ہی سیٹ تمام اے پی آئی سطحوں کے لیے استعمال کیا جا سکے، صرف وہی افعال جو ڈویلپر کی ٹارگٹڈ اے پی آئی سطح پر دستیاب ہیں۔ یہ نام نہاد "یونیفائیڈ" ہیڈر ہیں، اور این ڈی کے آر 15 کے بعد سے ڈیفالٹ رہے ہیں۔ این ڈی کے آر 16 سے پہلے، این ڈی کے نے libc + + کا استعمال کرتے ہوئے libandroid_support.a نامی لائبریری کو کوڈ سے منسلک کیا۔ اس نے libc + + کے لیے مطلوبہ افعال فراہم کیے جو پرانی OS ریلیزز میں نہیں تھے۔ یہ وہی کوڈ نہیں تھا جو پلیٹ فارم کے ذریعہ استعمال کیا گیا تھا اور اس نے متعدد کیڑے متعارف کروائے تھے (جیسے کہ کسی بھی کوڈ میں پرنٹ ایف فیملی میں پوزیشن کے دلائل کو توڑنا جس میں libc + + استعمال کیا گیا تھا)۔ این ڈی کے میں آر 16 libandroid_support.a اب بھی موجود ہے، لیکن اب اسے براہ راست پلیٹ فارم ماخذ سے بنایا گیا ہے (این ڈی کے کی تعمیر کے وقت موجودہ)۔ فورٹیفائی سورس اینڈرائیڈ جیلی بین ایم آر 1 (4.2) کے طور پر، بایونک گلبکس _ فورٹیفائی _ سورس سے ملتی جلتی فعالیت کی حمایت کرتا ہے، جو ایک ایسی خصوصیت ہے جہاں غیر محفوظ سٹرنگ اور میموری افعال (جیسے اسٹرکیپی ()، اسٹرکیٹ ()، اور میمکیپی ()) میں بفر اوور رن کے چیک شامل ہیں۔ یہ چیک مرتب کرنے کے وقت انجام دیے جاتے ہیں اگر بفر سائز کا تعین مرتب کرنے کے وقت کیا جا سکتا ہے، یا بصورت دیگر رن ٹائم۔ چونکہ فورٹیفائی libc سے رن ٹائم سپورٹ پر انحصار کرتا ہے، اس لیے پرانے اینڈرائڈ ریلیزز میں اس کی پورٹیبلٹی محدود ہے۔ پلیٹ فارم خود _ FORTIFY _ SORCE فعال کے ساتھ بنایا گیا ہے۔ تاریخی طور پر، فورٹیفائی کی خامیوں میں سے ایک یہ رہی ہے کہ یہ جی سی سی کے ساتھ قریب سے جڑا ہوا ہے، جس کی وجہ سے کلیانگ جیسے دوسرے مرتب کرنے والوں میں اچھی طرح سے سپورٹ کرنا بہت مشکل ہو جاتا ہے۔ اس کا مطلب یہ تھا کہ جب اینڈرائیڈ نے اپنے ڈیفالٹ مرتب کے طور پر کلانگ کو تبدیل کیا تو بایونک کا فورٹیفائی نفاذ کافی حد تک کم مفید ہو گیا۔ اینڈرائیڈ اوریو (8.0) میں، بایونک کے فورٹیفائی کو کلانگ کو ذہن میں رکھتے ہوئے اوور ہال کیا گیا، جس کے نتیجے میں کلانگ پر فورٹیفائی جی سی سی پر فورٹیفائی کے برابر تجربہ فراہم کرتا ہے۔ اس بحالی کے بعد سے، کوڈ کو پکڑنے کے لیے Glibc کے اوپر اور اس سے آگے کچھ چیک شامل کیے گئے تھے جو کہ-اگرچہ ضروری نہیں کہ غیر متعین رویے کا سبب بنے-واضح طور پر غلط ہے۔ چونکہ اس نئے نفاذ کے لیے پہلے والے سے زیادہ libc سپورٹ کی ضرورت نہیں ہے، کلیانگ مخصوص اضافہ اوریو سے پہلے اینڈرائیڈ کے ورژن کو نشانہ بنانے والی ایپلی کیشنز کے لیے دستیاب ہیں۔ تنازعات بایونک کی تخلیق کے لیے گوگل نے جی پی ایل وی 2 لائسنس یافتہ لینکس کرنل ہیڈر فائلوں کا استعمال کیا۔ جی پی ایل سے چھٹکارا پانے کے لیے، گوگل نے دعوی کیا کہ اس نے ہیڈر فائلوں کو کسی بھی کاپی رائٹ کے قابل کام سے صاف کر دیا ہے، اور انہیں غیر کاپی رائٹ کے قابل "حقائق" تک کم کر دیا ہے۔ لینکس کے تخلیق کار لینس ٹوروالڈس نے گوگل کے رویے کو قابل قبول سمجھا، لیکن جی پی ایل کی گوگل کی تشریح کو چیلنج کیا گیا ہے، مثال کے طور پر یونیورسٹی آف ہیوسٹن لا سینٹر کے قانون کے پروفیسر ریمنڈ نیممر نے۔ ہائبرس (جسے لبھیبرس بھی کہا جاتا ہے) مسلم ٹوائے باکس حوالہ جات بیرونی لنکس ڈویلپر ہوم پیج برائے اینڈرائڈ اینڈرائڈ نیٹو ڈویلپمنٹ کٹ (این ڈی کے) ہوم پیج بایونک ذرائع (آفیشل ریپوزیٹری) eLinux.org اینڈرائڈ (آپریٹنگ سسٹم) پر بایونک نوٹ سی معیاری لائبریری بی ایس ڈی لائسنس کا استعمال کرتے ہوئے لینکس کرنل سافٹ ویئر کے انٹرفیس