{ 跳至内容 }

Solidity 0.5.9 版本发布公告

发布者:Solidity 团队,发布于 2019 年 5 月 28 日

发布

与之前的版本一样,我们大部分时间都花在了使 Solidity 面向未来上,进一步完善了 Yul 优化器、Solidity 到 Yul(以及 eWasm)的转换器和 SMT 检查器。

从 Solidity 生成的代码现在始终在 CBOR 元数据中包含版本号,以便能够快速评估合约是否可能受到编译器错误的影响。

语言特性

  • 内联汇编:在 0.5.7 中引入的 Revert 更改:callvalue() 指令不再需要 payable
  • 静态分析器:禁止库在外部调用自身。

编译器特性

  • 汇编器:在已部署的字节码中编码编译器版本。
  • 代码生成器:修复动态大小结构作为构造函数参数的处理。
  • 内联汇编:禁止 msize() 和 Yul 优化器的组合。
  • 元数据:添加源文件的 IPFS 哈希值。
  • 优化器:添加规则以简化 SHL/SHR 组合。
  • 优化器:添加针对左移一位的乘法和除法的规则。
  • SMT 检查器:支持继承状态变量。
  • SMT 检查器:支持元组和具有多个返回值的函数调用。
  • SMT 检查器:支持 delete
  • SMT 检查器:将对 this 的外部函数调用内联。
  • Yul 优化器:将单次运行的 for 循环简化为 if 语句。
  • Yul 优化器:优化数字的表示。
  • Yul 优化器:不要内联递归函数。
  • Yul 优化器:如果使用了 msize(),则不要删除影响 msize() 的指令。

错误修复

  • 代码生成器:在从存储器中加载时,将未初始化的内部函数指针显式转换为无效函数。
  • 代码生成器:修复在分配包含映射数组的结构时出现的断言失败。
  • 编译器内部:在每次编译之前重置 Yul 字符串存储库,释放内存。
  • SMT 检查器:修复基本构造函数修饰符中的错误转换。
  • SMT 检查器:修复访问从基类继承的状态变量时出现的内部错误。
  • SMT 检查器:修复定点运算中的内部错误。
  • SMT 检查器:修复对不支持类型的赋值时的内部错误。
  • SMT 检查器:修复在内联修改局部变量的函数调用时分支中的内部错误。

衷心感谢所有帮助使此版本发布成为可能的贡献者!

下载 Solidity 的新版本这里.

上一篇

下一篇

参与进来

GitHub

Twitter

Mastodon

Matrix

了解更多

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

2024Solidity 团队

安全策略

行为准则