Solidity: версии 0.8.32 и 0.8.33
Вышли два обновления компилятора Solidity: версии 0.8.32 и 0.8.33. Это небольшие, но важные выпуски, которые исправляют несколько специфических проблем.
Первая версия, 0.8.32, исправляет редкую, но старую ошибку, связанную с работой с данными в блокчейн-хранилище. Она могла проявиться, только если разработчик намеренно создавал контракт с очень нестандартной и сложной структурой хранения данных, используя низкоуровневые инструменты. Для подавляющего большинства контрактов эта ошибка не была опасна.
Также в 0.8.32 починили удобную возможность: теперь можно корректно использовать модули для организации событий и ошибок. Раньше, если вы пытались вызвать событие Ev() из импортированного модуля M командой emit M.Ev(), компилятор выдавал внутреннюю ошибку. Теперь это работает, что делает код чище и лучше структурированным.
Однако, исправляя одну проблему, в 0.8.32 случайно добавили другую. В ней возникала ошибка компиляции, если в коде использовались автоматически созданные геттеры для константных переменных. Хотя это и не ломало уже работающие контракты, это мешало компилировать новый код с таким распространённым паттерном.
Поэтому практически сразу вышла версия 0.8.33 — это "горячее исправление" для только что описанной проблемы с геттерами. Разработчикам советуют сразу устанавливать версию 0.8.33, минуя 0.8.32, чтобы избежать ненужных сложностей с компиляцией.
Параллельно команда Solidity перенесла архив со всеми старыми версиями компилятора с серверов Amazon на Cloudflare. Для пользователей ничего не изменилось — файлы по-прежнему доступны по тому же адресу, но это помогает проекту снижать эксплуатационные расходы.
#solidity
Post #1515
989
- 👍 8