نسخه جدید گو ۱.۲۷ بالاخره منتشر شد
این نسخه ۱۹ آگوست اومد و چند تا تغییر جدی داره که توی کار روزمره قشنگ حس میشه.
اولین و به نظرم مهمترین تغییر، پشتیبانی از generic methodهاست.
تا قبل از این اگه میخواستیم روی متد از جنریک استفاده کنیم، باید خود struct والد جنریک میبود تا متدها بتونن ازش استفاده کنن. حالا میتونیم مستقیم داخل متد type parameter تعریف کنیم. این کار باعث میشه کد مربوط به یه تایپ، تمیزتر و منسجمتر داخل همون تایپ بمونه و مجبور نشیم تابعهای جنریک رو بیاریم بیرون.
دومین تغییر مهم مربوط به encoding/json هست.
عملیات unmarshaling بهبود محسوسی داشته و علاوه بر اون، پکیج encoding/json/v2 هم به شکل رسمی اضافه شده. این نسخه جدید کنترل بیشتری روی نحوه پردازش JSON میده و پیشفرضهاش سختگیرانهتره (مثلاً UTF-8 خراب یا کلید تکراری رو رد میکنه). نسخه قدیمی هم همچنان کار میکنه.
سومین مورد که خیلی کاربردیه، اضافه شدن goroutineleak به runtime/pprof هست.
احتمالاً با این مشکل روبهرو شدی که یه گوروتین ساخته میشه و به هر دلیلی برای همیشه بلاک میمونه و آزاد نمیشه. حالا گو میتونه بخشی از این گوروتینهای گیرکرده رو راحتتر شناسایی کنه و تو پروفایل نشون بده.
چهارمین مورد، اضافه شدن UUID به کتابخانه استاندارد هست.
برای ساختن و پارس کردن UUIDهای معمول، دیگه لزوماً نیازی به کشیدن یه dependency جداگانه نیست.
پنجمین مورد هم بهبود memory allocation هست.
تو تخصیصهای کوچیک (مخصوصاً زیر حدود ۸۰ بایت) هزینه بعضی allocationها تا ۳۰ درصد کمتر شده. برای برنامههایی که زیاد حافظه میگیرن، بهبود کلی حدود ۱ درصد گزارش شده.
در کنار اینا، go fix و go doc هم بهتر شدن و چند تغییر دیگه تو runtime و standard library وجود داره.
در کل Go ۱.۲۷ بیشتر از اینکه یه نسخه پر از قابلیتهای عجیب و غریب باشه، چند تا بخش مهم و پرکاربرد رو پختهتر و کاربردیتر کرده.
مستند تغییرات Go 1.27:
https://go.dev/doc/go1.27
@DevTwitter | <Ali Moradi/>
Post #13261
5.63K
- ❤ 19
- 👍 3