Мы рады объявить о последней версии компилятора Solidity, Solidity v0.8.18.
Эта последняя версия включает в себя ряд улучшений, а также вводит поддержку обновления Paris!
Заметные новые функции
Это те функции, которые мы хотим выделить в этом выпуске.
Отключение метаданных CBOR
Новый флаг командной строки (
--no-cbor-metadata) и стандартная опция JSON (settings.metadata.appendCBOR: false) для предотвращения добавления компилятором раздела метаданных CBOR в конец байт-кода. До сих пор из этого раздела можно было исключить только хэш файла метаданных JSON (--metadata-hash none/settings.metadata.bytecodehash: "none"), но байт-код все равно будет включать небольшую часть данных CBOR, содержащих версию компилятора.Поддержка Парижского Хардфорка
Поддержка парижского хард-форка включает в себя:
• Устаревание глобальной
block.difficultyвстроенной в Solidity и удаление difficulty()инструкции из встроенной сборки для версий EVM >= Paris. Изменение связано с переименованием и семантическими изменениями difficultyинструкции, введенной EIP-4399.• Введение глобальной
block.prevrandaoвстроенной в Solidity и prevrandao()инструкции по встроенной сборке для версий EVM >= Париж.Примечание:
block.difficultyпланируется полностью удалить в версии Solidity0.9.0.Осуждение selfdestruct
selfdestruct теперь считается устаревшим (EIP-6049), и компилятор будет предупреждать о его использовании как в Solidity, так и в Yul, включая встроенную сборку. В настоящее время замены нет, но его использование крайне не рекомендуется, поскольку в конечном итоге он изменит свою семантику, и это каким-то образом повлияет на все контракты, использующие его.Генерация байт-кода EVM из Yul
Этот выпуск также включает в себя изменение генерации байт-кода EVM из кода Yul при включении оптимизатора: для функций Yul, которые никогда не возвращаются обратно вызывающему (т. Е. Всегда возвращают или всегда завершают вызов EVM), компилятор больше не отправляет метку возврата. Метка используется только для перехода обратно к вызывающему абоненту. Это уменьшит как стоимость газа, так и размер кода. Инструментарий, который полагается на текущее соглашение о вызовах на уровне байт-кода, возможно, потребуется скорректировать с учетом этого изменения.