Команда разработчиков стандартного для сети Ethereum языка смарт-контрактов объявила в твиттере о выпуске новой версии Solidity 0.8.0 с весьма значительными изменениями и улучшениями. Статья официального блога раскрывает подробности.
Solidity 0.8.0 is here! Solidity 0.8.0 is a breaking release of the Solidity compiler and language. Check this thread for notable new features and changes and read the announcement post for all details.
https://t.co/KotAgN3mb2
https://t.co/c4sw9rrski pic.twitter.com/5OYiYqGJMN— Solidity (@solidity_lang) December 16, 2020
Изменение, которое коснется большинства пользователей, заключается в том, что арифметические операции теперь проверяются по умолчанию, что означает, что переполнение и потеря значимости вызовут возврат. Эта функция может быть отключена локально с помощью блока unchecked
.
Второе изменение, которое очень заметно, заключается в том, что кодер ABI v2 активирован по умолчанию. Вы можете активировать старый кодировщик с помощью прагмы abicoder v1 или явно выбрать v2 с помощью прагмы abicoder v2 - это имеет тот же эффект, что и экспериментальный прагма ABIEncoderV2. Кодер ABI v2 более сложен, чем v1, но также выполняет дополнительные проверки входных данных и поддерживает больший набор типов, чем v1.
Кроме того, внутренние ошибки, такие как деление на ноль, сбой утверждения и другие, больше не используют недопустимый код операции, а используют возврат со специальным сообщением об ошибке, чтобы не тратить газ в таких ситуациях.
Другое важное изменение заключается в том, что команда ввела ограничение возможности явных преобразований, чтобы избежать двусмысленности. Все преобразования, которые были возможны до этого, по-прежнему возможны, но вам, возможно, придется выполнить два преобразования, чтобы достичь этого, однако это не влияет на сгенерированный код.
Это лишь некоторые из важных критических изменений в 0.8.0, полный список смотрите в журнале изменений!