Considérations techniques pour les mainteneurs de packages de ne pas utiliser le gestionnaire de packages Emacs?


10

Je remarque que certains mainteneurs de packages notables choisissent de ne pas utiliser le système de gestion de packages Emacs (ESS?) Ou se plaignent de ses limites (Helm).

Citant de Helm 's README.md :

AVERTISSEMENT : en raison d'un mauvais concept de package.el qui est chargé de récupérer les fichiers de barre et de les compiler, les utilisateurs ont la plupart du temps des erreurs lors de la mise à niveau de melpa et list-package. Pour éviter cela, Async a été ajouté en tant que dépendance à helm pour forcer package.el à compiler ses fichiers dans un environnement propre. Les personnes installant à partir de git et utilisant le fichier make ne souffriront pas de ce problème et n'ont pas besoin d'Async bien qu'il soit recommandé car il corrige l'installation de tous les autres packages que vous pouvez installer avec package.el de (m) elpa. Voir FAQ pour plus d'infos.

À quelles limitations techniques précises le système de gestion de packages actuel pourrait-il faire allusion, et pourquoi les packages devraient-ils être utilisés asynccomme dépendance?


1
Cette question devrait être fermée car trop large pour ce site, je pense. Il vaut mieux viser un forum de discussion. Essayez help-gnu-emacs@gnu.org ou emacs-devel@gnu.org ou Emacs reddit ou quelque chose du genre. " Quel est le problème exactement? " Suppose qu'il existe un de ces problèmes et demander quels sont les problèmes possibles pour tout package (ou tout responsable de package) est trop large.
Drew

2
ESS est hébergé sur Melpa: melpa.org/#/ess , c'est peut-être juste une chose de documentation. Je connais de nombreux projets, qui sont généralement installables via un gestionnaire de packages système, mais choisissez de ne pas mentionner cette option sans raison réelle (en supposant peut-être que si vous êtes allé jusqu'à télécharger les sources / binaires à partir du site, vous devez avoir un raison de le faire). Je ne sais pas quel problème Helm avait.
wvxvw

Votre titre me semble un peu étrange. Vouliez-vous écrire deux fois «gestionnaires», ou vouliez-vous dire mainteneurs?
Malabarba

1
En tant que développeur ESS, écrivez-nous comment nous pouvons améliorer les choses - comme d'autres l'ont commenté, ESS est dans MELPA.
Stephen Eglen

Réponses:


19

Le problème auquel vous faites référence est probablement que lorsque vous mettez à niveau un package à partir d'une session Emacs où ce package est déjà utilisé, l'ancienne version du package interfère parfois lors de la compilation de la nouvelle version, ce qui entraîne des fichiers mal compilés.

Il y a une solution provisoire pour cela dans Emacs-25, mais AFAIK le problème est toujours présent dans 24.5.


9

À l'exception notable de ProofGeneral, je ne connais aucun package Emacs majeur qui n'est pas disponible dans certaines archives ELPA. Plus précisément, ESS est sur MELPA depuis trois ans . Et PG est une histoire à part entière, et certainement pas représentative de l'ensemble de l'écosystème Emacs.

ELPA a certainement ses défauts, mais pour la grande majorité des packages, il fonctionne très bien, même pour les plus gros comme Magit. Helm est le seul paquet que je vois se plaindre de l'ELPA. Je ne sais pas exactement de quoi ils se plaignent, mais je suppose que cela concerne la compilation:

Pendant les mises à niveau, Emacs compile la nouvelle version du package dans un environnement où l'ancienne version est toujours chargée. Normalement, cela ne fait aucun mal, mais cela peut casser des macros dans certaines situations. Emacs compilera la nouvelle version par rapport à l' ancienne implémentation de la macro, ce qui peut provoquer une rupture si le nouveau code s'appuie sur une modification spécifique de cette macro.

Étant moi-même un responsable du package, je suis en désaccord avec cette affirmation. J'ai tendance à blâmer Helm plutôt que ELPA ou Emacs. À mon avis, l'énoncé est une hyperbole et le problème n'est qu'un symptôme de la surutilisation et de l'utilisation abusive des macros.

Si vous utilisez beaucoup de macros et - pire encore - mettez du code non trivial dans le corps des macros, vous devez simplement être conscient des implications que cela a pour la compilation d'octets et vous devez faire attention à maintenir la compatibilité descendante avec vos propres macros dans votre colis. Ne pas le faire, et plutôt rejeter la faute, n'est pas une très bonne chose à faire. Mes 2 cents.


2
FWIW, je suis en désaccord avec votre désaccord: bien que je convienne qu'il est préférable d'essayer d'éviter la surutilisation des macros, les problèmes de compilation sont réels et peuvent affecter plus que les appels de macro (par exemple, ils peuvent être déclenchés par des fonctions inlinables également, ou par des fonctions appelées pendant la macro-expansion). Et lorsque vous êtes mordu par ce problème, vos fichiers .elc sont incorrects et peuvent mal se comporter de toutes sortes de façons intéressantes, il peut donc être difficile de diagnostiquer le problème, et le corriger nécessite la désinstallation + réinstallation du package (une fois que vous avez compris le problème et quel paquet doit être réinstallé.
Stefan

1
@Stefan Je ne nie pas les problèmes de compilation. Je me suis mordu. Mais je n'aime pas l'attitude qui transparaît dans cette déclaration et l'absence de ce que j'appellerais un "point de vue équilibré". Helm se fait mordre à ce point parce qu'ils ont également fait beaucoup d'erreurs de leur côté, mais leur déclaration ne le reconnaît pas. À mon humble avis, appeler des fonctions dans un corps macro est une telle erreur. Les macros sont uniquement pour la syntaxe, mais jamais pour la fonctionnalité. Mais je comprends que cela semble être un sujet sur lequel la communauté Emacs Lisp a de nombreuses opinions différentes.
lunaryorn

ropemacs , jdee-emacs et excorporate sont des packages notables qui ne figurent dans aucune archive ELPA (selon vos critères pour les packages majeurs). Cependant, la grande majorité des packages le sont.
Wilfred Hughes
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.