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?


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 help-gnu-emacs@gnu.org ou emacs-devel@gnu.org 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.


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.