จะทราบเวอร์ชั่นของแพ็คเกจที่ต้องใช้ในแพ็คเกจของคุณได้อย่างไร?


9

ฉันมีแพ็กเกจสองสามอันในตอนนี้และในส่วน PackageRequires ฉันต้องการที่จะนำแพคเกจทั้งหมดที่ฉันต้องการมาใส่ดูเหมือนว่ามันต้องใช้ชื่อและเวอร์ชัน คุณจะกำหนดหมายเลขรุ่นที่ไหน? ตัวอย่างเช่นฉันมี (cl-lib "0.5") แต่อะไรคือวิธีที่ดีที่สุดในการกำหนดเวอร์ชันขั้นต่ำที่ฉันสามารถใช้ได้ ฉันสามารถดูเวอร์ชันปัจจุบันได้ แต่วิธีที่ดีที่สุดในการกำหนดค่าต่ำสุดคืออะไร นอกจากนี้แพคเกจบางอย่างที่จำเป็นไม่มีเวอร์ชันที่ระบุในไฟล์ ในกรณีเหล่านี้แนะนำอะไรบ้าง

คำตอบ:


7

ใช้เวอร์ชันที่คุณเขียนแพ็คเกจ นั่นคือพื้นฐานที่ปลอดภัยที่สุดที่คุณจะได้รับเว้นแต่คุณจะตรวจสอบทุกฟังก์ชั่นที่คุณใช้อย่างชัดเจน จากตรงนั้นคุณสามารถหวังได้ว่าผู้ดูแลแพคเกจนั้นจะไม่สามารถทำลายความเข้ากันได้แบบย้อนกลับอย่างเงียบ ๆ

สำหรับแพ็คเกจที่ไม่มีเลขเวอร์ชั่นฉันไม่ได้ใช้เลย หากผู้ดูแลไม่รบกวนการกำหนดเวอร์ชันที่เหมาะสมคุณจะไว้ใจพวกเขาในสิ่งอื่นได้อย่างไร


1

คำแนะนำของฉัน:

  • เริ่มด้วยฟังก์ชั่นตัวแปรมาโคร ฯลฯ ที่รหัสของคุณใช้จริง ถ้ามันใช้บางอย่างที่ถูกนำมาใช้ใน Emacs หรือไลบรารี่ของฟังก์ชั่นที่ได้รับมาให้เริ่มด้วยเวอร์ชันนั้นเป็นเวอร์ชั่นต่ำสุดของคุณ

  • รุ่นของฟังก์ชันที่คุณใช้อาจไม่ตรงกับรุ่นดั้งเดิมของฟังก์ชันเมื่อมีการเปิดตัวครั้งแรก อาจมีการเพิ่มอาร์กิวเมนต์เพิ่มเติม ตรวจสอบว่ามีความสำคัญกับการใช้งานเฉพาะของคุณหรือไม่ ถ้าไม่เช่นนั้นคุณสามารถละเว้นนี้ ถ้าใช่แสดงว่าเป็นรุ่นที่เก่าที่สุดที่รองรับโค้ดของคุณ

  • ทดสอบ. รับไลบรารี่รุ่นใดก็ได้ที่คุณอ้างว่าสนับสนุนเป็นอย่างต่ำและลองใช้

  • บางครั้งมีการเปลี่ยนแปลงเล็กน้อยในฟังก์ชันและรหัสของคุณไม่จำเป็นต้องมีรุ่นที่ใหม่กว่า แต่อาจต้องมีการปรับเปลี่ยนเพื่อรองรับมากกว่าหนึ่งรุ่น (ถ้านั่นคือสิ่งที่คุณต้องการ) คุณอาจต้องทดสอบว่าฟังก์ชั่นนั้นมีอยู่ ( fboundp) หรือมีลำดับลายเซ็น / การโทรที่ถูกต้อง สำหรับหลังsubr-arityสามารถช่วยในตัว แต่คุณอาจต้องใช้condition-caseสำหรับฟังก์ชั่น Lisp (การโทรด้วยจำนวนของส่วนขยายที่เพิ่มขึ้นและการจัดการข้อผิดพลาดจำนวนครั้งที่ผิดพลาดโดยการเรียกด้วย args ที่น้อยลง)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.