TypeScript 7 "isolated declarations" کے ساتھ متعارف ہو گیا ہے، جو کہ ایک ایسا کمپائلر موڈ ہے جو بڑے monorepos کو فائلوں کو متوازی (parallel) طور پر کمپائل کرنے کی اجازت دیتا ہے اور ڈویلپر فیڈ بیک لوپس کی رفتار کو تیز کرتا ہے۔
اب isolated declarations کیوں اہم ہیں
اس ریلیز تک، TypeScript کمپائلر declaration فائلوں (.d.ts) کو ایک ہی تھریڈ پر پروسیس کرتا تھا۔ ایسے کوڈ بیسز میں جو سینکڑوں پیکیجز پر مشتمل ہوتے ہیں، یہ مرحلہ اکثر پورے بلڈ پائپ لائن کی رفتار کو کم کر دیتا تھا۔ ٹائپ چیکنگ کے کام کو مختلف کورز (cores) میں تقسیم کر کے، isolated declarations ان ٹیموں کے لیے بلڈ ٹائم کو نمایاں طور پر کم کر دیتے ہیں جو اپنی تمام لائبریریز کو ایک ہی ریپوزٹری میں رکھتی ہیں۔
اس کا اثر فوری طور پر ان تمام اداروں پر پڑے گا جو CI جابز چلاتے ہیں یا جنہیں تیز رفتار لوکل ری بلڈز (local rebuilds) کی ضرورت ہوتی ہے۔
متوازی (parallel) ٹائپ چیکنگ کا راستہ
Microsoft نے برسوں پہلے incremental compilation کا اضافہ کیا تھا، لیکن declaration کا مرحلہ سیکوینشل (sequential) ہی رہا کیونکہ فائلیں ایک دوسرے پر منحصر تھیں۔ جیسے جیسے monorepos بڑھے، سنگل تھریڈ والا یہ عمل ایک مہنگا رکاوٹ (bottleneck) بن گیا۔ Isolated declarations اس انحصار کی زنجیر کو توڑ دیتے ہیں، جس میں ہر فائل کی پبلک سطح کو ایک آزاد یونٹ کے طور پر لیا جاتا ہے اور انہیں بیک وقت ویلیڈیٹ کیا جاتا ہے۔
کس کو فائدہ ہوگا، اور کس کو شاید نہیں
- بڑے monorepos والی ڈویلپمنٹ ٹیمیں – بلڈ ٹائم میں سب سے زیادہ کمی دیکھیں گی، خاص طور پر ان CI ایجنٹس پر جن میں متعدد CPU کورز ہوں۔
- چھوٹے پروجیکٹس یا سنگل پیکیج ایپس – شاید صرف معمولی بہتری محسوس کریں کیونکہ declaration کا مرحلہ پہلے ہی کل کمپائل ٹائم کا ایک بہت چھوٹا حصہ لیتا ہے۔
- محدود ہارڈ ویئر والی ٹیمیں – اسی وجہ سے انہیں بھی صرف معمولی بہتری ملے گی۔
TypeScript 7 کی وسیع تر ریلیز
Isolated declarations حفاظتی اپ گریڈز کے ایک مجموعے کے ساتھ آ رہے ہیں:
- Strict mode میں بہتری – نئے چیک جیسے کہ
strictIndexSignaturesاس وقت خبردار کرتے ہیں جب کوڈ کسی ممکنہ طور پر غائب آبجیکٹ کی (object key) تک رسائی حاصل کرنے کی کوشش کرے۔ - Named tuple elements – ڈویلپرز tuple کی پوزیشنز کو لیبل کر سکتے ہیں، جس سے API سگنیچر خود بخود دستاویزی (self-documenting) بن جاتے ہیں۔
- بہتر
satisfiesآپریٹر – پیچیدہ generics کی بہتر ہینڈلنگ پڑھنے میں آسانی برقرار رکھتے ہوئے ٹائپ انفرنس (type inference) کو بہتر بناتی ہے۔ - Async context propagation – AsyncContext API کے لیے سپورٹ asynchronous call stacks کی ٹریسنگ میں مدد دیتی ہے۔
- Decorator metadata – TC39 تجویز رن ٹائم کوڈ کو کلاس ڈیکوریشنز کا معائنہ کرنے کی اجازت دیتی ہے۔
- Explicit variance annotations – Generic parameters پر
+یا-کا استعمال covariance یا contravariance کی نشاندہی کرتا ہے، جس سے ٹائپ چیکر کی درستگی مزید بہتر ہو جاتی ہے۔
یہ اضافے TypeScript کی ایک "type-first" زبان کے طور پر ساکھ کو مزید مضبوط کرتے ہیں، لیکن isolated declarations ہی واحد فیچر ہے جو براہ راست اس مشکل کا حل پیش کرتا ہے جو کوڈ بیس کے سائز کے ساتھ بڑھتی جاتی ہے۔
آگے کیا دیکھنا ہے
خلاصہ
Isolated declarations monorepo پر زیادہ انحصار کرنے والی ٹیموں کو تیز رفتار بلڈز فراہم کرتے ہیں۔ ان اداروں کے لیے جو CI منٹوں کے لیے ادائیگی کرتے ہیں یا سست لوکل ری بلڈز سے پریشان ہیں، TypeScript 7 پر اپ گریڈ کرنا ایک کم خطرے والا اقدام ہے جو قابلِ پیمائش وقت اور لاگت کی بچت میں تبدیل ہو جاتا ہے۔ ریلیز کے باقی حصے مفید حفاظتی نیٹ ورک (safety nets) فراہم کرتے ہیں، لیکن متوازی ٹائپ چیکنگ انجن وہ اہم فیچر ہے جو جدید JavaScript ڈویلپمنٹ کے اسکیل ایبلٹی (scalability) کے چیلنج کا براہ راست جواب دیتا ہے۔
