DevTools আর্কিটেকচার রিফ্রেশ: DevTools টাইপস্ক্রিপ্টে স্থানান্তর করা হচ্ছে

টিম ভ্যান ডের লিপে
Tim van der Lippe

এই পোস্টটি ব্লগ পোস্টগুলির একটি সিরিজের অংশ যা আমরা DevTools এর আর্কিটেকচারে যে পরিবর্তনগুলি করছি এবং এটি কীভাবে তৈরি করা হয়েছে তার বর্ণনা দেয়৷

জাভাস্ক্রিপ্ট মডিউলে আমাদের মাইগ্রেশন এবং ওয়েব কম্পোনেন্টে মাইগ্রেশন করার পর, আজ আমরা Devtools-এর আর্কিটেকচারে আমরা যে পরিবর্তনগুলি করছি এবং কীভাবে এটি তৈরি করা হয়েছে তার উপর আমাদের ব্লগ পোস্ট সিরিজ চালিয়ে যাচ্ছি। (আপনি যদি এটি ইতিমধ্যেই না দেখে থাকেন, তাহলে আমরা আধুনিক ওয়েবে DevTools এর আর্কিটেকচার আপগ্রেড করার আমাদের কাজের উপর একটি ভিডিও পোস্ট করেছি, যেখানে আপনার ওয়েব প্রজেক্টে উন্নতি করতে 14 টি টিপস রয়েছে৷)

এই পোস্টে, আমরা ক্লোজার কম্পাইলার টাইপ চেকার থেকে টাইপস্ক্রিপ্টে চলে যাওয়া আমাদের 13-মাসের যাত্রা বর্ণনা করব।

ভূমিকা

DevTools কোডবেসের আকার এবং এটিতে কাজ করা প্রকৌশলীদের আত্মবিশ্বাস প্রদানের প্রয়োজনীয়তার পরিপ্রেক্ষিতে, একটি টাইপ চেকার ব্যবহার করা একটি প্রয়োজনীয়তা । সেই লক্ষ্যে, DevTools 2013 সালে ক্লোজার কম্পাইলার গ্রহণ করেছে। ক্লোজার গ্রহণ করা DevTools ইঞ্জিনিয়ারদের আত্মবিশ্বাসের সাথে পরিবর্তন করতে সক্ষম করেছে; ক্লোজার কম্পাইলার সমস্ত সিস্টেম ইন্টিগ্রেশনগুলি ভালভাবে টাইপ করা হয়েছে তা নিশ্চিত করতে টাইপ চেক করবে।

যাইহোক, সময়ের সাথে সাথে, বিকল্প টাইপ চেকার আধুনিক ওয়েব বিকাশে জনপ্রিয় হয়ে ওঠে। দুটি উল্লেখযোগ্য উদাহরণ হল TypeScript এবং Flow । তাছাড়া, টাইপস্ক্রিপ্ট গুগলে একটি অফিসিয়াল প্রোগ্রামিং ভাষা হয়ে উঠেছে। এই নতুন টাইপ চেকার জনপ্রিয়তা বাড়ার সময়, আমরা এটাও লক্ষ্য করেছি যে আমরা রিগ্রেশন শিপিং করছি যা টাইপ চেকার দ্বারা ধরা উচিত ছিল। তাই, আমরা আমাদের পছন্দের টাইপ চেকারের পুনঃমূল্যায়ন করার সিদ্ধান্ত নিয়েছি এবং DevTools-এ ডেভেলপমেন্টের পরবর্তী ধাপগুলি বের করার সিদ্ধান্ত নিয়েছি।

টাইপ চেকার মূল্যায়ন

যেহেতু DevTools ইতিমধ্যেই একটি টাইপ পরীক্ষক ব্যবহার করছে, তাই আমাদের উত্তর দেওয়ার প্রশ্নটি ছিল:

