{ 跳至内容 }

Solidity 0.8.23 版本发布公告

作者:Solidity 团队 发布时间:2023 年 11 月 8 日

发布

今天,我们宣布 Solidity 编译器发布v0.8.23。这个最新的编译器版本旨在成为一个纯 bugfix 版本,其中包含对一个重要但严重程度较低的 bug 的修复。

根据我们的调查,我们预计在现实世界中不会出现利用该 bug 进行攻击或漏洞利用的情况,因此,我们将其整体严重程度评估为低。

此版本还对优化器设置进行了一项小改动,使其更直观。从 v0.8.21 开始,禁用optimizer.details.yul 设置不再阻止编译器运行UnusedPruner 步骤,我们认为这是防止堆栈问题内部机制的重要组成部分。该步骤仍然可以禁用 - 通过显式提供一个空的优化序列 - 但是这需要名义上启用 Yul 优化器,这有时会导致用户启用整个优化器,并无意中包含额外的优化。现在,可以使用一个空的序列,而与其他设置无关。

请注意:不幸的是,此版本用于 Windows 的 npm 包装器已损坏,因为一个无关的依赖项被无意中添加到了 npm 版本的 package.json 中。该依赖项无害,但它在 Windows 中不受支持。我们发布了 0.8.23-fixed 来解决这个问题,尽管 0.8.23 仍然有效并且 **没有** 被弃用。

重要 Bugfix

修复无效的 verbatim 重复数据消除 bug

用户报告了一个区块重复数据消除 bug,导致除了 verbatim 指令内容外完全相同的区块被视为等效,从而合并成一个区块。新版本修复了这个 bug。

该 bug 存在于 0.8.5 版本以来,该版本引入了 verbatim,并且仅影响启用优化的纯 Yul 编译。Solidity 代码或内联汇编块中使用的 Yul 不会触发它。

阅读我们的 博客文章,介绍该 bug,了解该 bug 如何表现出来,哪些类型的合约可能会受到影响,以及其他技术细节。

变更日志

编译器功能

  • 命令行界面:现在始终可以提供空的 --yul-optimizations 序列。
  • 标准 JSON 接口:现在始终可以提供空的 optimizerSteps 序列。

如何安装/升级

要升级到最新版本的 Solidity 编译器,请按照我们文档中提供的 安装说明 进行操作。

您可以在此处下载 Solidity 的新版本:v0.8.23。如果您想从源代码构建,请不要使用 GitHub 自动生成的源代码归档文件。而是使用 solidity_0.8.23.tar.gz,并查看 我们关于如何从源代码构建的文档

我们建议所有 Solidity 开发人员始终升级到最新版本的 Solidity,以利用改进、优化,最重要的是 bugfix。

最后但并非最不重要的,我们要感谢所有帮助使此版本发布成为可能的贡献者!

上一篇

下一篇

参与进来

GitHub

Twitter

Mastodon

Matrix

了解更多

博客文档用例贡献关于论坛

2024Solidity 团队

安全策略

行为准则