随着我们越来越接近下一个重大版本发布,我们希望通过引入以下内容来提醒大家pragma experimental "v0.5.0",它已经启用了 0.5.0 版本的一些新的安全特性。
此外,此版本最终检查了函数上的修饰符 view(以前称为 constant)和 pure。根据经验,如果您的函数不修改存储,请使用 view;如果它甚至不读取任何状态信息,请使用 pure - 但编译器本身也会建议最严格的限制。
我们还在新的 ABI 编码器上进行了进一步的工作:函数现在可以返回结构体。使用 pragma experimental ABIEncoderV2 打开它。它应该已经可以工作了,但仍然会生成更昂贵的代码。
最后,引入了许多新的警告并改进了错误消息。
特性
- 汇编解析器:支持多重赋值(x, y := f())。
- 代码生成器:在使用实验性“ABIEncoderV2”时,保留编码函数的单个副本。
- 代码生成器:部分支持将 structs 作为参数和返回值传递(目前需要 pragma experimental ABIEncoderV2;)。
- 通用:支持 pragma experimental "v0.5.0"; 以激活即将到来的重大更改。
- 通用:在外部函数类型上添加了 .selector 成员以检索其签名。
- 优化器:添加新的优化步骤以移除未使用的 JUMPDEST。
- 静态分析器:当使用已弃用的内置函数 sha3 和 suicide 时发出警告(分别由 keccak256 和 selfdestruct 替换,分别在 0.4.2 和 0.2.0 中引入)。
- 语法检查器:如果在合约函数上未指定可见性,则发出警告。
- 类型检查器:显示对未使用的函数参数/返回值的有用警告。
- 类型检查器:不要对事件显示相同的错误多次。
- 类型检查器:大大减少了对重复构造函数和函数显示的重复错误的数量。
- 类型检查器:警告在 keccak256、sha3、sha256 和 ripemd160 中使用文字作为紧凑打包参数。
- 类型检查器:强制执行 view 和 pure。
- 类型检查器:作为实验性 0.5.0 功能,使用错误强制执行 view / constant。
- 类型检查器:作为实验性 0.5.0 功能,强制回退函数为 external。
错误修复
- ABI JSON:包含所有重载的事件。
- 解析器:与 parseTypeName 相关的崩溃修复。
- 类型检查器:允许常量字节数组。
非常感谢所有帮助使此版本发布成为可能的贡献者!
下载 Solidity 的新版本这里.