{ 跳至内容 }

Solidity 0.6.0 版本发布公告

发布于 2019年12月17日 由 Solidity 团队

发布

这是一个 Solidity 编译器和语言的主要重大版本。更改包括继承中的显式 virtual 和 override 关键字、对 try/catch 的支持、将回退函数拆分为接收 Ether 函数和实际的回退函数,以及对数组长度更改方式的限制,等等。有关详细说明,请参阅文档 或参考下面的列表,该列表显示了每个更改。

从本版本开始,ABIEncoderV2 不再被视为实验性功能,但您仍然需要通过 pragma 激活它。

此外,Yul 优化器会自动与常规优化器一起激活,但您仍然可以通过详细的优化器设置禁用它。

重大更改

  • ABI:删除已弃用的constantpayable 字段。
  • ABI:type 字段现在是必需的,不再默认为 function
  • AST:内联汇编以结构化 JSON 而不是纯字符串导出。
  • C API (libsolc):在 solidity_compile 和回调中引入上下文参数。
  • C API (libsolc):提供的回调现在接受两个参数,kind 和 data。然后可以使用回调用于多种目的,例如文件导入和 SMT 查询。
  • C API (libsolc):solidity_free 已重命名为 solidity_reset。添加了函数 solidity_allocsolidity_free
  • C API (libsolc):solidity_compile 现在返回一个字符串,必须通过 solidity_free() 显式释放。
  • 命令行界面:删除基于文本的 AST 打印机 (ast)。
  • 命令行界面:默认切换到新的错误报告器。 old-reporter 回退到已弃用的旧错误报告器。
  • 命令行界面:添加选项以禁用或选择字节码元数据中 IPFS 和 Swarm 之间的哈希方法。
  • 常规:不允许从外部函数类型到 address 的显式转换,并添加名为 address 的成员作为替代。
  • 常规:启用 Yul 优化器作为标准优化的一部分。
  • 常规:新的保留关键字:overridereceivevirtual
  • 常规:private 不能与 virtual 一起使用。
  • 常规:将未命名的回退函数拆分为两种情况,使用 fallback()receive() 定义。
  • 继承:现在不允许状态变量隐藏。
  • 内联汇编:仅允许严格的内联汇编。
  • 内联汇编:变量声明不能隐藏汇编块外部的声明。
  • JSON AST:用 baseFunctions 替换 superFunction 属性。
  • Natspec JSON 接口:在 @dev 文档中正确支持多个 @return 语句,并强制在文档中提及命名返回参数。
  • 源映射:在源映射中添加“修饰符深度”作为第五个字段。
  • 标准 JSON 接口:添加选项以禁用或选择字节码元数据中 IPFS 和 Swarm 之间的哈希方法。
  • 语法:动态存储数组的 push(element) 不再返回新长度。
  • 语法:抽象合约需要使用 abstract 关键字显式标记为抽象。
  • 语法:数组的 length 成员现在始终是只读的,即使对于存储数组也是如此。
  • 类型检查器:幂运算的结果类型等于底数的类型。还允许对底数使用有符号类型。

语言特性

  • 允许通过 payable(...)addressaddress payable 的显式转换。
  • 允许全局枚举和结构体。
  • 允许公共变量覆盖外部函数。
  • 允许在十六进制字符串中使用下划线作为分隔符。
  • 引入数组切片的语法并为动态 calldata 数组实现它们。
  • 引入 push() 用于动态存储数组。如果适用,它会返回对新分配元素的引用。
  • 引入 virtualoverride 关键字。
  • 引入 try/catch 语句
  • 修改动态存储数组的 push(element),使其不再返回新长度。
  • Yul:引入 leave 语句,退出当前函数。
  • JSON AST:将每个外部可见的 FunctonDefinition 的函数选择器添加到 AST JSON 导出中。

编译器特性

  • 允许使用 revert-strings 选项或 settings.debug.revertStrings 设置从二进制文件中去除 revert 字符串。
  • ABIEncoderV2:不再警告已启用的 ABIEncoderV2(尽管仍然需要 pragma)。

非常感谢所有帮助使此版本成为可能的贡献者!

在此处下载 Solidity 的新版本 此处

上一篇

下一篇

参与进来

GitHub

Twitter

Mastodon

Matrix

了解更多

博客文档使用案例贡献关于论坛

2024Solidity 团队

安全策略

行为准则