Considerações técnicas para os mantenedores de pacotes não usarem o gerenciador de pacotes Emacs?

10

Percebo que alguns mantenedores de pacotes notáveis ​​estão optando por não usar o sistema de gerenciamento de pacotes Emacs (ESS?) Ou reclamando de suas limitações (Helm).

Citando Helm 's README.md :

AVISO : Devido a um conceito ruim do package.el, que é responsável por buscar os arquivos de leme e compilá-los, os usuários tinham erros na maioria das vezes ao atualizar do melpa e do list-package. Para evitar isso, o Async foi adicionado como dependência ao helm para forçar o package.el a compilar seus arquivos em um ambiente limpo. As pessoas que instalam a partir do git e usam o arquivo make não sofrem com esse problema e não precisam do Async, embora seja recomendado, pois corrige a instalação de todos os outros pacotes que você pode instalar com o package.el da (m) elpa. Veja FAQ para mais informações.

Quais são as limitações técnicas exatas que o atual sistema de gerenciamento de pacotes tem que elas podem estar fazendo alusão e por que os pacotes precisariam usar asynccomo dependência?

Amelio Vazquez-Reina
fonte
11
Esta questão deve ser fechada como muito ampla para este site, eu acho. É mais voltado para um fórum de discussão. Tente [email protected] ou [email protected] ou Emacs reddit ou algo parecido. " Qual é exatamente o problema? " Pressupõe que exista um desses problemas e perguntar quais são os possíveis problemas para qualquer pacote (ou qualquer mantenedor de pacotes) é muito amplo.
Tirou
2
O ESS está hospedado em Melpa: melpa.org/#/ess , talvez seja apenas uma coisa de documentação. Conheço muitos projetos, que normalmente são instaláveis ​​por meio de um gerenciador de pacotes do sistema, mas optamos por não mencionar essa opção sem nenhum motivo real (talvez supondo que, se você fez o download das fontes / binários do site, deve ter um razão para fazê-lo). Não sei que problema Helm teve.
wvxvw
Seu título parece um pouco estranho para mim. Você quis escrever "gerentes" duas vezes ou quis dizer mantenedores?
Malabarba
11
Ao escrever como desenvolvedor de ESS, deixe-nos saber como podemos melhorar os assuntos - como outros comentaram, o ESS está no MELPA.
Stephen Eglen

Respostas:

19

O problema a que você está se referindo é provavelmente que, quando você atualiza um pacote de dentro de uma sessão do Emacs em que esse pacote já está em uso, a versão antiga do pacote às vezes interfere durante a compilação da nova versão, levando a arquivos mal compilados.

Existe uma solução provisória para isso no Emacs-25, mas no AFAIK o problema ainda está presente em 24.5.

Stefan
fonte
9

Com a exceção notável do ProofGeneral, não conheço nenhum pacote importante do Emacs que não esteja disponível em alguns arquivos ELPA. Especificamente, o ESS está no MELPA há três anos . E PG é uma história por si só, e definitivamente não é representativa para todo o ecossistema do Emacs.

O ELPA certamente tem suas falhas, mas para a grande maioria dos pacotes funciona muito bem, mesmo para grandes como o Magit. Helm é o único pacote que vejo reclamando do ELPA. Não tenho certeza do que exatamente eles se queixam, mas acho que é sobre compilação:

Durante as atualizações, o Emacs compila a nova versão do pacote em um ambiente em que a versão antiga ainda está carregada. Normalmente, isso não causa nenhum dano, mas pode quebrar macros em determinadas situações. O Emacs compilará a nova versão com relação à implementação antiga da macro, o que pode causar falhas se o novo código depender de uma alteração específica nessa macro.

Sendo um mantenedor de pacotes, eu discordo dessa afirmação. Costumo culpar Helm ao invés de ELPA ou Emacs. Na minha opinião, a afirmação é hipérbole e o problema, mas um sintoma de usar macros em excesso e em excesso.

Se você usa muitas macros e, ainda pior, coloca código não trivial no corpo das macros, simplesmente precisa estar ciente das implicações que isso tem para a compilação de bytes e você deve ter cuidado para manter a compatibilidade com suas próprias macros. dentro do seu pacote. Não fazer isso e, em vez disso, passar a culpa, não é uma coisa muito agradável de se fazer. Meus 2 centavos.

lunaryorn
fonte
2
FWIW, eu discordo de sua discordância: embora eu concorde que é melhor tentar evitar o uso excessivo de macros, os problemas de compilação são reais e podem afetar mais do que chamadas de macro (por exemplo, eles podem ser acionados também por funções inlináveis ​​ou por funções chamadas durante a expansão macro). E quando você é mordido por esse problema, seus arquivos .elc estão incorretos e podem se comportar de várias maneiras interessantes, por isso pode ser difícil diagnosticar o problema e corrigi-lo requer desinstalar + reinstalar o pacote (depois de concluir o problema e quais as necessidades pacote a ser reinstalado.
Stefan
11
@ Stefan Não nego os problemas de compilação. Eu fui mordido. Mas não gosto da atitude que brilha nessa declaração e da falta do que eu chamaria de "ponto de vista equilibrado". Helm é mordido tão mal porque eles também cometeram muitos erros, mas a declaração deles não reconhece isso. Na minha humilde opinião, chamar funções no corpo macro é um erro. As macros são apenas para sintaxe, mas nunca para funcionalidade. Mas entendo que esse parece ser um assunto sobre o qual a comunidade do Emacs Lisp tem muitas opiniões diferentes.
lunaryorn
ropemacs , jdee-emacs e excorporate são pacotes notáveis ​​que não estão em nenhum arquivo ELPA (dependendo dos seus critérios para pacotes principais). A grande maioria dos pacotes é, no entanto.
Wilfred Hughes