আমরা কি ক্লোজার কম্পাইলার ব্যবহার করতে থাকি নাকি নতুন টাইপ চেকারে মাইগ্রেট করি?

এই প্রশ্নের উত্তর দেওয়ার জন্য, আমাদের বিভিন্ন বৈশিষ্ট্যের উপর টাইপ চেকারগুলিকে মূল্যায়ন করতে হয়েছিল। যেহেতু আমাদের টাইপ চেকারের ব্যবহার প্রকৌশলীর আত্মবিশ্বাসের উপর ফোকাস করে, তাই আমাদের জন্য সবচেয়ে গুরুত্বপূর্ণ দিক হল টাইপ সঠিকতা। অন্য কথায়: বাস্তব সমস্যাগুলি আবিষ্কার করার ক্ষেত্রে টাইপ চেকার কতটা নির্ভরযোগ্য?

আমাদের মূল্যায়ন আমাদের পাঠানো রিগ্রেশনের উপর দৃষ্টি নিবদ্ধ করে এবং সেগুলির মূল কারণগুলি কী হবে তা নির্ধারণ করে। এখানে অনুমান হল যে, যেহেতু আমরা ইতিমধ্যেই ক্লোজার কম্পাইলার ব্যবহার করছিলাম, ক্লোজার এই সমস্যাগুলি ধরত না। এইভাবে, আমাদের নির্ধারণ করতে হবে যে অন্য কোন ধরনের পরীক্ষক সক্ষম হবে কিনা।

TypeScript এ সঠিকতা টাইপ করুন

যেহেতু TypeScript Google-এ একটি আনুষ্ঠানিকভাবে সমর্থিত প্রোগ্রামিং ভাষা ছিল এবং দ্রুত জনপ্রিয়তা বাড়ছে, তাই আমরা প্রথমে TypeScript মূল্যায়ন করার সিদ্ধান্ত নিয়েছি। TypeScript একটি আকর্ষণীয় পছন্দ ছিল, কারণ TypeScript টিম নিজেই DevTools ব্যবহার করে তাদের একটি পরীক্ষামূলক প্রকল্প হিসেবে JavaScript টাইপ-চেকিংয়ের সাথে তাদের সামঞ্জস্যতা ট্র্যাক করতে। তাদের বেসলাইন রেফারেন্স পরীক্ষার আউটপুট দেখিয়েছিল যে টাইপস্ক্রিপ্ট প্রচুর পরিমাণে টাইপ সমস্যাগুলি ধরছে - যে সমস্যাগুলি ক্লোজার কম্পাইলার অগত্যা সনাক্ত করছে না। এই সমস্যাগুলির মধ্যে অনেকগুলি রিগ্রেশনের মূল কারণ হতে পারে যা আমরা শিপিং করছিলাম; এর ফলে, আমাদের বিশ্বাস করে যে TypeScript DevTools-এর জন্য একটি কার্যকর বিকল্প হতে পারে।

জাভাস্ক্রিপ্ট মডিউলে আমাদের মাইগ্রেশনের সময় , আমরা ইতিমধ্যেই আবিষ্কার করেছি যে ক্লোজার কম্পাইলার এটি আগের তুলনায় অনেক বেশি সমস্যা উন্মোচন করছে। একটি স্ট্যান্ডার্ড মডিউল ফর্ম্যাটে চলে যাওয়া আমাদের কোডবেস বোঝার জন্য ক্লোজারের ক্ষমতা বাড়িয়েছে এবং তাই টাইপ চেকারগুলির কার্যকারিতা বাড়িয়েছে। যাইহোক, TypeScript টিম DevTools-এর একটি বেসলাইন সংস্করণ ব্যবহার করছিল যা জাভাস্ক্রিপ্ট মডিউল স্থানান্তরের পূর্বে ছিল। অতএব, জাভাস্ক্রিপ্ট মডিউলে স্থানান্তর করার ফলে টাইপস্ক্রিপ্ট কম্পাইলার যে ত্রুটিগুলি ধরবে তার পরিমাণও কমিয়েছে কিনা তা আমাদের খুঁজে বের করতে হয়েছিল।

