- PyPI จะบล็อกการอัปโหลดไฟล์ใหม่ไปยัง รีลีสที่เผยแพร่มาแล้วเกิน 14 วัน เพื่อไม่ให้รีลีสเดิมที่เสถียรถูกปนเปื้อน แม้โทเคนหรือเวิร์กโฟลว์สำหรับเผยแพร่จะถูกยึดครอง
- จนถึงตอนนี้ยังไม่พบกรณีถูกนำไปใช้โจมตีจริง แต่ก่อนหน้านี้ ไม่มีอุปสรรคทางเทคนิค ใด ๆ ที่จะหยุดการโจมตี นอกเหนือจากการที่ผู้โจมตีอาจไม่รู้ว่าทำได้
- จากการสำรวจแพ็กเกจ 15,000 อันดับแรก พบว่ามีเพียง 56 โปรเจกต์ที่เพิ่ม wheel
cp314สำหรับ Python 3.14 หลังรีลีสผ่านไป 14 วัน - โปรเจกต์ที่เคยเพิ่มการรองรับ Python เวอร์ชันใหม่เข้าไปในรีลีสเดิม ตอนนี้จะต้อง เผยแพร่เวอร์ชันถัดไป แทน และ PyCon US 2026 Packaging Summit ก็เห็นว่าแนวทางนี้ยอมรับได้
- เนื่องจากยังไม่มี API สำหรับกำหนดหรือตรวจสอบสถานะเปิด/ปิดของรีลีส จึงไม่ควรพึ่งพาพฤติกรรมนี้ และในอนาคต PEP 694 จะกำหนดความหมายที่เกี่ยวข้องผ่าน Upload 2.0 API และ Staged Previews
เหตุผลที่ปิดรีลีสเก่า
- การเปลี่ยนแปลงของ PyPI จะปิดเส้นทางการอัปโหลดไฟล์ใหม่ไปยังรีลีสเก่าที่เสถียรแล้ว
- ป้องกันสถานการณ์ที่ไฟล์บางส่วนในรีลีสเดิมถูกแทนที่ด้วยไฟล์อันตราย แม้โทเคนเผยแพร่หรือเวิร์กโฟลว์ของโปรเจกต์จะถูกเจาะ
- ลดสภาพคลุมเครือที่มีทั้งไฟล์ที่ถูกเจาะและไม่ถูกเจาะปะปนอยู่ในรีลีสเดียวกัน และลดงานเก็บกวาดของผู้ดูแล PyPI
- การหารือเริ่มขึ้นใน เดือนมกราคม 2024 ระหว่างงาน PEP 740 Digital Attestations และ กลับมาหารืออีกครั้งในเดือนมีนาคม 2026
- จุดกระตุ้นคือ เหตุการณ์ซัพพลายเชนของ LiteLLM และ Telnyx ถูกเจาะ โดยมีสาเหตุจาก mutable reference ใน Trivy GitHub Action ที่ทั้งสองโปรเจกต์ใช้
- การหารือช่วงแรกหยุดลง เพราะบางโปรเจกต์ยังเพิ่มไฟล์รองรับ Python เวอร์ชันใหม่เข้าไปในรีลีสที่เผยแพร่ไปแล้ว
- เพื่อประเมินผลกระทบของการเปลี่ยนแปลง จึงสำรวจจากฐานข้อมูล PyPI ว่า โปรเจกต์ใดเพิ่มไฟล์เข้าไปในรีลีสเก่า โดยแยกตามจำนวนวันที่ผ่านไป
- เมื่อตรวจสอบ wheel
cp314ของแพ็กเกจ 15,000 อันดับแรกแยกต่างหาก พบว่า มี 56 โปรเจกต์ที่เผยแพร่ wheel ที่รองรับ Python 3.14 หลังผ่านไป 14 วัน
การตัดสินใจบังคับใช้และ API ในอนาคต
- ที่ PyCon US 2026 Packaging Summit เกิดฉันทามติคร่าว ๆ ว่า เมื่อจะรองรับ Python เวอร์ชันใหม่ การบังคับให้เพิ่มเป็นเวอร์ชันถัดไปถือว่ายอมรับได้
- จากข้อมูลการสำรวจและฉันทามติดังกล่าว จึงเดินหน้า แพตช์ Warehouse และถูก merge เมื่อวันที่ 8 กรกฎาคม 2026
- ข้อจำกัดในปัจจุบันยังไม่อาจถือเป็นอินเทอร์เฟซที่เสถียรได้
- ยังไม่ได้กำหนดนิยามของ “รีลีสที่ไม่รับไฟล์ใหม่อีกต่อไป” อย่างชัดเจน และยังไม่มี API สำหรับตรวจสอบสถานะ
- หลังจาก PEP 694 ทำให้ Upload 2.0 API และ Staged Previews เป็นมาตรฐานแล้ว จะมีการกำหนดความหมายสำหรับจัดการรีลีสในสถานะ
openหรือclosed
1 ความคิดเห็น
ความคิดเห็นจาก Lobste.rs