【问题标题】:What exactly is considered a breaking change to a PureScript library?究竟什么被认为是对 PureScript 库的重大更改?
【发布时间】:2017-07-26 18:18:31
【问题描述】:
Rust 社区有一个fairly detailed description,他们对语义版本控制的解释。
PureScript 社区有this,其中包括:
我们应该为初学者编写一个 semver 教程,特别是它在 PureScript 中的使用以及我们依赖 ~-versions 的方式。
奇怪的是,查看 65 个随机纯脚本库的分类,它们都使用 ^-versions 而不是 ~-versions,但是我找不到任何更新的文档,而且我们最近的构建由于预期不匹配。
PureScript 社区是否对 semver 有相当一致的解释,特别是关于什么是或不被视为重大更改?如果有,是什么?
【问题讨论】:
标签:
semantic-versioning
purescript
【解决方案1】:
我们在任何地方都没有详尽的清单,没有。现在是入手的好时机!
- 利用需要比当前版本发布时更新的编译器的功能。
- 添加依赖项。
- 删除依赖项。
- 碰撞依赖项的主要版本。
- 删除或重命名模块。
- 从模块中删除一个成员(即任何东西 - 类型、值、类、种类、运算符)(通过隐藏导出或删除它)。
- 以某种方式更改现有函数或值的类型签名,这意味着它不会与以前的版本统一(因此可以使类型更通用,但不能更少)。
- 添加、删除或更改类型的类型变量。
- 添加、删除或更改类型的数据构造函数(除非该类型不导出其构造函数)。
- 添加或删除类型类声明的成员。
- 更改类的预期类型参数。
- 添加或更改类的功能依赖关系。
- 改变阶级的法则。
- 删除类的实例。
除了向模块添加新成员(或重新导出)之外,几乎所有其他操作都被视为重大更改!
有时我们会做出技术上破坏性的更改(由于类型签名更改),但这样做是为了修复一些在没有修复的情况下完全无法使用的东西。在这些情况下,它们会以补丁的形式出现,但这种情况非常罕见。它们往往只在涉及 FFI 时发生。
回复:~ 与 ^... 我认为在创建链接页面时没有在 Bower 中使用 ^ 的选项(或者至少它没有默认使用) . ^ 是现在用于库的首选/推荐范围。