gpt4 book ai didi

Haskell 包版本控制策略 - 依赖项的变化

转载 作者:行者123 更新时间:2023-12-03 15:15:25 24 4
gpt4 key购买 nike

假设我有 libfoo。这取决于 libbar。根据Package Versioning Policy , 我指定

libbar ==0.1.*

在 Build-depends: 在我的 cabal 文件中。

然后libbar的开发者发布了一个新版本,0.2。我对其进行了测试,没有影响 libfoo 的更改。所以我将我的 Build-depends 更改为
libbar ==0.2.*

或者也许
libbar >= 0.1 && < 0.3

尽管我能想到不采用后一种方式的理由。这是我对 libfoo 所做的唯一更改。

libfoo 导出接受在 libbar 中定义的类型并返回在 libbar 中定义的类型的函数。但是,对 libbar 的更改不会影响任何这些功能。

libfoo 的第一个版本是 0.1.0.0。 libfoo 的第二个版本应该有什么版本号?

最佳答案

这取决于您从 libbar 重新导出的内容。

您是否重新导出 libbar?

不太可能,但是....

鉴于 libbar 已将其主编号从 0.1 更改为 0.2,因此更改中可能会破坏代码,如果您将其批发重新导出,您的主编号也必须更改: 0.2.0.0

libbar 0.2 是否声明新实例?

这是的那个小心为了。

您无法阻止实例跨模块边界泄漏,并且新实例可能会破坏现有代码。这就是版本控制政策说的原因

Note that modifying imports or depending on a newer version of another package may cause extra instances to be exported and thus force a major version change.



如果 libbar 2.0 中有新实例,则必须有一个新的主要版本: 0.2.0.0 .

否则

在这种情况下,您的代码不会改变。软件包版本控制政策的第 2 点不适用:

  1. Otherwise, if only new bindings, types, classes or modules (but see below) were added to the interface, then A.B may remain the same but the new C must be greater than the old C.


一个基本原则是:

A.B.C uniquely identifies the API.



您没有添加任何内容或更改任何导出的内容,因此您不需要从 0.1.0 更改主要次要编号,但应该更改最后一部分: 0.1.0.1 是正确的。

关于Haskell 包版本控制策略 - 依赖项的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com