究竟什么被认为是对PureScript库的重大改变?

时间:2017-03-06 18:36:01

标签: semantic-versioning purescript

Rust社区对语义版本控制有fairly detailed description的解释。

PureScript社区有this,其中包括:

  

我们应该为初学者编写一个semver教程,特别是它在PureScript中的使用以及我们依赖于-versions的方式。

奇怪的是,查看各种各样的65个随机purescript库,它们都使用^ --versions而不是〜-versions,但我一直无法找到任何更新的文档,我们最近因为期望不匹配。

PureScript社区是否对semver有一个合理一致的解释,特别是关于什么是或不被认为是一个突破性变化?如果是这样,它是什么?

1 个答案:

答案 0 :(得分:5)

我们在任何地方都没有详尽的清单,没有。现在和任何一个人开始一样好!

  • 利用需要比当前版本发布时更新的编译器的功能。
  • 添加依赖项。
  • 删除依赖项。
  • Bumping依赖项的主要版本。
  • 删除或重命名模块。
  • 从模块中删除成员(表示任何内容 - 类型,值,类,种类,操作符)(通过隐藏导出或删除它)。
  • 以某种方式更改现有函数或值的类型签名,这意味着它不会与先前版本统一(因此允许使类型更通用,但不能更少)。
  • 添加,删除或更改类型的类型变量类型。
  • 为类型添加,删除或更改数据构造函数(除非该类型不导出其构造函数)。
  • 添加或删除类型类声明的成员。
  • 更改类的预期类型参数。
  • 添加或更改类的功能依赖性。
  • 改变班级的规律。
  • 删除类的实例。

除了向模块添加新成员(或重新导出)之外的任何其他内容都被认为是一个重大改变!

偶尔我们已经进行了技术上的更改(由于类型签名更改),但是这样做是为了修复在没有修复的情况下完全无法使用的内容。在那些情况下,他们已经作为补丁颠簸出去了,但这些情况非常罕见。它们往往只在涉及FFI时发生。

Re:~ vs ^ ...我认为在制作链接页面时,没有选择在Bower中使用^(或者它没有默认为至少)。 ^是现在用于库的首选/推荐范围。