如何确定包装中需要的包装版本?


9

我现在有几个软件包,在PackageRequires部分中,我想将我需要的所有软件包放入其中,好像它需要名称和版本。您在哪里确定版本号?例如,我有(cl-lib“ 0.5”),但是确定我可以使用的最低版本的最佳方法是什么?我可以看到当前版本,但是确定所需最小值的最佳方法是什么?另外,某些必需的软件包在其文件中未指定版本。在这些情况下,建议什么?

Answers:


7

使用您为其编写软件包的版本。这是您可以获得的最安全的基准,除非您明确检查使用的每个功能。从那以后,您只能希望该程序包的维护者永远不会默默地破坏向后兼容性……

至于甚至没有任何版本号的软件包,我根本不会使用它们。如果维护者甚至不介意进行正确的版本控制,您又如何可以信任他们呢?


1

我的建议:

  • 从代码实际使用的函数,变量,宏等开始。如果它使用Emacs的给定版本或函数的源库中引入的内容,则以该版本作为最低版本开始。

  • 首次引入时,您使用的功能版本可能与该功能的原始版本不符。也许增加了更多的论点。检查这对您的特定用途是否重要。如果不是,那么您可以忽略此。如果是,则找到支持您的代码期望的最旧的源版本。

  • 测试。至少获取您声称支持的任何版本的库的副本,然后尝试。

  • 有时,对函数进行了较小的更改,并且您的代码从根本上不需要更新的版本。但是可能需要对其进行修改,以支持多个版本(如果您要这样做的话)。您可能需要测试该功能是否存在(fboundp)或具有正确的签名/调用顺序。对于后者,subr-arity可以帮助实现内置功能,但您可能需要使用condition-caseLisp函数(以扩展数量的args进行调用,并通过以更少的args进行调用来处理错误数目的args错误)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.