此版本主要修复了上一个版本引入的一个与多个移位操作码相关的优化器错误。任何现有合约不太可能受到影响,但您仍不应使用 Solidity 0.5.5。
除此之外,ABIEncoderV2 对 calldata 结构体和数组的支持现已基本完成,我们添加了一些额外的优化器规则,并将枚举和一维数组添加到 SMT 检查器中。
重要错误修复
- Yul 优化器:修复结构简化器的访问顺序错误。
- 优化器:修复简化常量双移位优化规则中的溢出错误。
语言特性
- 允许使用 ABIEncoderV2 对具有动态编码基本类型的 calldata 数组进行编码。
- 允许使用 ABIEncoderV2 对动态编码的 calldata 结构体进行编码。
编译器特性
- 优化器:添加以下规则lt与常量的比较。
- 窥孔优化器:在 jumpi 之前移除双 iszero。
- SMTChecker:支持无需类型转换的枚举。
- SMTChecker:支持一维数组。
- 类型检查器:为某些文字转换提供更好的错误消息。
- Yul 优化器:添加规则以移除空的默认 switch case。
- Yul 优化器:添加规则以移除空 case(如果不存在默认 case)。
- Yul 优化器:添加规则以将没有 case 的 switch 替换为 pop(expression)。
错误修复
- JSON ABI:库 ABI 的 JSON 描述不再包含具有内部类型(如存储结构体)的函数。
- SMTChecker:修复合约包含过大有理数时发生的内部编译器错误。
- 类型系统:检测合约的基类是否使用需要实验性 abi 编码器的类型,而合约本身仍然使用旧的编码器。
构建系统
- Soltest:添加对函数签名中数组的支持。
- Soltest:添加对函数签名中结构体数组的支持。
非常感谢所有帮助使此版本发布成为可能的贡献者!
下载 Solidity 的新版本这里.