{ 跳至内容 }

Solidity 0.5.8 版本发布公告

发布于 2019年4月30日 由 Solidity 团队

发布

此版本修复了一些重要但不太可能出现的错误,并进一步完善了 ABIEncoderV2、SMTChecker 和 Yul,以及优化了编译器。

值得注意的是,如果启用了 ABIEncoderV2,ABI 解码器现在将在输入数据的高位存在脏数据时回滚,而不是忽略这些位。

重要错误修复

  • 代码生成器:修复构造函数上下文中未初始化的内部函数指针的初始化例程。
  • 类型系统:在库中使用事件参数时,为合约使用正确的类型名称。这影响了代码生成。
  • Yul 优化器:修复多重赋值的 SSA 变换。

语言特性

  • ABIEncoderV2:实现 calldata 数组和结构体的编码。
  • 代码生成:实现从存储到内存的递归结构体的复制。
  • Yul:不允许在 for 循环初始化块内定义函数。

编译器特性

  • ABI 解码器:在使用实验性解码器时,对于脏输入引发运行时错误。
  • 优化器:为 Constantinople 添加了针对大于 255 的常数移位的规则。
  • 优化器:添加规则以简化某些 AND 和 SHL 组合。
  • SMTChecker:支持算术复合赋值运算符。
  • SMTChecker:支持数组和映射访问的单目递增和递减。
  • SMTChecker:对内联汇编块显示不支持的警告。
  • SMTChecker:支持取模运算。
  • SMTChecker:支持合约 类型。
  • SMTChecker:支持 this 作为地址。
  • SMTChecker:支持地址成员。
  • 标准 JSON 接口:元数据设置现在会重新生成编译输入中的原始 "useLiteralContent" 设置。
  • Yul:为 for 循环语法添加了 break 和 continue 关键字。
  • Yul:支持 . 作为标识符的一部分。
  • Yul 优化器:添加了检测和删除死代码的步骤。

错误修复

  • SMTChecker:实现布尔短路。
  • SMTChecker:SSA 控制流没有考虑到在分支内部调用的内联函数内部修改的状态变量。
  • 类型系统:允许直接调用具有重载的基类函数。
  • Yul:正确注册函数,并在函数变量和外部作用域中的变量之间禁止遮蔽。

构建系统

  • Soltest:添加命令行选项 test / -t 到 isoltest,它接受一个字符串,允许过滤单元测试。
  • soltest.sh:允许环境变量 SOLIDITY_BUILD_DIR 指定构建文件夹并添加 help 用法。

非常感谢所有帮助使此版本成为可能的贡献者!

下载 Solidity 的新版本这里.

上一篇

下一篇

参与进来

GitHub

推特

Mastodon

矩阵

了解更多

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

2024Solidity 团队

安全策略

行为准则