টাইপস্ক্রিপ্ট মূল্যায়ন করা হচ্ছে

DevTools এক দশকেরও বেশি সময় ধরে বিদ্যমান, যেখানে এটি যথেষ্ট আকারের এবং বৈশিষ্ট্য সমৃদ্ধ ওয়েব অ্যাপ্লিকেশনে পরিণত হয়েছে। এই ব্লগ পোস্টটি লেখার সময়, DevTools-এ প্রথম পক্ষের জাভাস্ক্রিপ্ট কোডের প্রায় 150,000 লাইন রয়েছে৷ আমরা যখন আমাদের সোর্স কোডে TypeScript কম্পাইলার চালাই, তখন ত্রুটির পরিমাণ অপ্রতিরোধ্য ছিল। আমরা বুঝতে পেরেছিলাম যে যখন টাইপস্ক্রিপ্ট কম্পাইলার কোড রেজোলিউশন (~2,000 ত্রুটি) সম্পর্কিত কম ত্রুটি নির্গত করছিল, তখনও টাইপ সামঞ্জস্য সম্পর্কিত আমাদের কোডবেসে আরও 6,000 ত্রুটি উপস্থিত ছিল।

এটি দেখায় যে টাইপস্ক্রিপ্ট কীভাবে প্রকারগুলি সমাধান করতে হয় তা বুঝতে সক্ষম হয়েছিল, এটি আমাদের কোডবেসে উল্লেখযোগ্য পরিমাণে অসঙ্গতি খুঁজে পেয়েছে। এই ত্রুটিগুলির একটি ম্যানুয়াল বিশ্লেষণ দেখিয়েছিল যে টাইপস্ক্রিপ্ট (বেশিরভাগ সময়) সঠিক ছিল। TypeScript এগুলি সনাক্ত করতে সক্ষম হয়েছিল এবং ক্লোজার ছিল না কারণ প্রায়শই ক্লোজার কম্পাইলার একটি টাইপকে Any বলে অনুমান করবে, যেখানে টাইপস্ক্রিপ্ট অ্যাসাইনমেন্টের উপর ভিত্তি করে টাইপ ইনফারেন্স সম্পাদন করবে এবং আরও সঠিক টাইপ অনুমান করবে। যেমন, টাইপস্ক্রিপ্ট প্রকৃতপক্ষে আমাদের অবজেক্টের গঠন বোঝার ক্ষেত্রে আরও ভাল ছিল এবং সমস্যাযুক্ত ব্যবহারগুলি আবিষ্কার করেছিল

এটির একটি গুরুত্বপূর্ণ ধরা হল, DevTools-এ ক্লোজার কম্পাইলারের ব্যবহার @unrestricted এর ঘন ঘন ব্যবহার অন্তর্ভুক্ত করে। @unrestricted সহ একটি ক্লাস টীকা কার্যকরভাবে সেই নির্দিষ্ট শ্রেণীর জন্য ক্লোজার কম্পাইলারের কঠোর সম্পত্তি চেক বন্ধ করে দেয়, যার মানে হল যে একজন বিকাশকারী প্রকার নিরাপত্তা ছাড়াই ইচ্ছামত একটি শ্রেণির সংজ্ঞা বৃদ্ধি করতে পারে। DevTools কোডবেসে কেন @unrestricted এর ব্যবহার প্রচলিত ছিল সে সম্পর্কে আমরা কোনো ঐতিহাসিক প্রেক্ষাপট খুঁজে পাইনি, কিন্তু এর ফলে কোডবেসের বড় অংশের জন্য কম নিরাপদ মোডে ক্লোজার কম্পাইলার চালানো হয়েছে।

