{ 跳至内容 }

Solidity 0.4.20 版本发布公告

发布于 2018年2月14日,Solidity 团队

发布

此版本包含一些可用性和安全改进,以及 SMT 组件的进一步发展。出于安全原因,var 关键字已被弃用。

在为中间语言编写优化阶段方面取得了重大进展,新 ABI 编码器将使用这些阶段生成高度优化的输出。主要目标是使生成的字节码大小与旧的 ABI 编码器相似,同时对更严格的解码过程进行更多运行时检查。此版本中尚未启用此功能。

功能

  • 代码生成器:防止直接调用库中的非视图函数(而不是通过 delegatecall 调用)。
  • 命令行界面:使用 strict-assembly 开关支持汇编的严格模式(不允许跳转、指令操作码等)。
  • 内联汇编:对于使用跳转标签发出警告(跳转指令已存在)。
  • 内联汇编:在 IULIA 模式下支持一些受限的标记(return、byte、address)作为标识符。
  • 优化器:将 x % 2**i 替换为 x & (2**i-1)
  • 解析器:在第一个错误之后继续解析引用。
  • 解析器:如果找不到给定的标识符,则建议替代标识符。
  • SMT 检查器:在程序变量的 SMT 编码中考虑 if-else 分支条件。
  • 语法检查器:弃用 var 关键字(并将其标记为实验性 0.5.0 功能的错误)。
  • 类型检查器:允许 this.f.selector 为纯表达式。
  • 类型检查器:对于对接口函数使用 public 可见性发出警告。
  • 类型检查器:限制为创建抽象合约而引发的警告数量。

错误修复

  • 错误输出:将巨大的数字文字截断到中间以避免输出膨胀。
  • 解析器:不允许没有参数列表的事件声明。
  • 标准 JSON:在错误列表中填充 sourceLocation 字段。
  • 标准 JSON:正确支持包含冒号(例如 URL)的合约和库文件名。
  • 类型检查器:如果使用 struct 作为函数参数(而不是内部编译器错误),则建议使用实验性 ABI 编码器。
  • 类型检查器:改进错误消息以处理错误的结构初始化。

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

下载 Solidity 的新版本这里.

上一篇

下一篇

参与进来

GitHub

推特

Mastodon

矩阵

了解更多

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

2024Solidity 团队

安全策略

行为准则