আসসালামুয়ালিকুম। ওয়েব অ্যাসেম্বলি কি এবং এর ভবিষ্যৎ কি ঐটা নিয়েই এই পোস্টের আলোচনা।
ওয়েব অ্যাসেম্বলি কি ?
ওয়েব অ্যাসেম্বলি হলো একটি পোর্টেবল বাইনারি-কোড ফর্ম্যাট এবং এক্সিকিউটেবল প্রোগ্রামগুলির জন্য একটি সংশ্লিষ্ট টেক্সট ফর্ম্যাট এবং সেইসাথে এই ধরনের প্রোগ্রাম এবং তাদের হোস্ট পরিবেশের মধ্যে মিথস্ক্রিয়া সহজ করার জন্য সফ্টওয়্যার ইন্টারফেস সংজ্ঞায়িত করে। ওয়েব অ্যাসেম্বলি এর প্রধান লক্ষ্য হল ওয়েব পেজগুলিকে উচ্চ-পারফরম্যান্স অ্যাপ্লিকেশন করা।
এটি প্রায় ৪ বছর আগে আসলেও, এটি নিয়ে ডেভেলপার দের মধ্যে কথা ১ বছর আগে থেকে হচ্ছে। অনেকের মতে এটি জাভাস্ক্রিপ্ট কে সরিয়ে নিজে মার্কেট এ জায়গা দখল করে নেবে। আমরা WebAssembly ভালোভাবে বোঝার আগে, এটি ব্রাউজারে কীভাবে চলে তা বোঝার জন্য আমাদের এই কোড ফরমেটের কিছু মৌলিক ধারণার সাথে নিজেদের পরিচিত করতে হবে।
মডিউল
WebAssembly ব্রাউজার (বা ভার্চুয়াল মেশিন) দ্বারা বাইনারিতে সংকলিত মডিউলগুলিতে সংগঠিত হয়। এগুলিকে ECMAScript মডিউলগুলির মতোই দেখা যায়, যেখানে মডিউলগুলি ফাংশন ধারণ করে এবং অন্যান্য ফাংশন ইম্পোর্ট ও এক্সপোর্ট করতে পারে।
স্ট্যাক মেশিন
WebAssembly একটি স্ট্যাক মেশিন কারণ এটি নির্দেশাবলীর একটি সিস্টেমের (ISA) অধীনে কাজ করে। এই নির্দেশাবলী লুপ, গাণিতিক ক্রিয়াকলাপ এবং মেমরি অ্যাক্সেস নিয়ন্ত্রণের অনুমতি দেয়। যতটা সম্ভব সবকিছু সহজ করার জন্য, আমরা WebAssembly Studio ব্যবহার করতে যাচ্ছি। এই টুলটি WebAssembly-এর জন্য একটি অনলাইন এডিটর যা আমাদেরকে বিভিন্ন ভাষায় (WAT, Rust, C, এসেম্বলিস্ক্রিপ্ট ইত্যাদি) WASM প্রজেক্ট তৈরি করতে দেয়। WebAssembly জাভাস্ক্রিপ্টের সাথে ব্যবহার করার জন্য ডিজাইন করা হয়েছে এবং এটির একটি API আছে যা জাভাস্ক্রিপ্টের সাথে WASM মডিউলগুলির একীকরণের অনুমতি দেয়।
তাই API ব্যবহার করতে সক্ষম হওয়ার জন্য, আমাদের প্রথম ধাপ হল একটি রিসৌর্স হিসাবে আমাদের WASM ফাইল লোড করা। আমরা একটি fetch ব্যবহার করে এটি করতে পারি। এখন আমাদের WASM ফাইলটি ডাউনলোড করতে হবে এবং WASM মডিউল পেতে এটি কম্পাইল করতে হবে। এই ধাপটি ভিন্নভাবে সমাধান করা যেতে পারে কিন্তু আমরা instantiateStreaming পদ্ধতি ব্যবহার করতে পারি। তারপরে আমরা আমাদের WASM ফাইলে তৈরি মাল্টিপ্লাই ফাংশন অ্যাক্সেস করতে সক্ষম হওয়ার জন্য সেই মডিউল থেকে উদাহরণটি পুনরুদ্ধার করি।
জাভাস্ক্রিপ্ট এর সাথে এর পার্থক্য
WebAssembly আমাদের জাভাস্ক্রিপ্ট অ্যাপ্লিকেশনগুলির কার্যকারিতা উন্নত করার জন্য তৈরি করা হয়েছিল যেহেতু এটি বাইনারি-ভিত্তিক এবং খুব কার্যকরী ভাষাগুলির মূল শক্তি ব্যবহার করে৷ উভয় ইমপ্লিমেন্টেশন (WASM এবং JavaScript) এর জন্য গুন ফাংশন সম্পাদন করতে যে সময় লাগে তা আমরা পরিমাপ করে দেখতে পারি ।
আমরা দেখতে পারি এটি জাভাস্ক্রিপ্ট থেকে প্রায় ৬০% বেশি দ্রুত কাজ করছে। সাধারণত এটি তৈরি করা হয়েছে ভারী কাজ গুলু সম্পাদন করার জন্য।