টাইপস্ক্রিপ্টের আবিষ্কৃত টাইপ ত্রুটিগুলির সাথে আমাদের রিগ্রেশনগুলির একটি ক্রস-বিশ্লেষণও একটি ওভারল্যাপ দেখায়, যা আমাদের বিশ্বাস করে যে TypeScript এই সমস্যাগুলি প্রতিরোধ করতে পারত (প্রদান করে যে প্রকারগুলি নিজেরাই সঠিক ছিল)।

any কল করা

এই মুহুর্তে, আমাদের ক্লোজার কম্পাইলার ব্যবহার উন্নত করা বা টাইপস্ক্রিপ্টে স্থানান্তরিত করার মধ্যে সিদ্ধান্ত নিতে হয়েছিল। (যেহেতু ফ্লো Google বা Chromium-এ সমর্থিত ছিল না, তাই আমাদের সেই বিকল্পটি ত্যাগ করতে হয়েছিল।) JavaScript/TypeScript টুলিং-এ কাজ করা Google ইঞ্জিনিয়ারদের সাথে আলোচনা এবং সুপারিশের ভিত্তিতে, আমরা TypeScript কম্পাইলার বেছে নেওয়ার সিদ্ধান্ত নিয়েছি। (আমরা সম্প্রতি পাপেটিয়ারকে টাইপস্ক্রিপ্টে স্থানান্তরিত করার বিষয়ে একটি ব্লগ পোস্টও প্রকাশ করেছি।)

TypeScript কম্পাইলারের প্রাথমিক কারণগুলি ছিল উন্নত ধরনের সঠিকতা, যখন অন্যান্য সুবিধার মধ্যে অন্তর্ভূক্ত টাইপস্ক্রিপ্ট টিমগুলি থেকে Google-এ অভ্যন্তরীণভাবে সমর্থন এবং টাইপস্ক্রিপ্ট ভাষার বৈশিষ্ট্য, যেমন interfaces (জেএসডিওকে typedefs বিপরীতে)।

TypeScript কম্পাইলার বেছে নেওয়ার মানে হল যে আমাদের DevTools কোডবেস এবং এর অভ্যন্তরীণ আর্কিটেকচারে উল্লেখযোগ্যভাবে বিনিয়োগ করতে হবে। যেমন, আমরা অনুমান করেছি যে টাইপস্ক্রিপ্টে স্থানান্তরিত করার জন্য আমাদের কমপক্ষে এক বছরের প্রয়োজন (Q3 2020 এ লক্ষ্য করা হয়েছে)।

স্থানান্তর সঞ্চালন

সবচেয়ে বড় প্রশ্ন যা থেকে গেল: আমরা কীভাবে টাইপস্ক্রিপ্টে স্থানান্তরিত হব? আমাদের কোডের 150,000 লাইন আছে এবং আমরা এটিকে একবারে স্থানান্তর করতে পারি না। আমরা আরও জানতাম যে আমাদের কোডবেসে টাইপস্ক্রিপ্ট চালানো হাজার হাজার ত্রুটি উন্মোচন করবে।

আমরা একাধিক বিকল্প মূল্যায়ন করেছি:

  1. সমস্ত TypeScript ত্রুটি প্রাপ্ত করুন এবং একটি "সোনালী" আউটপুটের সাথে তুলনা করুন । এই পদ্ধতিটি TypeScript টিমের মতই হবে। এই পদ্ধতির সবচেয়ে বড় নেতিবাচক দিক হল একত্রীকরণ দ্বন্দ্বের উচ্চ ঘটনা, যেহেতু ডজন ডজন ইঞ্জিনিয়ার একই কোডবেসে কাজ করে।
  2. any সমস্যাযুক্ত ধরন সেট করুন এটি মূলত টাইপস্ক্রিপ্ট ত্রুটিগুলিকে দমন করবে। আমরা এই বিকল্পটি বেছে নিইনি, কারণ মাইগ্রেশনের জন্য আমাদের লক্ষ্য ছিল টাইপ নির্ভুলতা যা দমনকে দুর্বল করবে।
  3. সমস্ত TypeScript ত্রুটি ম্যানুয়ালি ঠিক করুন। এতে হাজার হাজার ত্রুটির সমাধান জড়িত থাকবে, যা সময়সাপেক্ষ।

