Como determinar a versão do pacote exigida no seu pacote?

9

Agora tenho alguns pacotes e, na seção PackageRequires, gostaria de colocar todos os pacotes necessários, mas parece que exige o nome e a versão. Onde você determina o número da versão? Por exemplo, eu tenho (cl-lib "0.5"), mas qual é a melhor maneira de determinar a versão mínima que posso usar? Posso ver a versão atual, mas qual é a melhor maneira de determinar o valor mínimo necessário? Além disso, alguns pacotes necessários não têm uma versão especificada em seus arquivos. Nesses casos, o que é recomendado?

user78810
fonte

Respostas:

7

Use a versão para a qual você escreveu o pacote. Essa é a linha de base mais segura que você pode obter, a menos que verifique explicitamente todas as funções que usa. A partir daí, você só pode esperar que os mantenedores desse pacote nunca quebrem silenciosamente a compatibilidade com versões anteriores ...

Quanto aos pacotes que não têm nenhum número de versão, eu não os usaria. Se o mantenedor nem se importa com o controle de versão adequado, como você pode confiar neles com mais alguma coisa?

lunaryorn
fonte
1

Minha recomendação:

  • Comece com as funções, variáveis, macros, etc. que seu código realmente usa. Se ele usa algo que foi introduzido em uma determinada versão do Emacs ou na biblioteca de fontes da função, comece com isso como sua versão mínima.

  • A versão da função que você usa pode não corresponder à versão original da função, quando foi introduzida pela primeira vez. Talvez mais argumentos foram adicionados. Verifique se isso é importante para seu uso específico. Caso contrário, você pode ignorar isso. Se sim, então encontre a versão de origem mais antiga que suporta o que seu código espera.

  • Teste. Obtenha, no mínimo, uma cópia da versão da biblioteca que você afirma apoiar, e tente.

  • Às vezes, pequenas alterações foram feitas em uma função e seu código não precisa fundamentalmente de uma versão mais recente. Mas pode ser necessário adaptar, para suportar mais de uma versão (se é isso que você deseja). Pode ser necessário testar se a função existe ( fboundp) ou possui a sequência de assinatura / chamada correta. Para o último, subr-aritypode ajudar com os built-ins, mas você pode precisar usar as condition-casefunções Lisp (chamando com o número expandido de args e lidando com um erro de número errado de args chamando com menos args).

Desenhou
fonte