什么情况下会被认为是 PureScript 库中的破坏性更改?

4
Rust社区有一个相当详细的语义化版本控制(Semantic Versioning)解释,可以在这里找到。
PureScript社区有这个页面,其中包括:
“我们应该为初学者编写一个semver教程,特别是在PureScript中的使用以及我们依赖于~版本的方式。”
奇怪的是,在查看了65个随机的purescript库后,它们全部使用^-versions而不是~-versions,但我无法找到任何更新的文档,并且最近由于期望不匹配而导致构建失败。
PureScript社区是否有一个相对一致的语义化版本控制解释,特别是关于什么是或不是破坏性更改?如果有,是什么?
1个回答

5
我们没有一份详尽的列表。现在是开始制作列表的好时机!
以下情况都被认为是破坏性变更,除了向模块添加新成员(或重新导出)之外:
- 利用需要比当前版本发布时更新的编译器的功能。 - 添加依赖项。 - 删除依赖项。 - 提升依赖项的主要版本号。 - 删除或重命名模块。 - 从模块中删除成员(任何类型、值、类、种类、运算符),可以通过隐藏导出或删除它来实现。 - 更改现有函数或值的类型签名,以一种使其与先前版本不一致的方式(因此可以使类型更加通用,但不能使类型更少)。 - 添加、删除或更改类型的类型变量的种类。 - 添加、删除或更改类型的数据构造函数(除非该类型不导出其构造函数)。 - 添加或删除类型类声明的成员。 - 更改类的预期类型参数。 - 添加或更改类的函数依赖关系。 - 更改类的法律。 - 删除类的实例。
偶尔我们会进行技术上的破坏性更改(由于类型签名的更改),但这样做是为了修复某些完全无法使用的问题。在这些情况下,它们已经作为补丁版本发布了,但这些情况非常罕见。它们只会在涉及 FFI 时出现。
关于 `~` 和 `^` 的问题... 我认为在制作链接页面的时候,Bower 没有使用 `^` 的选项(或者至少没有默认使用)。现在 `^` 是库的首选/推荐范围。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接