Dynamic software updating
کمپیوٹر سائنس میں، ڈائنامک سافٹ ویئر اپ ڈیٹنگ (ڈی ایس یو) تحقیق کا ایک شعبہ ہے جو پروگراموں کو اپ گریڈ کرنے سے متعلق ہے جب وہ چل رہے ہوتے ہیں۔ ڈی ایس یو فی الحال صنعت میں بڑے پیمانے پر استعمال نہیں ہوتا ہے۔ تاہم، محققین نے ڈی ایس یو کو نافذ کرنے کے لیے مختلف قسم کے نظام اور تکنیکیں تیار کی ہیں۔ ان نظاموں کو عام طور پر حقیقی دنیا کے پروگراموں پر آزمایا جاتا ہے۔ موجودہ آپریٹنگ سسٹم اور پروگرامنگ زبانیں عام طور پر ڈی ایس یو کو ذہن میں رکھتے ہوئے ڈیزائن نہیں کی جاتی ہیں۔ اس طرح، ڈی ایس یو کے نفاذ عام طور پر یا تو موجودہ ٹولز کا استعمال کرتے ہیں، یا خصوصی مرتبوں کو نافذ کرتے ہیں۔ یہ مرتب اصل پروگرام کے الفاظ کو محفوظ رکھتے ہیں، لیکن متحرک طور پر اپ ڈیٹ ہونے والا پروگرام تیار کرنے کے لیے یا تو سورس کوڈ یا آبجیکٹ کوڈ کا آلہ بناتے ہیں۔ محققین حفاظت اور کارکردگی کے اوور ہیڈ کا اندازہ لگانے کے لیے پروگراموں کے ڈی ایس یو کے قابل متغیرات کا موازنہ اصل پروگرام سے کرتے ہیں۔ تعارف کسی بھی چل رہے پروگرام کو ٹپل کے بارے میں سوچا جا سکتا ہے، موجودہ پروگرام کی حالت کہاں ہے اور موجودہ پروگرام کوڈ کہاں ہے۔ متحرک سافٹ ویئر اپ ڈیٹنگ سسٹم ایک چل رہے پروگرام کو ایک نئے ورژن میں تبدیل کر دیتے ہیں۔ ایسا کرنے کے لیے ریاست کو نمائندگی کی توقعات میں تبدیل ہونا چاہیے۔ اس کے لیے اسٹیٹ ٹرانسفارمر فنکشن کی ضرورت ہوتی ہے۔ اس طرح، ڈی ایس یو ایک پروگرام کو اس میں تبدیل کر دیتا ہے۔ ایک اپ ڈیٹ کو درست سمجھا جاتا ہے اگر اور صرف اس صورت میں جب چل رہے پروگرام کو ایک پوائنٹ ٹپل تک کم کیا جا سکتا ہے جو پروگرام کے نئے ورژن کے ابتدائی نقطہ سے قابل رسائی ہے، کسی پروگرام میں وہ مقام جہاں متحرک اپ ڈیٹ ہوتا ہے اسے اپ ڈیٹ پوائنٹ کہا جاتا ہے۔ موجودہ ڈی ایس یو کے نفاذ اپ ڈیٹ پوائنٹس کے علاج میں وسیع پیمانے پر مختلف ہوتے ہیں۔ کچھ سسٹمز میں، جیسے کہ اپ اسٹیر اور پولس میں، عمل کے دوران کسی بھی وقت اپ ڈیٹ ہو سکتا ہے۔ جنسینگ کا مرتب اپ ڈیٹ پوائنٹس کے لیے اچھے مقامات کا اندازہ لگانے کی کوشش کرے گا، لیکن پروگرامر کے مخصوص اپ ڈیٹ پوائنٹس بھی استعمال کر سکتا ہے۔ کٹسون اور اکیڈن میں ڈویلپرز کو دستی طور پر تمام اپ ڈیٹ پوائنٹس کی وضاحت اور نام دینے کی ضرورت ہوتی ہے۔ اپ ڈیٹنگ سسٹم پروگرام کی تبدیلیوں کی اقسام میں مختلف ہوتے ہیں جن کی وہ حمایت کرتے ہیں۔ مثال کے طور پر، Ksplice صرف افعال میں کوڈ کی تبدیلیوں کی حمایت کرتا ہے، اور ریاستی نمائندگی میں تبدیلیوں کی حمایت نہیں کرتا ہے۔ اس کی وجہ یہ ہے کہ Ksplice بنیادی طور پر عام اپ ڈیٹس کے بجائے حفاظتی تبدیلیوں کو نشانہ بناتا ہے۔ اس کے برعکس، اکیڈن کسی پروگرام کو کسی دوسرے پروگرام میں اپ ڈیٹ کر سکتا ہے جو انجام دینے کے قابل ہو، یہاں تک کہ ایک مختلف پروگرامنگ زبان میں لکھا ہوا بھی۔ سسٹم ڈیزائنرز اپ ڈیٹس کے دائرہ کار کو محدود کرکے قیمتی کارکردگی یا حفاظتی یقین دہانی حاصل کر سکتے ہیں۔ مثال کے طور پر، کوئی بھی اپ ڈیٹ سیفٹی چیک اپ ڈیٹس کے دائرہ کار کو محدود کرتا ہے جو اس سیفٹی چیک کو پاس کرتا ہے۔ کوڈ اور ریاست کو تبدیل کرنے کے لیے استعمال ہونے والا طریقہ کار اس بات پر اثر انداز ہوتا ہے کہ نظام کس قسم کی اپ ڈیٹس کی حمایت کرے گا۔ ڈی ایس یو سسٹمز، بطور ٹولز، ڈویلپرز کے لیے ان کے استعمال میں آسانی اور وضاحت پر بھی جائزہ لیا جا سکتا ہے۔ بہت سے ڈی ایس یو سسٹمز، جیسے جنسینگ، کو مختلف جامد تجزیوں کو پاس کرنے کے لیے پروگراموں کی ضرورت ہوتی ہے۔ اگرچہ یہ تجزیے ایسے پروگراموں کی خصوصیات کو ثابت کرتے ہیں جو ڈی ایس یو کے لیے قیمتی ہیں، لیکن وہ فطری طور پر نفیس اور سمجھنے میں مشکل ہیں۔ ڈی ایس یو سسٹم جو جامد تجزیہ استعمال نہیں کرتے ہیں انہیں خصوصی مرتب کے استعمال کی ضرورت پڑ سکتی ہے۔ کچھ ڈی ایس یو سسٹمز کو نہ تو جامد تجزیہ اور نہ ہی خصوصی مرتب کرنے والوں کی ضرورت ہوتی ہے۔ ڈی ایس یو سسٹم کے ذریعے اپ ڈیٹ کیے جانے والے پروگراموں کو ٹارگٹ پروگرام کہا جاتا ہے۔ ڈی ایس یو سسٹمز کی تعلیمی اشاعتوں میں عام طور پر کیس اسٹڈیز کے طور پر کئی ٹارگٹ پروگرام شامل ہوتے ہیں۔ وی ایس ایف ٹی پی ڈی، اوپن ایس ایس ایچ، پوسٹگری ایس کیو ایل، ٹور، اپاچی، جی این یو زیبرا، میمکیچڈ، اور ریڈیس مختلف سسٹمز کے لیے متحرک اپ ڈیٹنگ کے اہداف ہیں۔ چونکہ چند پروگرام متحرک اپ ڈیٹ کو ذہن میں رکھتے ہوئے لکھے جاتے ہیں، اس لیے موجودہ پروگراموں کو دوبارہ ترتیب دینا عملی استعمال کے لیے ڈی ایس یو سسٹم کا جائزہ لینے کا ایک قیمتی ذریعہ ہے۔ متعلقہ فیلڈز متحرک اپ ڈیٹنگ کے ذریعے حل کی جانے والی مسئلہ کی جگہ کو کئی دیگر کے چوراہے کے طور پر سمجھا جا سکتا ہے۔ مثالوں میں چیک پوائنٹنگ، متحرک لنکنگ، اور استقامت شامل ہیں۔ مثال کے طور پر، ایک ڈیٹا بیس جو اپنے آن ڈسک فائل فارمیٹ کے پچھلے ورژن کے ساتھ پسماندہ مطابقت رکھتا ہو، اسے متحرک اپ ڈیٹنگ سسٹم سے متوقع اسی قسم کی ریاستی تبدیلی کو پورا کرنا ہوگا۔ اسی طرح، ایک ایسا پروگرام جس میں پلگ ان فن تعمیر ہو، اسے رن ٹائم پر نیا کوڈ لوڈ کرنے اور اس پر عمل درآمد کرنے کے قابل ہونا چاہیے۔ اسی طرح کی تکنیکیں بعض اوقات متحرک ڈیڈ کوڈ کے خاتمے کے مقصد کے لیے بھی استعمال کی جاتی ہیں تاکہ لوڈ یا رن ٹائم پر مشروط طور پر ڈیڈ یا ناقابل رسائی کوڈ کو ہٹایا جا سکے، اور باقی کوڈ کو اس کے میموری فوٹ پرنٹ کو کم کرنے یا رفتار کو بہتر بنانے کے لیے دوبارہ ملایا جا سکے۔ متحرک سافٹ ویئر کو اپ ڈیٹ کرنے کا سب سے قدیم پیش خیمہ بے کار نظام ہے۔ بے کار ماحول میں، اسپیئر سسٹم موجود ہوتے ہیں جو مرکزی سسٹم کی ناکامی کی صورت میں فعال کمپیوٹیشن کو کنٹرول کرنے کے لیے تیار ہوتے ہیں۔ ان نظاموں میں ایک مرکزی مشین اور ایک گرم اسپیئر ہوتا ہے۔ گرم اسپیئر کو وقتا فوقتا پرائمری سسٹم کے چیک پوائنٹ کے ساتھ سیڈ کیا جاتا تھا۔ ناکامی کی صورت میں، گرم اسپیئر قبضہ کر لے گا، اور مرکزی مشین نیا گرم اسپیئر بن جائے گی۔ اس نمونے کو اپ ڈیٹ کرنے کے لیے عام کیا جا سکتا ہے۔ اپ ڈیٹ کی صورت میں، گرم اسپیئر فعال ہو جائے گا، مرکزی سسٹم اپ ڈیٹ ہو جائے گا، اور پھر اپ ڈیٹ شدہ سسٹم دوبارہ کنٹرول شروع کر دے گا۔ سب سے قدیم حقیقی متحرک سافٹ ویئر اپ ڈیٹنگ سسٹم ڈی وائی ایم او ایس (متحرک ترمیم کا نظام) ہے۔ 1983 میں انسپ لی کے پی ایچ ڈی کے مقالے میں پیش کیا گیا، ڈی وائی ایم او ایس ایک مکمل طور پر مربوط نظام تھا جس میں ایک انٹرایکٹو یوزر انٹرفیس، ایک موڈولا ورژن کے لیے ایک مرتب اور رن ٹائم، اور سورس کوڈ تک رسائی تھی۔ اس نے ڈی وائی ایم او ایس کو موجودہ پروگرام کے خلاف اپ ڈیٹس کو ٹائپ چیک کرنے کے قابل بنایا۔ نفاذ ڈی ایس یو سسٹمز کو نئے کوڈ کو چل رہے پروگرام میں لوڈ کرنا چاہیے، اور موجودہ ریاست کو ایک ایسی شکل میں تبدیل کرنا چاہیے جو نئے کوڈ سے سمجھ میں آئے۔ چونکہ ڈی ایس یو کے بہت سے محرک استعمال کے معاملات وقت کے لحاظ سے اہم ہیں (مثال کے طور پر، ایک زندہ اور کمزور نظام پر حفاظتی فکس کی تعیناتی)، ڈی ایس یو سسٹمز کو مناسب اپ ڈیٹ کی دستیابی فراہم کرنی چاہیے۔ کچھ ڈی ایس یو سسٹم اس بات کو یقینی بنانے کی بھی کوشش کرتے ہیں کہ اپ ڈیٹس کو لاگو کرنے سے پہلے محفوظ ہیں۔ ان میں سے کسی بھی مسئلے کا کوئی باقاعدہ حل نہیں ہے۔ عام طور پر، ایک ڈی ایس یو نظام جو ایک مسئلہ کے علاقے میں اچھی کارکردگی کا مظاہرہ کرتا ہے، دوسروں کے ساتھ تجارت میں ایسا کرتا ہے۔ مثال کے طور پر، متحرک اپ ڈیٹس کی تجرباتی جانچ اس بات کی نشاندہی کرتی ہے کہ اپ ڈیٹ پوائنٹس کی تعداد میں اضافے کے نتیجے میں غیر محفوظ اپ ڈیٹس کی تعداد میں اضافہ ہوتا ہے۔ کوڈ کی تبدیلی زیادہ تر ڈی ایس یو سسٹم اپ ڈیٹس کے لیے کوڈ کی اکائی کے طور پر سبروٹینز کا استعمال کرتے ہیں ؛ تاہم، نئے ڈی ایس یو سسٹم پورے پروگرام کی اپ ڈیٹس کو نافذ کرتے ہیں۔ اگر ٹارگٹ پروگرام کو ورچوئل مشین لینگویج میں لاگو کیا جاتا ہے، تو وی ایم نئے کوڈ کو لوڈ کرنے کے لیے موجودہ انفراسٹرکچر کا استعمال کر سکتا ہے، کیونکہ جدید ورچوئل مشینیں ڈی ایس یو (بنیادی طور پر ڈیبگنگ) کے علاوہ دیگر استعمال کے معاملات کے لیے رن ٹائم لوڈنگ کی حمایت کرتی ہیں۔ ہاٹ اسپاٹ جے وی ایم رن ٹائم کوڈ لوڈنگ کی حمایت کرتا ہے، اور جاوا (پروگرامنگ زبان) کو نشانہ بنانے والے ڈی ایس یو سسٹم اس خصوصیت کو استعمال کر سکتے ہیں۔ مقامی زبانوں جیسے سی یا سی + + میں، ڈی ایس یو سسٹم خصوصی مرتب استعمال کر سکتے ہیں جو پروگرام میں سمت داخل کرتے ہیں۔ اپ ڈیٹ کے وقت، اس ہدایت کو تازہ ترین ورژن کی طرف اشارہ کرنے کے لیے اپ ڈیٹ کیا جاتا ہے۔ اگر کوئی ڈی ایس یو سسٹم ان سمتوں کو مستحکم طور پر داخل کرنے کے لیے مرتب کا استعمال نہیں کرتا ہے، تو وہ انہیں بائنری ری رائٹنگ کے ساتھ رن ٹائم پر داخل کرتا ہے۔ بائنری ری رائٹنگ افعال کو ری ڈائریکٹ کرنے کے لیے چل رہے مقامی پروگرام کی میموری امیج میں نچلے درجے کا کوڈ لکھنے کا عمل ہے۔ اگرچہ اس کے لیے کسی پروگرام کے جامد تجزیے کی ضرورت نہیں ہے، لیکن یہ انتہائی پلیٹ فارم پر منحصر ہے۔ ایکیڈن اور کٹسن مکمل طور پر نیا پروگرام شروع کرنے کے ذریعے نیا پروگرام کوڈ لوڈ کرتے ہیں، یا تو فورک-ایکسیک یا ڈائنامک لوڈنگ کے ذریعے۔ اس کے بعد موجودہ پروگرام کی حالت کو نئے پروگرام کی جگہ پر منتقل کر دیا جاتا ہے۔ ریاستی تبدیلی اپ ڈیٹ کے دوران، پروگرام کی حالت کو اصل نمائندگی سے نئے ورژن کی نمائندگی میں تبدیل کیا جانا چاہیے۔ اسے ریاستی تبدیلی کہا جاتا ہے۔ ایک فنکشن جو کسی اسٹیٹ آبجیکٹ یا اشیاء کے گروپ کو تبدیل کرتا ہے اسے ٹرانسفارمر فنکشن یا اسٹیٹ ٹرانسفارمر کہا جاتا ہے۔ ڈی ایس یو سسٹم یا تو ٹرانسفارمر کے افعال کو ترکیب کرنے کی کوشش کر سکتے ہیں، یا اس کی ضرورت ہوتی ہے کہ ڈویلپر انہیں دستی طور پر فراہم کرے۔ کچھ نظام ان طریقوں کو ملاتے ہیں، ٹرانسفارمر کے کچھ عناصر کا اندازہ لگاتے ہیں جبکہ دوسروں پر ڈویلپر ان پٹ کی ضرورت ہوتی ہے۔ ان ٹرانسفارمر افعال کو یا تو پروگرام کی حالت پر سست روی سے لاگو کیا جا سکتا ہے، کیونکہ پرانے ورژن کی حالت کے ہر ٹکڑے تک رسائی حاصل کی جاتی ہے، یا بے تابی سے، اپ ڈیٹ کے وقت تمام حالت کو تبدیل کیا جاتا ہے۔ سست تبدیلی اس بات کو یقینی بناتی ہے کہ اپ ڈیٹ مستقل وقت میں مکمل ہو جائے گا، لیکن آبجیکٹ تک رسائی پر مستحکم حالت کا اوور ہیڈ بھی ہوتا ہے۔ اپ ڈیٹ کے وقت پرجوش تبدیلی میں زیادہ خرچ آتا ہے، جس کے لیے نظام کو دنیا کو روکنے کی ضرورت ہوتی ہے جبکہ تمام ٹرانسفارمر چلتے ہیں۔ تاہم، پرجوش تبدیلی مرتب کرنے والوں کو ریاستی رسائی کو مکمل طور پر بہتر بنانے کی اجازت دیتی ہے، سست تبدیلی میں شامل مستحکم ریاست کے اوور ہیڈ سے گریز کرتے ہوئے۔ حفاظت کو اپ ڈیٹ کریں زیادہ تر ڈی ایس یو سسٹم اپ ڈیٹس کے لیے کچھ حفاظتی خصوصیات دکھانے کی کوشش کرتے ہیں۔ حفاظتی جانچ کا سب سے عام متغیر قسم کی حفاظت ہے، جہاں کسی اپ ڈیٹ کو محفوظ سمجھا جاتا ہے اگر اس کے نتیجے میں کوئی نیا کوڈ پرانی ریاست کی نمائندگی پر کام نہیں کرتا ہے، یا اس کے برعکس۔ ٹائپ سیفٹی کی جانچ عام طور پر دو خصوصیات میں سے ایک، ایکٹیونیس سیفٹی یا کنس فرینیس سیفٹی دکھا کر کی جاتی ہے۔ اگر اپ ڈیٹ کے وقت کال اسٹیک پر کوئی تازہ ترین فنکشن موجود نہ ہو تو کسی پروگرام کو فعالیت سے محفوظ سمجھا جاتا ہے۔ یہ حفاظت کو ثابت کرتا ہے کیونکہ کنٹرول کبھی بھی پرانے کوڈ پر واپس نہیں آسکتا ہے جو ڈیٹا کی نئی نمائندگی تک رسائی حاصل کرے گا۔ کنس فرینیس ٹائپ سیفٹی کو ثابت کرنے کا ایک اور طریقہ ہے، جہاں کوڈ کا ایک حصہ محفوظ سمجھا جاتا ہے اگر وہ کسی دی گئی قسم کی حالت تک اس طرح رسائی حاصل نہیں کرتا ہے جس میں ٹائپ کی نمائندگی کے علم کی ضرورت ہوتی ہے۔ یہ کہا جا سکتا ہے کہ یہ کوڈ ریاست تک ٹھوس طور پر رسائی حاصل نہیں کر سکتا، جبکہ یہ ریاست تک تجریدی طور پر رسائی حاصل کر سکتا ہے۔ کوڈ کے کسی بھی حصے میں ہر قسم کے لیے عدم آزادی کو ثابت یا غلط ثابت کرنا ممکن ہے، اور ڈی ایس یو سسٹم جنسینگ ٹائپ سیفٹی کو ثابت کرنے کے لیے اس کا استعمال کرتا ہے۔ اگر کوئی فنکشن کنس فری ثابت ہوتا ہے، تو اسے اسٹیک پر لائیو ہونے کے باوجود بھی اپ ڈیٹ کیا جا سکتا ہے، کیونکہ یہ پرانی نمائندگی کا استعمال کرتے ہوئے ریاست تک رسائی حاصل کرنے سے ٹائپ ایرر کا سبب نہیں بنے گا۔ ہیڈن اور دیگر کے ذریعہ عدم آزادی اور فعالیت کی حفاظت کا تجرباتی تجزیہ۔ دکھائیں کہ دونوں تکنیک زیادہ تر درست اپ ڈیٹس کی اجازت دیتی ہیں اور زیادہ تر غلط اپ ڈیٹس سے انکار کرتی ہیں۔ تاہم، دستی طور پر اپ ڈیٹ پوائنٹس کو منتخب کرنے کے نتیجے میں صفر اپ ڈیٹ کی غلطیاں ہوتی ہیں، اور پھر بھی بار بار اپ ڈیٹ کی دستیابی کی اجازت دیتا ہے۔ موجودہ نظام DYMOS DYMOS اس لحاظ سے قابل ذکر ہے کہ یہ سب سے قدیم مجوزہ DSU نظام تھا۔ ڈی وائی ایم او ایس ماڈیولا کے مشتق میں لکھے گئے پروگراموں کے لیے مکمل طور پر مربوط ماحول پر مشتمل ہوتا ہے، جو سسٹم کو آر ای پی ایل کی طرح کمانڈ انٹرپریٹر، سورس کوڈ، مرتب، اور رن ٹائم ماحول تک رسائی فراہم کرتا ہے۔ ڈی وائی ایم او ایس میں، تعاملی ماحول میں کمانڈ پر عمل درآمد کرنے والے صارف کے ذریعے اپ ڈیٹس کا آغاز کیا جاتا ہے۔ اس کمانڈ میں ہدایات شامل ہیں جو یہ بتاتی ہیں کہ اپ ڈیٹ کب ہو سکتا ہے، جسے کب-شرائط کہا جاتا ہے۔ ڈی وائی ایم او ایس کے لیے دستیاب معلومات اسے چل رہے ٹارگٹ پروگرام کے حوالے سے اپ ڈیٹس کی ٹائپ سیفٹی کو نافذ کرنے کے قابل بناتی ہے۔ کے اسپلیس، کے پیچ اور کے گرافٹ کے اسپلیس ایک ڈی ایس یو سسٹم ہے جو صرف لینکس دانا کو نشانہ بناتا ہے، جو خود کو خصوصی ڈی ایس یو سسٹمز میں سے ایک بناتا ہے جو ایک آپریٹنگ سسٹم دانا کو ہدف پروگرام کے طور پر سپورٹ کرتا ہے۔ Ksplice لینکس دانا کے موجودہ اور تازہ ترین ورژن کے درمیان تبدیلیوں کا تعین کرنے کے لیے ماخذ سطح کے فرق کا استعمال کرتا ہے، اور پھر چل رہے دانا میں تبدیلیاں داخل کرنے کے لیے بائنری ری رائٹنگ کا استعمال کرتا ہے۔ کسپلائس کو اس کے اصل مصنفین، کسپلائس انکارپوریٹڈ کے ذریعہ قائم کردہ ایک تجارتی منصوبے کے ذریعہ برقرار رکھا گیا تھا، جسے جولائی 2011 میں اوریکل کارپوریشن نے حاصل کیا تھا۔ Ksplice تجارتی بنیادوں پر اور خاص طور پر اوریکل لینکس کی تقسیم میں استعمال ہوتا ہے۔ ایس یو ایس ای نے کے گرافٹ کو لائیو کرنل پیچنگ کے لیے اوپن سورس متبادل کے طور پر تیار کیا، اور ریڈ ہیٹ نے کے پیچ کے ساتھ بھی ایسا ہی کیا۔ وہ دونوں فنکشن کی سطح کی تبدیلیوں کو چل رہے لینکس دانا پر لاگو کرنے کی اجازت دیتے ہیں، جبکہ ایف ٹریس کے ذریعہ قائم براہ راست پیچنگ میکانزم پر انحصار کرتے ہیں۔ کے گرافٹ اور کے پیچ کے درمیان بنیادی فرق یہ ہے کہ وہ تازہ ترین کوڈ حصوں کی رن ٹائم مستقل مزاجی کو یقینی بناتے ہیں جب کہ گرم پیچ لاگو ہوتے ہیں۔ کے گرافٹ اور کے پیچ بالترتیب اپریل 2014 اور مئی 2014 میں لینکس کرنل مین لائن میں شامل کرنے کے لیے پیش کیے گئے تھے، اور لائیو پیچنگ کے لیے کم سے کم بنیادوں کو کرنل ورژن 4 میں لینکس کرنل مین لائن میں ضم کر دیا گیا تھا، جو 12 اپریل 2015 کو جاری کیا گیا تھا۔ اپریل 2015 سے، لینکس کرنل مین لائن کے ذریعہ فراہم کردہ عام لائیو پیچنگ کور میں کے پیچ اور کے گرافٹ کو پورٹ کرنے پر کام جاری ہے۔ تاہم، فنکشن کے اصل اور پیچڈ ورژن کے درمیان محفوظ منتقلی کے لیے درکار فنکشن سطح کی مستقل مزاجی کے طریقہ کار کے نفاذ میں تاخیر ہوئی ہے کیونکہ لینکس کرنل کے ذریعے فراہم کردہ کال اسٹیک ان حالات میں ناقابل اعتماد ہو سکتے ہیں جن میں مناسب اسٹیک فریموں کے بغیر اسمبلی کوڈ شامل ہوتا ہے۔ اس کے نتیجے میں، پورٹنگ کا کام جاری رہتا ہے۔ کرنل کے کال اسٹیکس کی وشوسنییتا کو بہتر بنانے کی کوشش میں، ایک خصوصی سینیٹی چیک یوزر اسپیس یوٹیلیٹی بھی تیار کی گئی ہے جس کا مقصد کرنل کی کمپائل ٹائم آبجیکٹ فائلوں کو چیک کرنا اور اس بات کو یقینی بنانا ہے کہ کال اسٹیک ہمیشہ برقرار رہے۔ یہ کرنل اوپس پیغامات کے حصے کے طور پر زیادہ قابل اعتماد کال اسٹیکس حاصل کرنے کا امکان بھی کھولتا ہے۔ جنسینگ جنسینگ ایک عام مقصد کا ڈی ایس یو نظام ہے۔ یہ واحد ڈی ایس یو سسٹم ہے جو کنس فرینیس سیفٹی تکنیک کا استعمال کرتا ہے، جو اسے اسٹیک پر لائیو افعال کو اپ ڈیٹ کرنے کی اجازت دیتا ہے جب تک کہ وہ تازہ ترین اقسام تک ٹھوس رسائی نہ کریں۔ جنسینگ کو او سی اے ایم ایل میں سی انٹرمیڈیٹ لینگویج فریم ورک کا استعمال کرتے ہوئے لکھے گئے سورس ٹو سورس مرتب کے طور پر لاگو کیا جاتا ہے۔ یہ مرتب کرنے والا تمام فنکشن کالز اور ٹائپ تک رسائی کے لیے ہدایت داخل کرتا ہے، جس سے جنسینگ پورے پروگرام پر عمل درآمد کے لیے مستقل وقت کے اوور ہیڈ کو مسلط کرنے کی قیمت پر سست روی سے حالت کو تبدیل کرنے کے قابل بناتا ہے۔ جنسینگ کا مرتب پورے ابتدائی پروگرام اور متحرک پیچوں کی عدم آزادی کی خصوصیات کو ثابت کرتا ہے۔ جنسینگ کے بعد کے ورژن بھی لین دین کی حفاظت کے تصور کی حمایت کرتے ہیں۔ یہ ڈویلپرز کو ایک منطقی اکائی کے طور پر فنکشن کالز کے سلسلے کی تشریح کرنے کی اجازت دیتا ہے، اپ ڈیٹس کو پروگرام سیمنٹکس کی خلاف ورزی کرنے سے ان طریقوں سے روکتا ہے جو فعالیت کی حفاظت یا عدم آزادی کی حفاظت سے پتہ نہیں چل سکتے ہیں۔ مثال کے طور پر، اوپن ایس ایس ایچ کے دو ورژنوں میں جنسینگ کے مصنفین کے ذریعہ جانچ پڑتال کی گئی، اہم صارف تصدیق کوڈ کو دو افعال کے درمیان منتقل کیا گیا جسے ترتیب میں کہا جاتا ہے۔ اگر پہلے فنکشن کا پہلا ورژن انجام دیا گیا، ایک اپ ڈیٹ ہوا، اور دوسرے فنکشن کا نیا ورژن انجام دیا گیا، تو تصدیق کبھی نہیں کی جائے گی۔ اس حصے کو ٹرانزیکشن کے طور پر نشان زد کرنا اس بات کو یقینی بناتا ہے کہ اپ ڈیٹ تصدیق کو ہونے سے نہیں روکے گا۔ اپ اسٹیر اپ اسٹیر ایک ڈی ایس یو سسٹم ہے جو ایک منفرد اپ ڈیٹنگ میکانزم، اسٹیک کی تعمیر نو کا استعمال کرتا ہے۔ اپ اسٹیر کے ساتھ کسی پروگرام کو اپ ڈیٹ کرنے کے لیے، ڈویلپر کسی بھی ممکنہ اسٹیک فریم کے درمیان نقشہ سازی کی وضاحت کرتا ہے۔ اپ اسٹیر اس نقشہ سازی کو کسی بھی وقت، کسی بھی تعداد میں دھاگوں کے ساتھ، اور اسٹیک پر موجود کسی بھی فنکشن کے ساتھ فوری طور پر پروگرام کو اپ ڈیٹ کرنے کے لیے استعمال کر سکتا ہے۔ پولس پولس سی کے لیے بائنری ری رائٹنگ ڈی ایس یو سسٹم ہے۔ یہ ان کے نفاذ کے کسی بھی موقع پر غیر تبدیل شدہ پروگراموں کو اپ ڈیٹ کرنے کے قابل ہے۔ فنکشنز کو اپ ڈیٹ کرنے کے لیے، یہ ایک نئے فنکشن کی طرف ری ڈائریکٹ کرنے کے لیے ایک ٹارگٹ فنکشن کی پیش گوئی کو دوبارہ لکھتا ہے، ان ری ڈائریکشنز کو متعدد ورژنز پر سلسلہ بند کرتا ہے۔ یہ ان افعال میں مستحکم حالت کے اوور ہیڈ سے بچتا ہے جنہیں اپ ڈیٹ نہیں کیا گیا ہے۔ کٹانا کٹانا ایک تحقیقی نظام ہے جو صارف موڈ ای ایل ایف بائنری کے لیے محدود متحرک اپ ڈیٹ (کے ایس پلس اور اس کے کانٹوں کی طرح) فراہم کرتا ہے۔ کٹانا پیچنگ ماڈل ای ایل ایف آبجیکٹ کی سطح پر کام کرتا ہے، اور اس طرح اس میں زبان-اگنوسٹک ہونے کی صلاحیت ہے جب تک کہ تالیف کا ہدف ای ایل ایف ہو۔ کٹسون اور ایکیڈن ایکیڈن اور کٹسون ایک واحد ڈی ایس یو نظام کی دو قسمیں ہیں جو سی میں لکھے گئے پروگراموں کے لیے ڈی ایس یو کے ریاستی منتقلی کے انداز کو لاگو کرتی ہیں۔ ایک پروگرام کے اندر افعال کو اپ ڈیٹ کرنے کے بجائے، ایکیڈن اور کٹسون پورے پروگراموں پر اپ ڈیٹ انجام دیتے ہیں، اور دونوں پھانسی کے درمیان ضروری حالت منتقل کرتے ہیں۔ جبکہ اکیڈن فورک-ایکسیک کے یونکس آئیڈیوم کا استعمال کرتے ہوئے ایک نیا پروگرام شروع کرکے، ٹارگٹ پروگرام کی حالت کو سیریلائز کرکے، اور اسے منتقل کرکے اسے پورا کرتا ہے، کٹسون "ان پلیس" اسٹیٹ ٹرانسفر انجام دینے کے لیے ڈائنامک لنکنگ کا استعمال کرتا ہے۔ کٹسون ایکیڈن کے کوڈ بیس سے ماخوذ ہے، اور اسے ایکیڈن کا بعد کا ورژن سمجھا جا سکتا ہے۔ اکیڈن اور کٹسون اس لحاظ سے بھی قابل ذکر ہیں کہ انہیں خصوصی رن ٹائمز یا مرتب کرنے والوں کے بجائے بنیادی طور پر ایپلی کیشن کی سطح کی لائبریریوں کے طور پر لاگو کیا جاتا ہے۔ اس طرح، ایکیڈن یا کٹسون کو استعمال کرنے کے لیے، ایک ایپلیکیشن ڈویلپر کو دستی طور پر اس ریاست کو نشان زد کرنا چاہیے جسے منتقل کیا جانا ہے، اور دستی طور پر پروگرام میں ایسے نکات کا انتخاب کرنا چاہیے جہاں اپ ڈیٹ ہو سکتا ہے۔ اس عمل کو آسان بنانے کے لیے، کٹسون میں ایک خصوصی مرتب شامل ہے جو ریاستی ٹرانسفارمر لکھنے کے لیے ڈومین مخصوص زبان کو لاگو کرتا ہے۔ ایرلانگ ایرلانگ متحرک سافٹ ویئر اپ ڈیٹنگ کی حمایت کرتا ہے، حالانکہ اسے عام طور پر "ہاٹ کوڈ لوڈنگ" کہا جاتا ہے۔ ایرلانگ کو اپ ڈیٹس پر حفاظتی ضمانتوں کی ضرورت نہیں ہے، لیکن ایرلانگ کلچر تجویز کرتا ہے کہ ڈویلپرز دفاعی انداز میں لکھیں جو اپ ڈیٹ کرنے سے پیدا ہونے والی ٹائپ کی غلطیوں کو شائستگی سے سنبھالیں گے۔ پائمولٹ پائمولٹ ازگر میں لکھی گئی متحرک اپ ڈیٹ کے لیے ایک پروٹو ٹائپنگ پلیٹ فارم ہے۔ یہ دوسرے نظاموں سے بہت سی تکنیکیں جمع کرتا ہے، جس سے ان کے امتزاج اور ترتیب کی اجازت ملتی ہے۔ اس پلیٹ فارم کا مقصد ڈویلپرز کو ان اپ ڈیٹ تکنیکوں کا انتخاب کرنے دینا ہے جو انہیں اپنی ضروریات کے لیے زیادہ موزوں لگتی ہیں۔ مثال کے طور پر، کوئی بھی ریاست کی سست اپ ڈیٹ کو جوڑ سکتا ہے جیسا کہ جنسینگ میں ہوتا ہے جبکہ درخواست کا پورا کوڈ بدلتا ہے جیسا کہ کٹسون یا ایکیڈن میں ہوتا ہے۔ مائیکروسافٹ ویژول سی + + مائیکروسافٹ مائیکروسافٹ ویژول سی + + کے لیے اندرونی پیچنگ ٹیکنالوجی کا استعمال کر رہا ہے جو پیچ کی فعال درستگی کو برقرار رکھتے ہوئے انفرادی سی + + افعال کو پیچ کرنے میں مدد کرتا ہے۔ فی الحال معروف ایپلی کیشنز ایزور ایس کیو ایل ڈیٹا بیس میں ایس کیو ایل سرور ہیں۔ استقامت (کمپیوٹر سائنس) رن ٹائم تصدیق حوالہ جات بیرونی لنکس کے اسپلیس ہوم پیج کے اسپلیس سورس کوڈ جنسینگ پروجیکٹ پیج اور سورس کوڈ/اپ اسٹیر پیپر/پولس پیپر ایرلانگ ہوم پیج کٹانا ہوم پیج وائٹ پیپر بلاگ پوسٹ بصری سی + + پیچنگ سسٹم انتظامیہ پر