此版本添加了对 calldata 结构体和使用 ABIEncoderV2 的打包编码的支持。我们还对 C API 做了一些更改,并添加了对使用 Google oss-fuzz 进行持续模糊测试的支持。此外,我们还添加了一个新的命令行选项,用于改进(彩色)诊断格式。
语言特性
- 允许使用 ABIEncoderV2 的 calldata 结构体,但不能使用动态编码的成员。
编译器特性
- ABIEncoderV2: 实现打包编码。
- C API (libsolc / raw soljson.js): 引入 solidity_free 方法,该方法释放所有内部缓冲区以节省内存。
- 命令行界面:添加了新的选项 new-reporter,用于改进诊断格式,以及 color 和 no-color 用于强制(或显式禁用)彩色输出。
错误修复
- 代码生成器:防御性地将创建代码和运行时代码的分配填充到 32 字节的倍数。
- 命令行界面:仅允许严格的汇编使用 yul 优化器。
- 解析器:不允许空导入语句。
- 类型检查器:不允许数据位置不是 storage 的映射。
- 类型检查器:修复当结构体数组索引不适合 uint256 时出现的内部错误。
- 类型系统:正确报告数组和结构体的打包编码大小(到目前为止基本未使用)。
构建系统
- 添加对使用 Google oss-fuzz 进行持续模糊测试的支持
- SMT:如果使用 Z3,则需要 4.6.0 或更高版本。
- Soltest:添加在基于文件的单元测试环境中使用的解析器。
- Ubuntu PPA 软件包:使用 CVC4 作为 SMT 求解器而不是 Z3
非常感谢所有为实现此版本做出贡献的人!
下载 Solidity 的新版本这里.