সর্বশেষ গো (Go) ল্যাঙ্গুয়েজ ভার্সনটি পারফরম্যান্স আপডেটে ভরপুর, যা কোডগুলোকে আরও দ্রুত চালাতে সাহায্য করে, এবং ডেভেলপার হিসেবে আপনার জীবনকে সহজ করার জন্য নতুন টুলস যোগ করেছে।
গো ১.২৫ ইঞ্জিন রুমের গভীরে ডুব দিয়েছে। এই সর্বশেষ রিলিজ রানটাইম অপটিমাইজ করে, প্রতিদিন ব্যবহার করা টুলসগুলোকে ধারালো করে এবং স্ট্যান্ডার্ড লাইব্রেরিতে কিছু নতুন খেলনা যোগ করে। এবং, সর্বদা যেমনটা হয়, গো-এর দৃঢ় ব্যাকওয়ার্ড কম্প্যাটিবিলিটির প্রতিশ্রুতির কারণে আপনি আত্মবিশ্বাসের সাথে আপগ্রেড করতে পারেন। বাংলাদেশসহ দক্ষিণ এশিয়ার ডেভেলপাররা, যারা ক্লাউড-ভিত্তিক অ্যাপস বা মাইক্রোসার্ভিস তৈরিতে গো ব্যবহার করেন, তারা এই আপডেট থেকে বিশেষভাবে লাভবান হবেন কারণ এটি রিসোর্স অপটিমাইজেশনে সাহায্য করে।
আপনার অ্যাপসগুলোকে গো-এর মতো দ্রুত করুন
ডিফল্টভাবে GOMAXPROCS-এর কাজকর্মে একটি আপগ্রেড হয়েছে। সহজভাবে বললে, যদি আপনার কোনো কুবারনেটিস পডে (Kubernetes pod) “সিইপিইউ লিমিট” সেট করে গো চালান, তাহলে গো এখন সেই লিমিটকে স্বয়ংক্রিয়ভাবে সম্মান করবে, মেশিনের সব কোর ব্যবহার করার চেষ্টা না করে। এছাড়া, যদি সেই লিমিট পরিবর্তন হয় তাহলে এটি রিয়েল-টাইমে অ্যাডাপ্ট করবে। এটি একটি সূক্ষ্ম পরিবর্তন যা আরও প্রেডিক্টেবল পারফরম্যান্স এবং আধুনিক ক্লাউড এনভায়রনমেন্টে ভালো আচরণ নিয়ে আসে।
গো ল্যাঙ্গুয়েজের জন্য একটি এক্সপেরিমেন্টাল নতুন গার্বেজ কালেক্টর (garbage collector) চালু করা যায় GOEXPERIMENT=greenteagc দিয়ে কোড বিল্ড করে। তাহলে কেন করবেন? টিমটি আশা করছে “রিয়েল-ওয়ার্ল্ড প্রোগ্রামগুলোতে গার্বেজ কালেক্টরের ভারী ব্যবহারে ১০—৪০% ওভারহেড কমবে।”
এবং সেই নাইটমেয়ার বাগগুলো ডিবাগ করার জন্য? নতুন ট্রেস ফ্লাইট রেকর্ডার (Trace Flight Recorder) একটা স্যানিটি-সেভার হতে পারে। এটি মেমরিতে ট্রেস ডেটার একটা ছোট, রোলিং বাফার রাখে। যখন আপনার অ্যাপ্লিকেশন সমস্যা স্পট করে, তখন এটি শুধুমাত্র শেষ কয়েক সেকেন্ডের অ্যাকটিভিটি ফাইলে ডাম্প করতে পারে। আর গিগাবাইট লগ সিফট করে সেই একটা ইভেন্ট খুঁজতে হবে না।
গো ল্যাঙ্গুয়েজ টুলচেইনকে ধারালো করুন
একজন ভালো ডেভেলপার তার টুলসের মতোই ভালো, এবং গো ল্যাঙ্গুয়েজ টুলচেইন প্রচুর পলিশ পেয়েছে।
go vet কমান্ডের কয়েকটা নতুন ট্রিক আছে যা কমন ফুটগানস থেকে আপনাকে বাঁচায়, যেমন WaitGroup.Add কল ভুল জায়গায় রাখলে স্পট করা। go কমান্ড নিজেও নতুন জিনিস শিখেছে, যেমন go doc -http ফ্ল্যাগ যা লোকাল ডকুমেন্টেশন সার্ভার ইনস্ট্যান্টলি স্পিন আপ করে, go.mod ফাইলে নতুন ignore ডিরেক্টিভ।
বনেটের নিচে, আপনার কম্পাইল্ড প্রোগ্রামগুলো একটু ছোট হয়ে যাবে এবং লিঙ্কিং একটু দ্রুত হবে, DWARF ৫ নামক আরও মডার্ন ডিবাগিং ফরম্যাটে সুইচ করার কারণে। এটি সেই অদৃশ্য উন্নয়নগুলোর একটা যা সবকিছুকে একটু স্ন্যাপিয়ার ফিল করে।
কম্পাইলার এখন গো ১.২১ থেকে থাকা একটা নিল পয়েন্টার ইস্যুতে আরও কড়া, যেখানে কিছু ভুল কোড ক্র্যাশ না করে চলতে পারত। গো ১.২৫-এ, সেই কোড এখন প্যানিক করবে, যেমনটা হওয়া উচিত। এটি ভালো জিনিস, কারণ এটি সঠিক কোড প্রমোট করে, কিন্তু যদি আপনার কোনো লেজি এরর হ্যান্ডলিং থাকে তাহলে আপনাকে ধরতে পারে। ফিক্স সর্বদা একই: ফাংশন কল করার পরপরই এরর চেক করুন।
স্ট্যান্ডার্ড লাইব্রেরির আপগ্রেড
গো ল্যাঙ্গুয়েজ টিম সম্পূর্ণভাবে রিরাইট করা একটা JSON প্যাকেজ দিয়ে জল পরীক্ষা করছে। আজই চেষ্টা করতে পারেন GOEXPERIMENT=jsonv2 ফ্ল্যাগ দিয়ে। যদি আপনার অ্যাপ্লিকেশন অনেক JSON ক্রাঞ্চিং করে, তাহলে এটি চেক করুন। পারফরম্যান্স গেইনস, বিশেষ করে ডিকোডিংয়ে, বেশ ইমপ্রেসিভ মনে হচ্ছে।
কনকারেন্ট কোড টেস্টিং, প্রায়ই একটা রিয়েল হেডেক, এখন অনেক সহজ হয়ে যাবে। testing/synctest প্যাকেজ এখন এক্সপেরিমেন্টাল ফেজ থেকে গ্র্যাজুয়েট করেছে। এটি আপনাকে স্পেশাল “বাবল” -এ টেস্ট চালাতে দেয় যেখানে টাইম ভার্চুয়াল, যাতে আপনি ট্রিকি রেস কন্ডিশন এবং ইন্টারঅ্যাকশন টেস্ট করতে পুরো কন্ট্রোল পান। এবং, একটু সিনট্যাকটিক সুগারের জন্য, sync.WaitGroup-এ এখন .Go মেথড আছে যা গোরুটিন লঞ্চ এবং ট্র্যাকিংয়ের কমন প্যাটার্নকে একটু ক্লিনার করে।
আরও অনেক কিছু আছে। net/http প্যাকেজে মডার্ন, টোকেনলেস CSRF প্রটেকশন পাবেন, ক্রিপ্টোগ্রাফি ফাংশনের জন্য বিশাল পারফরম্যান্স বুস্ট, এবং উইন্ডোজে অ্যাসিঙ্ক্রোনাস I/O সার্ভিস লেখা ডেভেলপারদের জন্য মেজর ইমপ্রুভমেন্ট।
গো ল্যাঙ্গুয়েজ ১.২৫ একটা “জিনিসগুলো করুন” রিলিজ, কিন্তু ডেভেলপারদের জন্য পারফরম্যান্স, স্থিতিশীলতা এবং কোয়ালিটি-অফ-লাইফ ইমপ্রুভমেন্ট নিয়ে আসে যা আপনি প্রতিদিন অনুভব করবেন। বাংলাদেশী ডেভেলপার সম্প্রদায়ের জন্য এটি বিশেষভাবে উপকারী, কারণ আমাদের অনেক প্রজেক্ট ক্লাউড এবং কনটেইনার-ভিত্তিক—এই আপডেটগুলো খরচ কমিয়ে দক্ষতা বাড়াবে। যদি আপনি গো ব্যবহার করেন, তাহলে এখনই আপগ্রেড করে দেখুন এবং ফিডব্যাক দিন যাতে ভবিষ্যতের রিলিজ আরও ভালো হয়।