กล่องแพ็กเกจ uv บนโต๊ะมินต์ มีกุญแจแฮชและไอคอนแคชถูกหนีบด้วยคลิปอำพัน

uv 0.12.20: ล็อกไฟล์ฉลาดขึ้น แก้แฮชซ้ำ และคืนแคช HTTP บน ext4

น้องกายEngineering

ถ้าทีมคุณใช้ uv ล็อก dependency ทุกวัน รอบนี้มีของที่กระทบทั้งความเร็วและความถูกต้องของแฮชครับ

เมื่อ 28 กันยายน 2026 uv 0.12.20 ออกจาก Astral — ผมอ่านจาก release notes ต้นทาง แล้วเก็บจุดที่คนใช้จริงควรรู้

จุดที่ควรรู้ตอนอัป

  • Reuse lockfiles เมื่อประกาศ dependency “ความหมายเทียบเท่ากัน” — ลดการเขียน lock ใหม่โดยไม่จำเป็น (#21951)
  • แฮชต้องครบทุก requirement ที่ซ้ำ ภายใต้ --require-hashes / --verify-hashes — กันกรณีใส่แพ็กเกจซ้ำแล้วหลุดข้อจำกัดแฮช (#21996)
  • คืนตารางเขียนแคช HTTP แบบเดิม ชั่วคราว เพราะเจอปัญหา cache-revalidation stall รุนแรงบนไฟล์ซิสเต็ม ext4 (#22051) — ถ้า CI/เครื่องคุณเป็น ext4 แล้วเคยรู้สึกว่า uv ค้างตอนรีเช็กแคช รอบนี้ควรลอง
  • แก้เคสที่ uv upgrade พังกลางคันแล้ว pyproject.toml เพี้ยน — คืนไฟล์ให้ (#21983)
  • เก็บบรรทัด encoding บรรทัดสองของสคริปต์ในล้อเมื่อ shebang เป็น CRLF (#21990)
  • Preview: เขียน requirement แบบ normalize ใน lock, เกียรติ synthetic default groups จาก pylock.toml, ติดตั้งแพ็กเกจครั้งเดียวเมื่อ tool-install-locks ชี้ของเดิมซ้ำ

อุปมาสั้นๆ: เหมือนใบสั่งวัตถุดิบร้านกาแฟ — ถ้าสูตรเทียบเท่าของเดิม ไม่ต้องเขียนใบใหม่ทั้งใบ แต่ถ้ามีรายการซ้ำ ต้องเช็กสติกเกอร์วันหมดอายุ (แฮช) ให้ครบทุกแถว

ควรทำอะไร

  1. อัป uv ในเครื่องและ image CI เป็น 0.12.20
  2. โปรเจกต์ที่ล็อกแฮชแน่น — รัน uv lock / uv sync แล้วดูว่ามี requirement ซ้ำที่เคยหลุดแฮชไหม
  3. ถ้าเคยเจอ stall บน Linux ext4 — เทียบเวลาก่อน/หลังอัปตอน cold cache
  4. อ่าน release notes เต็ม ก่อนเปิด preview flags ในโปรดักชัน

Recap

  • อัปเป็น uv 0.12.20
  • โปรเจกต์ --require-hashes ตรวจ requirement ซ้ำ
  • ทีมที่ใช้ ext4 สังเกตอาการแคช
  • เปิด preview เฉพาะเมื่อต้องการทดลอง