此版本添加了更多向后不兼容的安全措施,这些措施通过pragma experimental "v0.5.0"; 开启,并包含另一个重要功能:您现在可以使用 outputSelection 字段选择编译某些合约标准 JSON I/O 编译器接口,这将极大地加快像 truffle 这样的工具的速度。
还有两个重要的错误修复:一个是 bytes 变量在内存中分配方式的疏忽,可以将内存需求减少 32 倍。第二个是安全修复:在非常特殊的情况下,可能会发生调用常规函数而不是调用以太坊转账(不带数据)的回退函数的情况。这些情况是:函数必须具有零签名(4294967296 个中的一个),它必须是可支付的,合约不能超过五个(外部)函数,并且不能有回退函数。
功能
- 代码生成器:始终使用所有可用 gas 进行调用,作为实验性 0.5.0 功能(以前,保留了一些 gas 以便在 Tangerine Whistle 之前的 EVM 版本中工作)
- 解析器:针对参数列表中意外的尾随逗号提供更好的错误消息。
- 标准 JSON:支持 outputSelection 字段,用于选择性编译提供的源代码。
- 语法检查器:一元 + 现在是语法错误,作为实验性 0.5.0 功能。
- 类型检查器:禁止非纯常量状态变量,作为实验性 0.5.0 功能。
- 类型检查器:不允许将 address 的成员添加到合约中,作为实验性 0.5.0 功能。
- 类型检查器:强制接口函数为外部函数,作为实验性 0.5.0 功能。
- 类型检查器:对于局部变量,需要 storage 或 memory 关键字,作为实验性 0.5.0 功能。
错误修复
- 代码生成器:为每个内存字节数组元素分配一个字节,而不是 32 个字节。
- 代码生成器:不接受少于四个字节的数据(截断的函数签名)用于常规函数调用 - 而是调用回退函数。
- 优化器:删除未使用的堆栈计算结果。
- 解析器:修复 VariableDeclarationStatement 的源位置。
- 类型检查器:允许在视图函数中使用 gas。
- 类型检查器:不要将事件参数标记为遮蔽状态变量。
- 类型检查器:防止重复的事件声明。
- 类型检查器:正确检查数组长度,不要依赖代码生成中的断言。
- 类型检查器:正确支持在合约中覆盖从 address 继承的成员(如 balance、transfer 等)。
- 类型检查器:验证元组表达式中的每个数字字面量,即使它们没有从字面量赋值。
非常感谢所有帮助使此版本发布成为可能的贡献者!
在此下载 Solidity 的新版本 此处。