Solidity v0.7.3 修复了动态数组清理中的一个错误。要了解更多关于此错误的信息并检查您的合约是否易受攻击,请阅读此文章,其中包含有关此错误的更多详细信息。此外,v0.7.3 添加了使用以下命令在解析阶段后停止编译的选项:solc --stop-after parsing.
重要错误修复
- 代码生成器:在将动态数组复制到打包类型的存储后,正确清理。了解更多信息,请点击这里。
值得注意的新功能
解析后停止编译
solc --stop-after parsing(或标准 JSON 中的settings.stopAfter = 'parsing')现在可用于指示编译器尽可能少地对代码进行分析。它甚至不会尝试加载导入的(但未指定的)文件。这可以用于对抽象语法树进行快速外部分析,例如构建导入层次结构。
将来,我们可能会引入更多阶段来停止编译,但目前仅支持第一个阶段“解析”。
完整变更日志
编译器功能
- 代码生成器:实现了事件,其中函数类型作为其索引参数之一。
- 常规:在解析阶段后停止编译的选项。可与solc --stop-after parsing一起使用。
- 优化器:当底数为-1时,优化exp。
- SMTChecker:支持addmod 和 mulmod。
- SMTChecker:支持数组切片。
- SMTChecker:支持类型转换。
错误修复
- 代码生成器:在将动态数组复制到打包类型的存储后,正确清理。了解更多信息,请点击这里。
- 修复了某些涉及new 表达式的合约的内部编译器错误。
- JSON AST:在 ABIEncoderV2 合约中使用--ast-json 时,修复内部错误(该错误与函数的内存参数有关)。
- 类型检查器:在未启用 ABIEncoderV2 的模块中,添加了对使用与 ABIEncoderV1 不兼容的类型的调用的缺失检查。
- 类型检查器:修复了在对具有嵌套映射的存储数组调用.push(<arg>)时发生的内部编译器错误。
非常感谢所有为使此版本发布成为可能而做出贡献的人!
从这里下载 Solidity 的新版本。