阅读(969) (12)

solidity 版本控制

2022-05-09 16:28:46 更新

版本控制

Solidity 版本遵循语义版本控制。此外,主版本 0(即 0.xy)的补丁级别版本将不包含重大更改。这意味着使用版本 0.xy 编译的代码可以预期使用 0.xz 编译,其中 z > y。

除了发布之外,我们还提供每日开发构建版本,目的是让开发人员更容易尝试即将推出的功能并提供早期反馈。但是请注意,虽然每日开发构建通常非常稳定,但它们包含来自开发分支的前沿代码,并且不能保证始终有效。尽管我们尽了最大努力,但它们可能包含未记录和/或损坏的更改,这些更改不会成为实际版本的一部分。它们不适用于生产用途。

部署合约时,您应该使用最新发布的 Solidity 版本。这是因为定期引入重大更改以及新功能和错误修复。我们目前使用 0.x 版本号来表示这种快速变化的步伐

详细的版本字符串

Solidity 版本字符串包含四个部分:

  • 版本号

  • 预发布标签,通常设置为develop.YYYY.MM.DDnightly.YYYY.MM.DD

  • 提交格式为commit.GITHASH

  • 平台,具有任意数量的项目,包含有关平台和编译器的详细信息

如果有本地修改,提交将使用.mod.

这些部分按照 SemVer 的要求组合在一起,其中 Solidity 预发布标签等于 SemVer 预发布,Solidity 提交和平台组合构成了 SemVer 构建元数据。

发布示例:0.4.8+commit.60cc1668.Emscripten.clang.

预发布示例:0.4.9-nightly.2017.1.17+commit.6ecb4aa3.Emscripten.clang

关于版本控制的重要信息

发布后,补丁版本级别会发生变化,因为我们假设只有补丁级别更改。合并更改时,应根据 SemVer 和更改的严重性来调整版本。最后,总是使用当前夜间构建的版本进行发布,但没有说明prerelease符。

例子:

  1. 发布了 0.4.0 版本。

  2. 从现在开始,nightly build 的版本为 0.4.1。

  3. 引入了非破坏性更改 –> 版本没有更改。

  4. 引入了一项重大更改 –> 版本升级为 0.5.0。

  5. 发布了 0.5.0 版本。

此行为适用于 版本 pragma