প্রকল্প সম্পর্কে

Wago সম্পূর্ণভাবে Go ভাষায় লেখা একটি WebAssembly রানটাইম। Wasm ইন্টারপ্রেট করার পরিবর্তে, এটি মডিউলগুলোকে সরাসরি নেটিভ মেশিন কোডে কম্পাইল করে, ফলে এটিকে CGO ছাড়াই Go প্রোগ্রামে এমবেড করা যায়, যা সাধারণ Go বিল্ড এবং ক্রস-কম্পাইলেশন প্রক্রিয়াকে সহজ রাখে। প্রজেক্টটি দ্রুত, কম্প্যাক্ট এবং এক্সটেনসিবল হিসেবে নিজেকে উপস্থাপন করে এবং উল্লেখ করে যে এটি এখনও বিটা পর্যায়ে রয়েছে, যার অর্থ API এবং জেনারেট করা .wago আর্টিফ্যাক্টগুলো পরিবর্তিত হতে পারে। প্রজেক্টটি যে বৈশিষ্ট্যগুলোর ওপর গুরুত্ব দিয়েছে: - Pure Go: এমবেডিংয়ের জন্য কোনো C টুলচেইনের প্রয়োজন হয় না। - স্ট্যান্ডার্ড ফোকাসড: বলা হয়েছে যে রানটাইমটি অফিসিয়াল WebAssembly টেস্ট স্যুট, ফাজিং এবং রিয়েল-ওয়ার্ল্ড কর্পোরা পাস করে। - এক্সটেনসিবল: WASI, Component Model এবং অন্যান্য হোস্ট ক্ষমতা কোর রানটাইমের বাইরে প্লাগইন হিসেবে থাকে। - স্ট্যান্ডঅ্যালোন এক্সিকিউটেবল: একটি .wasm ফাইলকে ছোট নেটিভ বাইনারিতে কম্পাইল করা যায়, যা README অনুযায়ী CLI টুলসের জন্য দরকারী। - প্ল্যাটফর্ম: amd64 এবং arm64-এ Linux, macOS এবং Windows; তবে ব্যাকএন্ড অনুযায়ী WebAssembly ফিচার কভারেজ ভিন্ন হতে পারে। একটি ফিচার ম্যাট্রিক্স ফাইলে সঠিক কভারেজ নথিভুক্ত করা হয়েছে। ইনস্টলেশন macOS এবং Linux-এ নথিভুক্ত ওয়ান-লাইনারের মাধ্যমে একটি ইনস্টলার স্ক্রিপ্ট ডাউনলোড করে sh-এ পাইপ করা হয়; Windows-এ PowerShell ব্যবহারকারীরা সমতুল্য irm কমান্ড চালান। এগুলো একটি ম্যানেজার ইনস্টল করে, যা পরবর্তীতে রানটাইম ইনস্টল করে। ডকুমেন্টেশন সাইটে বিকল্প ইনস্টলেশন পদ্ধতি, রিলিজ চ্যানেল এবং সোর্স বিল্ড সম্পর্কে আলোচনা করা হয়েছে। মডিউল চালানো ইনস্টলেশনের পর একটি মডিউল সরাসরি চালানো সম্ভব: একটি ছোট Fibonacci Wasm ফাইল আর্গুমেন্টসহ চালালে প্রত্যাশিত ফলাফল প্রিন্ট করে। একটি স্ট্যান্ডঅ্যালোন বাইনারি তৈরি করতে, compile সাবকমান্ড একটি .wasm ইনপুট এবং একটি আউটপুট পাথ গ্রহণ করে, এবং resulting এক্সিকিউটেবলটি একই আর্গুমেন্ট গ্রহণ করে। Go থেকে Wago ব্যবহার করা Go ডেভেলপাররা go get github.com/wago-org/wago এর মাধ্যমে মডিউলটি যুক্ত করেন। রিপোজিটরিটিতে নম্বরযুক্ত উদাহরণ দেওয়া আছে, যার মধ্যে একটি টাইপড রানটাইম উদাহরণ রয়েছে যা একটি মডিউল কম্পাইল করে, একটি ইনস্ট্যান্স তৈরি করে এবং একটি এক্সপোর্টেড ফাংশন কল করে। Go-তে Wago এমবেড করার জন্য একটি আলাদা ডকুমেন্টেশন গাইড রয়েছে। হোস্ট ক্ষমতা এবং প্লাগইন হোস্ট ইন্টিগ্রেশনগুলো ইচ্ছাকৃতভাবে কোর রানটাইমের বাইরে রাখা হয়েছে। init কমান্ডের মাধ্যমে একটি প্রজেক্ট শুরু করা যায় এবং WASI ইমপ্লিমেন্টেশনের মতো প্লাগইনগুলো নামের মাধ্যমে যুক্ত করা হয়, যেমন wago-org/wasi। উপলব্ধ প্লাগইনগুলো ব্রাউজ করার জন্য একটি প্লাগইন রেজিস্ট্রি সাইট প্রদান করা হয়েছে। পারফরম্যান্স README-তে উল্লেখ করা হয়েছে যে Wago মাত্র কয়েক কিলোবাইট র‍্যাম ব্যবহার করে এবং দাবি করা হয়েছে যে এটি wazero-এর তুলনায় কম্পাইল টাইম প্রায় তিন গুণ দ্রুত এবং এক্সিকিউশন প্রায় ৪০ শতাংশ দ্রুত। প্রজেক্টটি একটি বেঞ্চমার্ক পেজ এবং রিপোজিটরিতে একটি বেঞ্চমার্ক ডিরেক্টরির লিঙ্ক প্রদান করেছে। এই পরিসংখ্যানগুলো মেইনটেইনারদের নিজস্ব পরিমাপ এবং নির্ভরযোগ্য হওয়ার আগে আপনার নিজস্ব ওয়ার্কলোডের সাথে যাচাই করা উচিত। প্রজেক্ট স্ট্যাটাস এবং লাইসেন্সিং Wago Apache License 2.0-এর অধীনে রিলিজ করা হয়েছে এবং বিনামূল্যে তৈরি করা হয়েছে, যেখানে স্পনসরশিপ উৎসাহিত করা হয়। রিপোজিটরিতে ডকুমেন্টেশন, উদাহরণ, ফিচার ম্যাট্রিক্স, আর্কিটেকচার ডকুমেন্ট, রোডম্যাপ, কন্ট্রিবিউশন গাইডলাইন এবং একটি ইস্যু ট্র্যাকার অন্তর্ভুক্ত রয়েছে। সামগ্রিকভাবে, Wago সেই Go ডেভেলপারদের লক্ষ্য করে তৈরি করা হয়েছে যারা C ডিপেন্ডেন্সি ছাড়াই WebAssembly চালাতে বা এমবেড করতে চান এবং যারা একটি ছোট রানটাইম কোর পছন্দ করেন যার হোস্ট ফিচারগুলো প্লাগইনের মাধ্যমে যুক্ত করা হয়। এর বিটা স্ট্যাটাস এবং বেঞ্চমার্ক সংখ্যাগুলো প্রজেক্টের নিজস্ব হওয়াটা গ্রহণের আগে বিবেচনা করার প্রধান বিষয়।