বড় প্রত্যাশিত প্রচেষ্টা সত্ত্বেও, আমরা বিকল্প 3 বেছে নিয়েছি। আমরা কেন এই বিকল্পটি বেছে নিয়েছি তার অতিরিক্ত কারণ ছিল: উদাহরণস্বরূপ, এটি আমাদের সমস্ত কোড অডিট করতে এবং এর বাস্তবায়ন সহ সমস্ত কার্যকারিতার এক দশকে একবার পর্যালোচনা করার অনুমতি দেয়। . একটি ব্যবসায়িক দৃষ্টিকোণ থেকে, আমরা নতুন মান প্রদান করছি না, বরং স্থিতাবস্থা বজায় রেখেছি। এটি বিকল্প 3 কে সঠিক পছন্দ হিসাবে সমর্থন করা আরও কঠিন করে তুলেছে।

যাইহোক, TypeScript অবলম্বন করে, আমরা দৃঢ়ভাবে বিশ্বাস করি যে আমরা ভবিষ্যতের সমস্যাগুলি প্রতিরোধ করতে পারব, বিশেষ করে রিগ্রেশনের আশেপাশে। যেমন, যুক্তি কম ছিল "আমরা নতুন ব্যবসায়িক মূল্য যোগ করছি", এবং আরও "আমরা নিশ্চিত করছি যে আমরা প্রাপ্ত ব্যবসায়িক মূল্য হারাবো না"।

টাইপস্ক্রিপ্ট কম্পাইলারের জাভাস্ক্রিপ্ট সমর্থন

বাই-ইন সুরক্ষিত করার পরে এবং একই জাভাস্ক্রিপ্ট কোডে ক্লোজার এবং টাইপস্ক্রিপ্ট কম্পাইলার উভয় চালানোর পরিকল্পনা তৈরি করার পরে, আমরা কিছু ছোট ফাইল দিয়ে শুরু করেছি। আমাদের দৃষ্টিভঙ্গি বেশিরভাগই নীচের দিকে ছিল: মূল কোড দিয়ে শুরু করুন এবং উচ্চ-স্তরের প্যানেলে না পৌঁছানো পর্যন্ত আর্কিটেকচারের দিকে এগিয়ে যান।

DevTools-এর প্রতিটি ফাইলে @ts-nocheck যোগ করে আমরা আমাদের কাজকে সমান্তরাল করতে পেরেছি। "TypeScript ফিক্সিং" করার প্রক্রিয়াটি হবে @ts-nocheck টীকাটি সরিয়ে ফেলা এবং TypeScript যে কোনো ত্রুটি খুঁজে পাবে তার সমাধান করা। এর মানে হল যে আমরা নিশ্চিত যে প্রতিটি ফাইল চেক করা হয়েছে এবং যতটা সম্ভব সমস্যার সমাধান করা হয়েছে।

সাধারণভাবে, এই পদ্ধতিটি কয়েকটি সমস্যা নিয়ে কাজ করেছে। আমরা টাইপস্ক্রিপ্ট কম্পাইলারে বেশ কয়েকটি বাগ দেখেছি, কিন্তু তাদের বেশিরভাগই অস্পষ্ট ছিল:

  1. একটি ফাংশন টাইপ সহ একটি ঐচ্ছিক পরামিতি যা any রিটার্ন করে তাকে প্রয়োজনীয় হিসাবে বিবেচনা করা হয়: #38551
  2. একটি ক্লাস ব্রেক ঘোষণার একটি স্ট্যাটিক পদ্ধতিতে একটি সম্পত্তি অ্যাসাইনমেন্ট: #38553
  3. একটি নো-আর্গস কনস্ট্রাক্টর সহ একটি সাবক্লাস এবং একটি আর্গস কনস্ট্রাক্টর সহ একটি সুপার-ক্লাসের ঘোষণা চাইল্ড কনস্ট্রাক্টরকে বাদ দেয়: #41397

