假设我已经开发了一个haskell库,现在准备发布该软件的测试版,以便在github等平台上hackage/make repo public。
可能的解决方案和为什么它们不适合我
- 使用
packagename-0.0.0.1-alpha
或类似。
这里的问题很简单:Haskell PVP规范不允许它:(粗体是我)
版本号的组成部分必须是数字! 历史上Cabal支持的版本号末尾有字符串标记,例如1.0-beta。事实证明,这并不能很好地工作,因为标签的顺序没有很好地定义。版本标记不再被支持,大部分被忽略,但是有些工具会失败在某些情况下,如果他们遇到他们。
- 只是使用
packagename-0.*
,直到它是alpha/beta(然后使用packagename-1.*
)。
这里有两个问题:- 此方法不适用于描述候选版本
- 来自其他生态系统的程序员,比如rust,在
0.*
中通常有一个稳定的库,可能会错误地认为这个库是稳定的。(当然,这可以通过在README中发出警告来减轻,但我更喜欢更好的解决方案。)
那么,指示库版本处于alpha/beta开发阶段或发布候选版本的最佳(也是haskell中最常规的)方法是什么呢?
据我所知,没有一个包范围的方式来说明这一点。但是,您可以在每个模块的文档中添加描述模块稳定性的模块描述。
{-|
Stability: experimental
-}
module PackageName.ModuleName where