ประกาศยุคเสรีของ Threads — การตัดสินใจของ Python Steering Council
(discuss.python.org)ด้วยความพยายามของ นาดงฮี ตอนนี้ free-threading ได้หลุดพ้นจากป้ายกำกับแบบทดลองและจะได้รับการรองรับอย่างเป็นทางการแล้ว
Python Steering Council (SC) ได้อนุมัติ PEP 779 เพื่อ ถอดแท็ก “experimental” ออกจากบิลด์ free-threaded ของ Python 3.14 โดยการตัดสินใจนี้มาพร้อมเงื่อนไขว่าต้องบรรลุภารกิจต่อไปนี้ในช่วง Phase II
-
ความเข้ากันได้ของ C API/ABI และการจัดทำ Stable C API
- การเปลี่ยนแปลงใด ๆ ที่ทำลายความเข้ากันได้ของ API/ABI เดิม ต้องได้รับความเห็นพ้องล่วงหน้าจาก C API Working Group
- ภายใน Python 3.15 ต้องนิยามและจัดเตรียม Stable C API สำหรับ free-threading โดยเฉพาะ
-
เกณฑ์สำหรับโครงการทดลองใหม่
- โครงการทดลองใหม่ภายใน CPython ต้องเข้ากันได้กับบิลด์ free-threading และพัฒนาโดยยึดสิ่งนี้เป็นพื้นฐาน
- ลดความซับซ้อนจากการต้องดูแล GIL และ free-threading ควบคู่กันให้น้อยที่สุด
-
รั้วกันตกด้านประสิทธิภาพและหน่วยความจำ
- เป้าหมาย: ประสิทธิภาพลดลงไม่เกิน 10% เมื่อเทียบกับบิลด์ GIL
- หากประสิทธิภาพลดลงได้สูงสุด 15% / หน่วยความจำเพิ่มขึ้น 15% จะต้องได้รับความเห็นชอบล่วงหน้าจาก SC (เพดานหน่วยความจำสูงสุด 20%)
-
ข้อกำหนดด้านเอกสาร
- ผู้ใช้ Python: ต้องชี้แจงการรับประกันของ API ในไลบรารีมาตรฐานและการเปลี่ยนแปลงให้ชัดเจน
- นักพัฒนา Python·C API: ต้องมีเอกสารอธิบายการรับประกันด้าน concurrency เช่น signal และ thread safety
- นักพัฒนา CPython: ต้องมีเอกสารเกี่ยวกับข้อควรพิจารณาในการ implement
- ต้องมีหน้า landing page ทางการสำหรับ ‘free-threading’ ที่รวบรวมข้อมูลทั้งหมด
-
การเตรียม primitive สำหรับ concurrency ระดับสูง
- โดยมีแพ็กเกจ
concurrentเป็นศูนย์กลาง ให้มีการเสนอและทบทวนเครื่องมือ concurrency ระดับสูงที่ผู้ใช้สามารถใช้งานได้โดยไม่ต้องรู้รายละเอียดการทำงานภายใน
- โดยมีแพ็กเกจ
-
ข้อกำหนดด้าน benchmark
- ต้องตรวจสอบคำกล่าวอ้างด้านประสิทธิภาพ หน่วยความจำ และความถูกต้องด้วยการทดสอบที่ทำซ้ำได้บนพื้นฐานของ
pyperformance - สนับสนุนการมีส่วนร่วมเพิ่มเติมใน benchmark ที่สะท้อนเวิร์กโหลดจริง
- ต้องตรวจสอบคำกล่าวอ้างด้านประสิทธิภาพ หน่วยความจำ และความถูกต้องด้วยการทดสอบที่ทำซ้ำได้บนพื้นฐานของ
SC แสดงความเชื่อมั่นต่อความคืบหน้าของโครงการ และแนะนำให้ ชุมชน Python ช่วยประชาสัมพันธ์บิลด์ free-threading อย่างจริงจังในฐานะตัวเลือกที่รองรับอย่างเป็นทางการ โดยใน 3.14 beta 3 จะมีการถอดแท็ก “experimental” อย่างเป็นทางการ และประเด็นเรื่อง Phase III (เปลี่ยน free-threading ให้เป็นบิลด์ค่าเริ่มต้นหรือบิลด์เดียว) จะมีการหารือต่อไปในภายหลัง
3 ความคิดเห็น
ทรงพระเจริญแด่ความเป็นอิสระของเธรด!
เย่!
ว้าว...!