এই বাগগুলি হাইলাইট করে যে, 99% ক্ষেত্রে, TypeScript কম্পাইলার একটি শক্ত ভিত্তি তৈরি করার জন্য। হ্যাঁ, এই অস্পষ্ট বাগগুলি কখনও কখনও DevTools-এর জন্য সমস্যার কারণ হতে পারে, কিন্তু বেশিরভাগ সময়ই সেগুলি যথেষ্ট অস্পষ্ট ছিল যে আমরা সহজেই তাদের চারপাশে কাজ করতে পারি৷

একমাত্র সমস্যা যা কিছু বিভ্রান্তির সৃষ্টি করেছিল তা হল .tsbuildinfo ফাইলগুলির অ-নির্ধারণমূলক আউটপুট: #37156 । Chromium-এ, আমরা চাই যে একই Chromium-এর যেকোন দুটি বিল্ডের ফলে একই আউটপুট পাওয়া যায়। দুর্ভাগ্যবশত, আমাদের Chromium বিল্ড ইঞ্জিনিয়াররা আবিষ্কার করেছেন যে .tsbuildinfo আউটপুট অ-নির্ধারক ছিল: crbug.com/1054494 । এই সমস্যাটির সমাধান করার জন্য, আমাদের .tsbuildinfo ফাইলটি মাঙ্কি-প্যাচ করতে হয়েছিল (যা মূলত JSON ধারণ করে) এবং একটি নির্ধারক আউটপুট ফেরত দেওয়ার জন্য এটিকে পোস্ট-প্রসেস করতে হয়েছিল: https://crrev.com/c/2091448 সৌভাগ্যক্রমে, TypeScript টিম সমাধান করেছে আপস্ট্রিম সমস্যা এবং আমরা শীঘ্রই আমাদের সমাধান সরাতে সক্ষম হয়েছি। TypeScript টিমকে ধন্যবাদ বাগ রিপোর্টে গ্রহণযোগ্য হওয়ার জন্য এবং এই সমস্যাগুলি দ্রুত সমাধান করার জন্য!

সামগ্রিকভাবে, আমরা TypeScript কম্পাইলারের (টাইপ) সঠিকতা নিয়ে সন্তুষ্ট। আমরা আশা করি যে Devtools একটি বৃহৎ ওপেন সোর্স জাভাস্ক্রিপ্ট প্রকল্প টাইপস্ক্রিপ্টে জাভাস্ক্রিপ্ট সমর্থনকে শক্তিশালী করতে সাহায্য করেছে।

পরবর্তী ঘটনা বিশ্লেষণ

আমরা এই ধরনের ত্রুটিগুলি সমাধান করতে এবং ধীরে ধীরে TypeScript দ্বারা চেক করা কোডের পরিমাণ বাড়াতে ভাল অগ্রগতি করতে সক্ষম হয়েছি। যাইহোক, 2020 সালের আগস্টে (এই মাইগ্রেশনের 9 মাস) আমরা একটি চেক-ইন করেছি এবং আবিষ্কার করেছি যে আমরা আমাদের বর্তমান গতির সাথে আমাদের সময়সীমাকে আঘাত করব না। আমাদের একজন প্রকৌশলী "TypeScriptification" এর অগ্রগতি দেখানোর জন্য একটি বিশ্লেষণ গ্রাফ তৈরি করেছেন (আমরা এই স্থানান্তরের নাম দিয়েছি)।

টাইপস্ক্রিপ্ট মাইগ্রেশন অগ্রগতি

