TypeScript 7 ایک Go پر مبنی کمپائلر کے ساتھ آیا ہے جو ٹائپ چیکنگ کے وقت کو اس کی سابقہ مدت کے دسویں حصے تک کم کر دیتا ہے اور میموری کے استعمال کو چوتھائی حصے تک کم کر دیتا ہے، یہ ایک ایسا بدلاؤ ہے جسے ڈویلپر VS Code میں “save” کا بٹن دباتے ہی محسوس کر سکے گا۔
Microsoft کا لینگویج سروس کے بنیادی حصے کو Go میں دوبارہ لکھنے کا فیصلہ ان سالوں کی شکایات کے بعد کیا گیا ہے جن میں کہا گیا تھا کہ TypeScript کا انکریمنٹل چیکر (incremental checker) بڑے مونو ریپوز (monorepos) پر رک سکتا ہے۔ پارسنگ اور ٹائپ چیکنگ جیسے بھاری کاموں کو پرانی JavaScript امپلیمنٹیشن سے باہر نکال کر، ٹیم نے لینگویج کی سطح پر پیرا للیزم (parallelism) کو ممکن بنا دیا ہے اور Node.js رن ٹائم کے بوجھ کو کم کر دیا ہے۔
یہ ری رائٹ (rewrite) کیوں اہم ہے
Next.js یا Nuxt جیسے فریم ورکس کے ساتھ بنائے گئے جدید ویب ایپس عام طور پر ہزاروں ماڈیولز استعمال کرتے ہیں۔ ان ماحول میں، پہلی ٹائپ غلطی (type error) سامنے آنے کا وقت ایڈٹ-کمپائل-ڈی بگ لوپ پر حاوی ہو سکتا ہے۔ نیا کمپائلر VS Code میں پہلی غلطی تلاش کرنے کے وقت کو 17.5 سیکنڈ سے کم کر کے 1.3 سیکنڈ سے بھی کم کر دیتا ہے، جو کہ صرف اس ایڈیٹر کے لیے 11.9 گنا زیادہ رفتار ہے۔ مختلف پروجیکٹس کے آزادانہ بینچ مارکس بھی اسی طرح کے نتائج کی تصدیق کرتے ہیں:
- VS Code: 11.9 گنا تیز
- Sentry: 8.9 گنا تیز
- Bluesky: 8.7 گنا تیز
- Playwright: 8.7 گنا تیز
- Tldraw: 7.7 گنا تیز
میموری کا استعمال بھی بہتر ہوا ہے۔ VS Code کا TypeScript سرور اب 18% کم RAM استعمال کرتا ہے، Bluesky میں 26% کمی دیکھی گئی ہے، اور Tldraw میں 15% کی بچت ہوئی ہے۔
یہ اعداد و شمار حقیقی دنیا کی پیداواری صلاحیت میں ترجمہ ہوتے ہیں: ایک ڈویلپر جو ہر چند سیکنڈ بعد فائل سیو کرتا ہے، اب دس گنا زیادہ تیزی سے کام کر سکتا ہے، جس سے بڑے کوڈ بیسز پر روزانہ کی رکاوٹیں نمایاں طور پر کم ہو جاتی ہیں۔
باریک بینی سے کنٹرول کے لیے نئے آپشنز
Go کمپائلر کمانڈ لائن فلیگز (command-line flags) کا ایک مجموعہ متعارف کرواتا ہے جو ٹیموں کو اپنے ہارڈ ویئر اور ورک فلو کے مطابق کارکردگی کو ترتیب دینے کی اجازت دیتا ہے:
- Parallel processing (
--checkersاور--builders) پارسنگ اور ٹائپ چیکنگ کو بیک وقت چلاتا ہے، جس سے صارفین کو رفتار اور میموری کے دباؤ کے درمیان توازن برقرار رکھنے کی سہولت ملتی ہے۔ - Single-threaded mode (
--singleThreaded) ڈی بگنگ کو آسان بناتا ہے اور کم وسائل والے ماحول کے لیے موزوں ہے۔ - Scalable workers ٹائپ چیکنگ ورکرز کو بلڈر ورکرز سے آزادانہ طور پر اسکیل کرنے کی اجازت دیتے ہیں، جس سے کسٹم بلڈ پائپ لائنز بنانا ممکن ہو جاتا ہے۔
- بہتر watch mode پرانے Node پر مبنی فائل اسکینر کی جگہ Go فائل واچر (file watcher) لاتا ہے، جو بڑے
node_modulesٹریز کے مہنگے ریکرسو اسکینز (recursive scans) کو ختم کر دیتا ہے۔
یہ آپشنز بڑی تنظیموں کو اپنے موجودہ کوڈ میں بڑی تبدیلی لائے بغیر CI پائپ لائنز سے اضافی کارکردگی حاصل کرنے کی صلاحیت دیتے ہیں۔
خطرات اور مخالفت
کسی بنیادی جز (core component) کو دوسری زبان میں دوبارہ لکھنا تنازعات سے خالی نہیں ہے۔ کچھ ڈویلپرز کو خدشہ ہے کہ Go پر منتقل ہونے سے نئے بگ یا عدم مطابقت پیدا ہو سکتی ہے جو کہ پختہ JavaScript امپلیمنٹیشن پہلے ہی دور کر چکی ہے۔ یہ تبدیلی TypeScript ٹول چین میں Go رن ٹائم پر انحصار بھی پیدا کرتی ہے، جو ان ماحول کو پیچیدہ بنا سکتی ہے جو سختی سے Node.js سے منسلک ہیں۔ ابتدائی طور پر اسے اپنانے والوں کو اس بات کی تصدیق کرنی ہوگی کہ ان کے کسٹم پلگ انز اور لینگویج سرور ایکسٹینشنز بغیر کسی تبدیلی کے کام کرتے رہیں گے۔
آگے کیا دیکھنا ہے
Microsoft نے پبلک ریلیز میں Go پر مبنی کمپائلر کو ڈیفالٹ بنا دیا ہے، لیکن پرانا JavaScript انجن بیک اپ کے طور پر دستیاب ہے۔ بڑے IDEs اور CI سروسز میں اس کے اپنانے کی شرح پر نظر رکھنا یہ بتائے گا کہ آیا کارکردگی کے فوائد ہجرت کی مشکلات سے زیادہ ہیں۔ مزید برآں، نئے فلیگز پر کمیونٹی کا فیڈ بیک اس بات کا تعین کرے گا کہ کمپائلر کیسے ترقی کرتا ہے—اگر ڈویلپرز کو پیرا للیز آپشنز کو ٹیون کرنا مشکل لگا، تو Microsoft اعلیٰ سطح کے پری سیٹس (presets) متعارف کروا سکتا ہے۔
خلاصہ: TypeScript 7 کا Go ری رائٹ ٹائپ چیکنگ کو دس گنا تک تیز اور میموری میں نمایاں بچت فراہم کرتا ہے، یہ ایک ایسا بدلاؤ ہے جو بڑے پیمانے پر JavaScript ڈویلپمنٹ کو فوری طور پر تیز محسوس کرا سکتا ہے—بشرطیکہ ایکو سسٹم نئے رن ٹائم کے ساتھ آسانی سے ہم آہنگ ہو جائے۔
