除了对 Yul 优化器、Solidity 到 Yul 代码生成、eWasm 后端和 SMT 检查器进行进一步的幕后工作外,此版本还包含两个与存储数组相关的重要的错误修复。
详情请参阅我们之前的博客文章.
它还包含一个实验模式,允许从解析器错误中恢复(由@rocky 实现,由 ConsenSys 资助),希望这可能对 IDE 开发人员有所帮助。
重要错误修复
- ABIEncoderV2:修复存储数组中占用多个存储槽的数据类型的 abi 编码错误。
- 代码生成器:在同时赋值给存储和转换类型时,正确地将负数数组元素的高位清零。
编译器特性
- 命令行界面:通过error-recovery 命令行开关进行实验性解析器错误恢复。
- 优化器:添加规则以将 SUB(~0, X) 简化为 NOT(X)。
- Yul 优化器:使优化器适用于所有 Yul 方言,包括 eWasm。
错误修复
- 类型检查器:将函数类型成员 gas 和 value 的状态可变性设置为 pure(而它们的返回类型继承自函数类型的状态可变性)。
- Yul/内联汇编解析器:不允许在函数调用参数中使用尾随逗号。
构建系统
- 尝试使用库存 Z3 cmake 文件查找 Z3,并且仅回退到手动发现。
- CMake:对 boost 使用导入的目标。
- Emscripten 构建:升级到 boost 1.70。
- 为低于 5.0 版本的 gcc 生成 cmake 错误。
非常感谢所有帮助使此版本成为可能的贡献者!
从此处下载 Solidity 的新版本 此处。