TypeScript মাইগ্রেশনের অগ্রগতি - অবশিষ্ট কোডের ট্র্যাকিং লাইন যা স্থানান্তর করা প্রয়োজন

আমাদের সময়সীমার প্রায় এক বছর পরে, জুলাই 2021 থেকে ডিসেম্বর 2021 পর্যন্ত আমরা কখন শূন্য লাইনে ছুঁতে পারব সেই অনুমান। ব্যবস্থাপনা এবং অন্যান্য প্রকৌশলীদের সাথে আলোচনার পর, আমরা TypeScript কম্পাইলার সমর্থনে স্থানান্তরিত করার জন্য কাজ করা প্রকৌশলীদের পরিমাণ বাড়াতে সম্মত হয়েছি। এটি সম্ভব হয়েছিল কারণ আমরা মাইগ্রেশনটিকে সমান্তরালভাবে ডিজাইন করেছি যাতে একাধিক ভিন্ন ফাইলে কাজ করা একাধিক ইঞ্জিনিয়ার একে অপরের সাথে বিরোধ না করে।

এই মুহুর্তে, টাইপস্ক্রিপ্টিফিকেশন প্রক্রিয়া একটি দল-ব্যাপী প্রচেষ্টা হয়ে ওঠে। অতিরিক্ত সাহায্যের মাধ্যমে, আমরা আমাদের মাইগ্রেশন শেষ করতে পেরেছি নভেম্বর 2020 এর শেষে, শুরু করার 13 মাস পরে এবং আমাদের প্রাথমিক অনুমান পূর্বাভাসের এক বছর আগে।

