此版本引入了 AST 导出,巩固了内联汇编,引入了更多警告并修复了几个错误。
为了在将来提供更好的可移植性,汇编中的手动跳转已被弃用,取而代之的是结构化构造switch、for 和函数调用。
特性
- 汇编:添加 CREATE2 (EIP86)、STATICCALL (EIP214)、RETURNDATASIZE 和 RETURNDATACOPY (EIP211) 指令。
- 汇编:在汇编输出中显示辅助数据。
- 汇编:将 SHA3 重命名为 KECCAK256。
- AST:将所有属性导出为 JSON 格式。
- C API (jsonCompiler): 在内部使用标准 JSON I/O。
- 代码生成器:添加了 Whiskers 模板系统。
- 内联汇编:for 和 switch 语句。
- 内联汇编:函数定义和函数调用。
- 内联汇编:引入 keccak256 作为操作码。 sha3 仍然是有效的别名。
- 内联汇编:当未向函数指令提供足够的参数时,显示正确的错误消息。
- 内联汇编:当指令遮蔽 Solidity 变量时发出警告。
- 内联汇编:当使用 jump 时发出警告。
- 移除过时的 Why3 输出。
- 类型检查器:强制执行严格的 UTF-8 验证。
- 类型检查器:警告有关存储中的副本可能意外覆盖。
- 类型检查器:警告有关从字面量数字推断类型。
- 静态分析器:警告有关 callcode 的弃用。
错误修复
- 汇编:在优化器中标记 MLOAD 具有副作用。
- 代码生成器:修复空字面字符串的 ABI 编码。
- 代码生成器:修复负栈大小检查。
- 代码生成器:使用 REVERT 而不是 INVALID 用于生成的输入验证例程。
- 内联汇编:解析函数指令时强制执行函数参数。
- 优化器:禁止涉及 MLOAD 的优化,因为它会更改 MSIZE。
- 静态分析器:不再针对内联汇编中使用的变量发出未使用的变量警告。
- 类型检查器:修复地址字面量未被视为编译时常量的错误。
- 类型检查器:修复与不可调用类型相关的崩溃。
- 类型检查器:修复使用常量函数参数导致的段错误。
- 类型检查器:禁止在映射和非内部函数类型之间进行比较。
- 类型检查器:禁止多次调用相同的修饰符。
- 类型检查器:不要将看起来像地址的字符串视为地址。
- 类型检查器:支持有效但被错误拒绝的 UTF-8 序列。
衷心感谢所有为这个版本发布做出贡献的人!
下载新版本的 Solidity这里.