Paketinizde gereken paket sürümünü nasıl belirlersiniz?


9

Şimdi birkaç paketim var ve PackageRequires bölümünde ihtiyacım olan tüm paketleri koymak istiyorum, koymak adı ve sürümü gerektirir gibi koymak. Sürüm numarasını nerede belirliyorsunuz? Örneğin (cl-lib "0.5") var, ancak kullanabileceğim minimum sürümü belirlemenin en iyi yolu nedir? Mevcut sürümü görebiliyorum, ancak gereken min değerini belirlemenin en iyi yolu nedir? Ayrıca, gereken bazı paketlerin dosyalarında belirtilen bir sürümü yoktur. Bu durumlarda ne önerilir?

Yanıtlar:


7

Paketi yazdığınız sürümü kullanın. Kullandığınız her işlevi açıkça kontrol etmediğiniz sürece, alabileceğiniz en güvenli başlangıç ​​noktasıdır. Bundan sonra, yalnızca bu paketin koruyucusunun asla sessizce geriye dönük uyumluluğu bozmadığını umabilirsiniz ...

Herhangi bir sürüm numarası bile olmayan paketlere gelince, onları hiç kullanmam. Eğer bakıcı uygun versiyonlama için bile uğraşmazsa, onlara başka bir şeyle nasıl güvenebilirsiniz?


1

Benim tavsiyem:

  • Kodunuzun gerçekten kullandığı işlevler, değişkenler, makrolar vb. İle başlayın. Emacs'ın veya işlevin kaynak kütüphanesinin belirli bir sürümünde tanıtılan bir şey kullanıyorsa, bununla minimum sürümünüz olarak başlayın.

  • Kullandığınız işlevin sürümü, ilk tanıtıldığında işlevin orijinal sürümüne karşılık gelmeyebilir. Belki daha fazla argüman eklenmiştir. Bunun kullanımınız için önemli olup olmadığını kontrol edin. Değilse, bunu göz ardı edebilirsiniz. Evetse, kodunuzun beklediğini destekleyen en eski kaynak sürümü bulur.

  • Ölçek. En az desteklediğinizi iddia ettiğiniz kitaplığın hangi sürümünün bir kopyasını alın ve deneyin.

  • Bazen bir işlevde küçük değişiklikler yapılmıştır ve kodunuzun temelde daha yeni bir sürüme ihtiyacı yoktur. Ancak, birden fazla sürümü desteklemek için uyarlanması gerekebilir (eğer istediğiniz buysa). İşlevin var olup olmadığını ( fboundp) veya doğru imza / arama sırasına sahip olup olmadığını test etmeniz gerekebilir . İkincisi için, subr-arityyerleşiklere yardımcı olabilir, ancak condition-caseLisp işlevleri için (daha fazla argümanla çağırma ve daha az argümanla arayarak yanlış sayıda argüman hatası işleme) için kullanmanız gerekebilir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.