سالیدیفا

سالیدیتی 0.8.18 منتشر شد + تغییراتی که لازم است بدانیم

هر نسخه جدیدی از سالیدیتی که عرضه می شود، گویا روح تازه ای به این زبان دمیده میشود.

هرچند تغییر نسخه از ۰.۸.۱۷ به ۰.۸.۱۸ یک تغییر کوچک حساب می شود اما چند تا چیز مهم هست که لازم است در مورد این نسخه بدانیم.

این نسخه از سایدیتی از بروزرسانی پاریس پشتیبانی می کند.

غیر فعال سازی متادیتا CBOR

یک فلگ جدید برای ترمینال (–no-cbor-metadata) و یک گزینه جدید JSON اضافه شده (settings.metadata.appendCBOR: false) تا مانع اضافه کردن متادیتا CBORT به انتهای بایت کد شود. در واقع تا کنون تنها امکان حذف هش JSON وجود داشت (–metadata-hash none/settings.metadata.bytecodehash: “none”) اما همچنان یک مقدار کمی از متادیتا GBOR همچون نسخه کامپایلر باقی می ماند که با این گزینه و فلگ جدید امکان حذف کامل اضافه شده.

پشتیبانی از هارد فورک پاریس

که این شامل منسوخ شدن گلوبال block.difficulty و حذف دستور عمل difficulty() در EVM های بعد از فورک پاریس می شود.

همچنین معرفی گلوبال جدید block.prevrandao و دستور عمل prevrandao() که در EVM های بعد از فورک پاریس استفاده خواهد شد.

نکته: قرار است block.difficulty به طور کامل در نسخه 0.9.0 حذف شود.

منسوخ شدن selfdestruct

بنا به EIP-6049 دیگر selfdestruct منسوخ شده در نظر گرفته می شود و کامپایتر چه در سالیدیتی و چه در yul در مورد این موضوع هشدار می دهد. هنوز جایگزینی معرفی نشده چون در کل استفاده از آن میتواند معنی قرارداد هوشمند را زیر سوال ببرد و همچنین برای قرارداد های متصل دیگر هم مشکل آفرین باشد.

تولید بایت کد EVM از Yul

این نسخه شامل تغییراتی در تولید بایت کد EVM از کد های Yul در حالت فعال بودن بهینه ساز است: در توابعی که بازگشتی به صدا زننده ندارند، کامپایلر دیگر از لیبل return استفاده نمی کند. کاربرد این لیبل پرش به صدا زننده تابع بود.

این کار باعث کاهش مصرف هزینه گس و همچنین کاهش حجم کد تولید شده می شود.

این ها تغییرات مهمی بود که لازم بود بدانیم اما چنانچه مایلید اصلاعات بیشتری داشته باشید میتوانید به لینک وبلاگ سالیدیتی مراجعه کنید.