Polyfill (programming)
سافٹ ویئر ڈویلپمنٹ میں، پولی فل ایک کوڈ ہے جو ڈویلپمنٹ ماحول کی ایک خصوصیت کو لاگو کرتا ہے جو اس خصوصیت کو مقامی طور پر سپورٹ نہیں کرتا ہے۔ اکثر، یہ جاوا اسکرپٹ لائبریری سے مراد ہے جو ایک ایچ ٹی ایم ایل 5 یا سی ایس ایس ویب معیار کو لاگو کرتا ہے، یا تو پرانے براؤزرز پر ایک قائم شدہ معیار (کچھ براؤزرز کے تعاون سے)، یا موجودہ براؤزرز پر ایک مجوزہ معیار (کسی براؤزرز کے تعاون سے نہیں)۔ پولی فلز پی ایچ پی اور ازگر میں بھی استعمال ہوتے ہیں۔ رسمی طور پر، "پولی فل براؤزر اے پی آئی کے لیے ایک شیم ہے"۔ پولی فلز ویب ڈویلپرز کو API استعمال کرنے کی اجازت دیتا ہے اس سے قطع نظر کہ اسے براؤزر سپورٹ کرتا ہے یا نہیں، اور عام طور پر کم سے کم اوور ہیڈ کے ساتھ۔ عام طور پر وہ پہلے چیک کرتے ہیں کہ آیا براؤزر کسی اے پی آئی کو سپورٹ کرتا ہے، اور اگر دستیاب ہو تو اسے استعمال کرتے ہیں، بصورت دیگر اپنے نفاذ کا استعمال کرتے ہوئے۔ پولی فلز خود دیگر، زیادہ معاون خصوصیات کا استعمال کرتے ہیں، اور اس طرح مختلف براؤزرز کے لیے مختلف پولی فلز کی ضرورت پڑ سکتی ہے۔ یہ اصطلاح ایک فعل کے طور پر بھی استعمال ہوتی ہے: پولی فلنگ ایک خصوصیت کے لیے پولی فل فراہم کر رہی ہے۔ تعریف یہ اصطلاح ایک نیا لفظ ہے، جسے ریمی شارپ نے وضع کیا تھا، جس کے لیے ایک ایسے لفظ کی ضرورت تھی جس کا مطلب تھا کہ "جاوا اسکرپٹ (یا فلیش یا جو کچھ بھی) کا استعمال کرتے ہوئے اے پی آئی کی نقل بنائیں اگر براؤزر کے پاس یہ مقامی طور پر نہیں ہے" جب کہ 2009 میں ایچ ٹی ایم ایل 5 کا تعارف کتاب کا شریک مصنف تھا۔ رسمی طور پر، "شیم ایک لائبریری ہے جو صرف اس ماحول کے ذرائع کا استعمال کرتے ہوئے پرانے ماحول میں ایک نیا اے پی آئی لاتی ہے"۔ پولی فلز بالکل اس تعریف کے مطابق ہیں ؛ شیم کی اصطلاح ابتدائی پولی فلز کے لیے بھی استعمال ہوتی تھی۔ تاہم، شارپ شیم سے مراد غیر شفاف APIs اور حل، جیسے کہ ترتیب کے لیے سپیسر GIFs، جنہیں بعض اوقات shim.gif کے نام سے جانا جاتا ہے، اور اسی طرح کی اصطلاحات جیسے کہ ترقی پسند اضافہ اور خوبصورت انحطاط مناسب نہیں تھے، اس لیے انہوں نے ایک نئی اصطلاح ایجاد کی۔ یہ اصطلاح کثیر مقصدی فلنگ پیسٹ برانڈ پولیفلا پر مبنی ہے، ایک پیسٹ جو دیواروں میں دراڑوں اور سوراخوں کو ڈھانپنے کے لیے استعمال ہوتا ہے، اور اس کا مطلب ہے "بہت سے (پولی-) طریقوں سے سوراخوں کو (فعالیت میں) بھرنا"۔ اس کے بعد سے اس لفظ نے مقبولیت حاصل کی ہے، خاص طور پر پال آئرش اور ماڈرنزر دستاویزات میں اس کے استعمال کی وجہ سے۔ شارپ جو فرق کرتا ہے وہ یہ ہے کہ: یہ فرق دوسرے مصنفین نے نہیں کیا ہے۔ بعض اوقات شیمز، پولی فلز اور فال بیکس کے درمیان مختلف دیگر امتیازات کھینچ لیے جاتے ہیں، لیکن عام طور پر کوئی قبول شدہ امتیازات نہیں ہوتے ہیں: زیادہ تر پولی فلز کو شیم کی ایک شکل سمجھتے ہیں۔ پولی فلر کی اصطلاح بھی کبھی کبھار پائی جاتی ہے۔ مثال کور-جے ایس کور-جے ایس مقبول ترین جاوا اسکرپٹ معیاری لائبریری پولی فل میں سے ایک ہے۔ ای سی ایم اے اسکرپٹ کے لیے معیاری کے تازہ ترین ورژن تک پولی فلز شامل ہیں: وعدے، علامتیں، مجموعے، تکرار، ٹائپ شدہ صف، بہت سی دیگر خصوصیات، ای سی ایم اے اسکرپٹ تجاویز، کچھ کراس پلیٹ فارم ڈبلیو ایچ اے ٹی ڈبلیو جی/ڈبلیو 3 سی خصوصیات اور یو آر ایل جیسی تجاویز۔ آپ صرف مطلوبہ خصوصیات کو لوڈ کر سکتے ہیں یا اسے عالمی نیم اسپیس آلودگی کے بغیر استعمال کر سکتے ہیں۔ اسے بابل کے ساتھ مربوط کیا جا سکتا ہے، جو اسے آپ کے کوڈ میں مطلوبہ کور-جے ایس ماڈیولز کو خود بخود داخل کرنے کی اجازت دیتا ہے۔ ایچ ٹی ایم ایل 5 شیو 9 سے پہلے کے آئی ای ورژن میں، نامعلوم ایچ ٹی ایم ایل عناصر جیسے اور کو خالی عناصر کے طور پر تجزیہ کیا جائے گا، جس سے صفحہ کے گھونسلی ڈھانچے کو توڑ دیا جائے گا اور ان عناصر کو سی ایس ایس کا استعمال کرتے ہوئے اسٹائل کرنا ناممکن ہو جائے گا۔ سب سے زیادہ استعمال ہونے والے پولی فلز میں سے ایک، ایچ ٹی ایم ایل 5 شیو، اس بگ کے ارد گرد کام کرنے کے لیے آئی ای کے ایک اور چکر کا استحصال کرتا ہے: ہر نئے ایچ ٹی ایم ایل 5 عناصر کے لیے document.createElement ("ٹیگنام") کال کرنا، جس کی وجہ سے آئی ای ان کا صحیح تجزیہ کرتا ہے۔ اس میں ان ایچ ٹی ایم ایل 5 عناصر کے لیے بنیادی ڈیفالٹ اسٹائل بھی شامل ہے۔ اگرچہ زیادہ تر پولی فلز پرانے براؤزرز کو نشانہ بناتے ہیں، لیکن کچھ جدید براؤزرز کو تھوڑا اور آگے بڑھانے کے لیے موجود ہیں۔ لیہ ویرو کا-پریفیکس فری پولی فل ایک ایسا پولی فل ہے، جو موجودہ براؤزرز کو ڈویلپر کو تمام وینڈر پریفیکس لکھنے کی ضرورت کے بجائے کئی سی ایس ایس 3 پراپرٹیز کے غیر طے شدہ ورژن کو پہچاننے کی اجازت دیتا ہے۔ یہ صفحہ کی اسٹائل شیٹ کو پڑھتا ہے اور کسی بھی غیر طے شدہ خصوصیات کو موجودہ براؤزر کے ذریعہ تسلیم شدہ ان کے سابقہ ہم منصبوں سے بدل دیتا ہے۔ سلیکٹیوزر کیتھ کلارک کا سلیکٹیوزر ایک مقبول پولی فل ہے جو بہت سے سی ایس ایس 3 سلیکٹرز کو آئی ای 8 اور اس سے نیچے کام کرنے پر مجبور کرتا ہے۔ یہ کئی معروف سی ایس ایس 3 سلیکٹرز کی تلاش میں پیج کی اسٹائل شیٹس کو پڑھتا ہے، پھر ان سلیکٹرز سے ملنے والے عناصر کے لیے دستاویز سے استفسار کرنے کے لیے جاوا اسکرپٹ سلیکٹر لائبریری کا استعمال کرتا ہے، اسٹائلز کو براہ راست ان عناصر پر لاگو کرتا ہے۔ یہ کئی جاوا اسکرپٹ سلیکٹر لائبریریوں جیسے کہ jQuery کی حمایت کرتا ہے۔ فلیکسی ممکنہ طور پر سی ایس ایس 3، فلیکسیبل باکس لے آؤٹ کی سب سے زیادہ متوقع خصوصیات میں سے ایک ہے۔ فلیکس باکس) انٹرفیس عناصر کو ترتیب دینے کے لیے ایک انتہائی طاقتور ٹول ہونے کا وعدہ کرتا ہے۔ ویب کٹ اور موزیلا انجنوں نے سالوں سے ابتدائی ڈرافٹ نحو کی حمایت کی ہے۔ فلیکسی آئی ای اور اوپیرا میں اسی نحو کے لیے سپورٹ لاگو کرتا ہے۔ تاہم، ڈرافٹ سپیک میں ایک نئے (اور بہت زیادہ طاقتور) نحو پر سخت نظر ثانی کی گئی ہے، جسے ابھی تک فلیکسی کی حمایت حاصل نہیں ہے۔ فلیکسی کو اب بھی پرانے نحو کے ساتھ استعمال کیا جا سکتا ہے، لیکن ڈویلپر کو اس بات کو یقینی بنانا چاہیے کہ وہ مستقبل کے براؤزرز کے لیے بھی نیا نحو شامل کریں۔ CSS3 PIE PIE ("پروگریسو انٹرنیٹ ایکسپلورر") IE میں کچھ مقبول ترین لاپتہ CSS3 باکس سجاوٹ کی خصوصیات کو لاگو کرتا ہے، بشمول IE 8 اور اس سے نیچے کے لیے بارڈر ریڈیئس اور باکس شیڈو، اور IE 9 اور اس سے نیچے کے لیے لکیری گریڈینٹ پس منظر۔ ایچ ٹی سی کے رویے (ایک ملکیتی آئی ای خصوصیت) کے طور پر مدعو کیا گیا، یہ مخصوص عناصر پر غیر تعاون یافتہ سی ایس ایس 3 خصوصیات کی تلاش کرتا ہے اور آئی ای 6-8 کے لیے وی ایم ایل اور آئی ای 9 کے لیے ایس وی جی کا استعمال کرتے ہوئے ان خصوصیات کو پیش کرتا ہے۔ اس کی انجام دہی زیادہ تر مقامی براؤزر کے نفاذ سے الگ نہیں ہے اور یہ متحرک ڈی او ایم ترمیم کو اچھی طرح سے سنبھالتی ہے۔ جے ایس او این 2 ڈگلس کرک فورڈ نے اصل میں اپنے (اس وقت آنے والے) جے ایس او این ڈیٹا فارمیٹ کو پڑھنے اور لکھنے کے لیے ایک اے پی آئی کے طور پر json2.js لکھا تھا۔ یہ اتنا وسیع پیمانے پر استعمال ہونے لگا کہ براؤزر فروشوں نے اس کے اے پی آئی کو مقامی طور پر لاگو کرنے اور اسے ڈی فیکٹو معیار میں تبدیل کرنے کا فیصلہ کیا۔ چونکہ json2.js اب پرانے براؤزرز میں نئے براؤزرز کی مقامی خصوصیات کو لاگو کرتا ہے، یہ لائبریری کے بجائے پولی فل بن گیا ہے۔ ای ایس 5-شیم ای سی ایم اے اسکرپٹ 5 واں ایڈیشن ("ای ایس 5") اسکرپٹنگ کی کچھ مفید نئی خصوصیات لاتا ہے، اور چونکہ وہ پرانے جاوا اسکرپٹ انجنوں کے ساتھ نحو طور پر مطابقت رکھتے ہیں اس لیے انہیں زیادہ تر بلٹ ان جے ایس آبجیکٹ پر پیچنگ کے طریقوں سے پولی فل کیا جا سکتا ہے۔ یہ ایس 5-شم پولی فل اسے دو حصوں میں کرتا ہے: es5-shim.js میں وہ طریقے شامل ہیں جو مکمل طور پر پولی فل کیے جا سکتے ہیں، اور es5-sham.js میں دوسرے طریقوں کے جزوی نفاذ شامل ہیں جو درست طریقے سے کام کرنے کے لیے بنیادی انجن پر بہت زیادہ انحصار کرتے ہیں۔ فلیش کینوس ایڈوب فلیش پلگ ان کا استعمال کرتے ہوئے ایچ ٹی ایم ایل 5 کینوس اے پی آئی کا نفاذ ہے۔ ایک نایاب تجارتی پولی فل، یہ ایک ادا شدہ ورژن کے ساتھ ساتھ ایک مفت ورژن میں آتا ہے، جس میں سائے جیسی کچھ جدید خصوصیات کا فقدان ہے۔ MediaElement.js فلیش یا سلور لائٹ پلگ ان کا استعمال کرتے ہوئے پرانے براؤزرز میں ایچ ٹی ایم ایل 5 میڈیا ایلیمنٹ اے پی آئی سمیت <ویڈیو> اور <آڈیو> عناصر کے لیے جان ڈائر کا MediaElement.js پولی فلز سپورٹ۔ یہ ان عناصر کے لیے ایک اختیاری میڈیا پلیئر UI بھی فراہم کرتا ہے، جو تمام براؤزرز میں یکساں ہے۔ موزیلا کی طرف سے تجویز کردہ براؤزر آئی ڈی تصدیق پروٹوکول، توجہ حاصل کرنے میں ناکام رہا۔ ویبشمس لب الیگزینڈر فرکاس کا ویبشمس لب بہت سے دیگر پولی فلز کو ایک ساتھ ایک پیکیج میں جمع کرتا ہے اور مشروط طور پر صرف ان کو لوڈ کرتا ہے جن کی وزٹنگ براؤزر کو ضرورت ہوتی ہے۔ Hyphenopoly.js Hyphenopoly.js خودکار ہائفنشن کو فعال کرتا ہے اگر اسے پہلے سے ہی متعلقہ دستاویز کی زبان کے لیے براؤزر کی طرف سے سپورٹ نہیں کیا گیا ہے۔ اڈاپٹر پیٹرن شم (کمپیوٹنگ) ریپر لائبریری اڈاپٹو ویب ڈیزائن بیکورڈ مطابقت نوٹ حوالہ جات بیرونی لنکس مطابقت تہ ویب براؤزر ذمہ دار ویب ڈیزائن ویب ڈویلپمنٹ