মোট, 18 জন প্রকৌশলী দ্বারা জমা দেওয়া 771টি পরিবর্তন তালিকা (একটি পুল অনুরোধের অনুরূপ) ছিল। আমাদের ট্র্যাকিং বাগ ( https://crbug.com/1011811 ) 1200 টিরও বেশি মন্তব্য রয়েছে (প্রায় সবগুলোই পরিবর্তন তালিকা থেকে স্বয়ংক্রিয় পোস্ট)। আমাদের ট্র্যাকিং শীটে টাইপস্ক্রিপ্ট করা সমস্ত ফাইলের জন্য 500 টির বেশি সারি ছিল, তাদের অ্যাসাইনি এবং কোন পরিবর্তন তালিকায় তারা "টাইপস্ক্রিপ্টকৃত" ছিল।

টাইপস্ক্রিপ্ট কম্পাইলারের কর্মক্ষমতার প্রভাব প্রশমিত করা

বর্তমানে আমরা যে সবচেয়ে বড় সমস্যাটি মোকাবেলা করছি তা হল TypeScript কম্পাইলারের ধীর কর্মক্ষমতা। Chromium এবং DevTools নির্মাণকারী প্রকৌশলীর সংখ্যা বিবেচনা করে, এই বাধা ব্যয়বহুল। দুঃখের বিষয়, আমরা আমাদের মাইগ্রেশনের আগে এই ঝুঁকি চিহ্নিত করতে পারিনি, এবং এটি শুধুমাত্র সেই সময়ে যেখানে আমরা বেশিরভাগ ফাইল টাইপস্ক্রিপ্টে স্থানান্তরিত করেছি যে আমরা ক্রোমিয়াম বিল্ড জুড়ে ব্যয় করা সময়ের একটি লক্ষণীয় বৃদ্ধি আবিষ্কার করেছি: https://crbug .com/1139220

আমরা এই সমস্যাটি মাইক্রোসফ্ট টাইপস্ক্রিপ্ট কম্পাইলার টিমের কাছে রিপোর্ট করেছি , কিন্তু দুঃখজনকভাবে তারা এই আচরণটি ইচ্ছাকৃত হিসাবে নির্ধারণ করেছে। আমরা আশা করি তারা এই সমস্যাটি পুনর্বিবেচনা করবে, কিন্তু এর মধ্যে আমরা যতটা সম্ভব ক্রোমিয়ামের দিকে ধীর কর্মক্ষমতা প্রভাব কমানোর জন্য কাজ করছি।

দুঃখের বিষয়, আজকে আমাদের কাছে উপলব্ধ সমাধানগুলি সর্বদা নন-Googler অবদানকারীদের জন্য উপযুক্ত নয়৷ যেহেতু Chromium-এ ওপেন-সোর্স অবদানগুলি খুবই গুরুত্বপূর্ণ (বিশেষ করে Microsoft Edge টিম থেকে), আমরা সক্রিয়ভাবে বিকল্পগুলি খুঁজছি যা সমস্ত অবদানকারীদের জন্য কাজ করবে৷ যাইহোক, এই মুহূর্তে আমরা একটি উপযুক্ত বিকল্প সমাধান খুঁজে পাইনি।

DevTools-এ TypeScript-এর বর্তমান অবস্থা

এই মুহুর্তে, আমরা আমাদের কোডবেস থেকে ক্লোজার কম্পাইলার টাইপ চেকার সরিয়ে দিয়েছি এবং সম্পূর্ণরূপে টাইপস্ক্রিপ্ট কম্পাইলারের উপর নির্ভর করছি। আমরা TypeScript-লেখিত ফাইল লিখতে এবং TypeScript-নির্দিষ্ট বৈশিষ্ট্যগুলি ব্যবহার করতে সক্ষম (যেমন ইন্টারফেস, জেনেরিক, ইত্যাদি...), যা আমাদের প্রতিদিনের ভিত্তিতে সাহায্য করে। আমরা আত্মবিশ্বাস বাড়িয়েছি যে TypeScript কম্পাইলার টাইপ ত্রুটি এবং রিগ্রেশন ধরবে, যা আমরা আশা করেছিলাম যে আমরা এই মাইগ্রেশনে প্রথম কাজ শুরু করার সময় ঘটবে। এই স্থানান্তর, অনেকের মতো, ধীর, সংক্ষিপ্ত, এবং প্রায়শই চ্যালেঞ্জিং ছিল, কিন্তু আমরা যেমন সুবিধাগুলি অর্জন করি, আমরা বিশ্বাস করি এটি মূল্যবান ছিল।

প্রিভিউ চ্যানেল ডাউনলোড করুন

আপনার ডিফল্ট ডেভেলপমেন্ট ব্রাউজার হিসেবে Chrome Canary , Dev বা Beta ব্যবহার করার কথা বিবেচনা করুন। এই পূর্বরূপ চ্যানেলগুলি আপনাকে সর্বশেষ DevTools বৈশিষ্ট্যগুলিতে অ্যাক্সেস দেয়, অত্যাধুনিক ওয়েব প্ল্যাটফর্ম API পরীক্ষা করে এবং আপনার ব্যবহারকারীদের আগে আপনার সাইটে সমস্যাগুলি খুঁজে পায়!

Chrome DevTools টিমের সাথে যোগাযোগ করা হচ্ছে

পোস্টের নতুন বৈশিষ্ট্য এবং পরিবর্তনগুলি বা DevTools সম্পর্কিত অন্য কিছু নিয়ে আলোচনা করতে নিম্নলিখিত বিকল্পগুলি ব্যবহার করুন৷

  • crbug.com এর মাধ্যমে আমাদের কাছে একটি পরামর্শ বা প্রতিক্রিয়া জমা দিন।
  • আরও বিকল্প ব্যবহার করে একটি DevTools সমস্যা রিপোর্ট করুনআরও > সাহায্য > DevTools-এ একটি DevTools সমস্যা রিপোর্ট করুন
  • @ChromeDevTools- এ টুইট করুন।
  • আমাদের DevTools YouTube ভিডিও বা DevTools টিপস YouTube ভিডিওগুলিতে নতুন কী আছে সে সম্পর্কে মন্তব্য করুন৷