⛵️Новейшая версия компилятора Solidity!
Мы рады объявить о последней версии компилятора 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планируется полностью удалить в версии Solidity
0.9.0.
Осуждение selfdestruct
selfdestruct теперь считается устаревшим (
EIP-6049), и компилятор будет предупреждать о его использовании как в Solidity, так и в Yul, включая встроенную сборку. В настоящее время замены нет, но его использование крайне не рекомендуется, поскольку в конечном итоге он изменит свою семантику, и это каким-то образом повлияет на все контракты, использующие его.
Генерация байт-кода EVM из Yul
Этот выпуск также включает в себя изменение генерации байт-кода EVM из кода Yul при включении оптимизатора: для функций Yul, которые никогда не возвращаются обратно вызывающему (т. Е. Всегда возвращают или всегда завершают вызов EVM), компилятор больше не отправляет метку возврата. Метка используется только для перехода обратно к вызывающему абоненту. Это уменьшит как стоимость газа, так и размер кода. Инструментарий, который полагается на текущее соглашение о вызовах на уровне байт-кода, возможно, потребуется скорректировать с учетом этого изменения.