パッケージメンテナーがEmacsパッケージマネージャーを使用しないようにするための技術的な考慮事項?


10

著名なパッケージメンテナーがEmacsパッケージ管理システム(ESS?)を使用しないことを選択している、またはその制限(Helm)に不満を持っていることに気付いています。

HelmREADME.mdからの引用:

警告:helmファイルのフェッチとコンパイルを担当するpackage.elの悪い概念が原因で、melpaおよびlist-packageからのアップグレード時に、ユーザーはほとんどの場合エラーを抱えていました。これを回避するために、package.elがクリーンな環境でファイルをコンパイルするように、helmへの依存関係として非同期が追加されました。(m)elpaのpackage.elでインストールできる他のすべてのパッケージのインストールを修正するために推奨されますが、gitからインストールしてmakeファイルを使用する人はこの問題に悩まされることはなく、非同期も必要ありません。詳細については、FAQを参照してください。

現在のパッケージ管理システムには、それが示唆している正確な技術的制限があり、パッケージがasync依存関係として使用する必要があるのはなぜですか?


1
この質問はこのサイトには広すぎるので締めくくるべきだと思います。ディスカッションフォーラムを目的としています。help-gnu-emacs@gnu.orgまたはemacs-devel@gnu.orgまたはEmacs redditなどを試してください。「正確に何が問題なのか?」は、そのような問題が1つあると想定し、パッケージ(またはパッケージメンテナ)に起こりうる問題を尋ねるのは広すぎます。
ドリュー

2
ESSはMelpaでホストされています:melpa.org / # / ess、おそらくそれは単なるドキュメントです。私は多くのプロジェクトを知っていますが、それらは通常システムパッケージマネージャーを介してインストールできますが、実際の理由なしにそのオプションについて言及しないことを選択します(おそらく、サイトからソース/バイナリをダウンロードするまで行った場合、それを行う理由)。Helmがどんな問題を抱えていたかはわかりません。
wvxvw

あなたのタイトルは私には少し奇妙に読みます。「マネージャー」を2回書くということですか、それともメンテナーということですか?
マラバルバ2015

1
ESS開発者として執筆している場合は、問題を改善する方法を教えてください。他の人がコメントしたように、ESSはMELPAにあります。
Stephen Eglen

回答:


19

あなたが言及している問題は、おそらく、そのパッケージがすでに使用されているEmacsセッション内からパッケージをアップグレードするときに、古いバージョンのパッケージが新しいバージョンのコンパイル中に干渉し、誤ってコンパイルされたファイルにつながることです。

Emacs-25には暫定的な修正がありますが、問題は24.5でもまだ存在しています。


9

ProofGeneralの注目すべき例外を除いて、一部のELPAアーカイブで利用できない主要なEmacsパッケージについては知りません。具体的には、ESSは3年から MELPAを利用しています。そしてPGはそれ自体がストーリーであり、Emacsエコシステム全体を代表するものではありません。

ELPAには確かに欠陥がありますが、大多数のパッケージでは、Magitなどの大規模なパッケージでも問題なく動作します。Helmは、ELPAについて不満を感じている唯一のパッケージです。彼らが不平を言うのは正確にはわかりませんが、コンパイルに関するものだと思います。

アップグレード中、Emacsは古いバージョンがまだロードされている環境でパッケージの新しいバージョンをコンパイルします。通常、これはまったく害を及ぼしませんが、特定の状況でマクロを壊す可能性があります。Emacsは、マクロの古い実装に対して新しいバージョンをコンパイルします。これは、新しいコードがそのマクロの特定の変更に依存している場合、破損を引き起こす可能性があります。

私自身もパッケージのメンテナーなので、私はこの声明にかなり反対します。ELPAやEmacsではなくHelmを非難する傾向があります。私の意見では、ステートメントは誇大広告であり、問​​題はマクロの過剰使用と過剰使用の症状です。

多数のマクロを使用し、さらに悪いことに、マクロの本体に重要なコードを挿入する場合、これがバイトコンパイルに与える影響に注意し、独自のマクロとの下位互換性を維持するように注意する必要があります。パッケージ内。そうしないで、代わりに非難を渡すことは、行うのにあまり良いことではありません。私の2セント。


2
FWIW、私はあなたの意見の相違に同意しません:マクロの過剰使用を回避する方が良いことに同意しますが、コンパイルの問題は現実的であり、マクロ呼び出し以外にも影響を与える可能性があります(たとえば、影響は、インライン関数や呼び出された関数によっても引き起こされます)マクロ展開中)。そして、この問題に悩まされた場合、.elcファイルは正しくなく、あらゆる種類の興味深い方法で誤動作する可能性があるため、問題を診断することが困難になる可能性があり、修正するには、パッケージをアンインストール+再インストールする必要があります(問題とどのパッケージを再インストールする必要があるか
Stefan

1
@Stefanコンパイルの問題は否定しません。噛まれた。しかし、私はこの発言を通して輝く態度、および私が「バランスのとれた視点」と呼ぶものの欠如を嫌っています。Helmは、彼らの側でも多くのミスを犯したため、そのように悪く噛まれますが、彼らの発言はそれを認めていません。私の控えめな意見では、マクロ本体で関数を呼び出すことはそのような間違いです。マクロは構文専用ですが、機能用ではありません。しかし、私はこれがEmacs Lispコミュニティが多くの異なる意見を持っている主題であるように思われることを理解しています。
lunaryorn

ropemacsjdee-emacsexcorporateは、ELPAアーカイブに含まれていない注目すべきパッケージです(メジャーパッケージの基準によって異なります)。ただし、パッケージの大部分はそうです。
Wilfred Hughes
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.