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).
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 async
como dependência?
fonte
Respostas:
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.
fonte
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.
fonte