Solidity v0.8.14 修复了两个重要错误。
第一个错误与直接从 calldata 中 ABI 编码嵌套数组有关。您可以在以下内容中找到更多信息博客文章.
第二个错误在某些继承结构中被触发,会导致内存指针被错误地解释为 calldata 指针或反之。我们也有一篇专门的 博客文章 讨论此错误。
除了这些,还有一些小的错误修复和改进。
请注意:不幸的是,此版本的 npm 包装包已损坏。使用新的soljson.js 与 solc-js 0.8.13 一起使用将有效,但 0.8.14 npm 版本(现已标记为已弃用)缺少一个文件,因此无法正常工作。我们发布了 0.8.14-fixed 以防您需要一个有效的 npm 包作为依赖项。但是,请注意,npm 不会自动选择它。
完整变更日志
重要错误修复
- ABI 编码器:当从包含嵌套数组的 calldata 中 ABI 编码值时,在所有情况下,都应正确验证嵌套数组长度是否与 calldatasize() 相匹配。
- 覆盖检查器:仅在覆盖外部函数时才允许更改参数的数据位置。
编译器功能
- 汇编-JSON 导出器:在 sourceList 字段中包含源列表。
- 命令行界面:选项 --pretty-json 也适用于以下选项:--abi,--asm-json,--ast-compact-json,--devdoc,--storage-layout,--userdoc。
- 语言服务器:允许语言服务器完全访问文件系统。
- 窥孔优化器:在简单终止之前删除没有副作用的操作。
- SMT 检查器:支持 abi.encodeCall 并考虑调用的选择器。
错误修复
- 汇编-JSON 导出器:修复汇编 json 导出以将操作的跳转类型存储在 jumpType 字段而不是 value 中。
- SMT 检查器:修复与 z3 >=4.8.16 的 ABI 兼容性。
- SMT 检查器:修复 z3 被选中但在运行时不可用时的错误。
- 类型检查器:在结合库的情况下,正确检查 using ... global 的限制。
- 类型检查器:将函数类型的参数转换为它们在 abi.encodeCall 中的调用方式。
衷心感谢所有帮助使此版本成为可能的贡献者!
在此下载 Solidity 的新版本 此处。