แผนการพัฒนา Python 3.14: การย้ายจาก C มาเป็น Python และการผสานรวม HPy สร้างความสนใจในชุมชนนักพัฒนา

ทีมบรรณาธิการ BigGo
แผนการพัฒนา Python 3.14: การย้ายจาก C มาเป็น Python และการผสานรวม HPy สร้างความสนใจในชุมชนนักพัฒนา

ชุมชนนักพัฒนา Python กำลังให้ความสนใจเป็นพิเศษกับการเปลี่ยนแปลงสำคัญสองประการที่วางแผนไว้สำหรับ Python 3.14 ได้แก่ การย้ายฟังก์ชันที่เขียนด้วยภาษา C มาเป็น Python และความเป็นไปได้ในการนำ HPy-like C API มาใช้ การเปลี่ยนแปลงเหล่านี้ตามที่ระบุไว้ในแผนงานที่เพิ่งเผยแพร่โดยทีม Faster CPython กำลังสร้างการถกเถียงในหมู่นักพัฒนาเกี่ยวกับผลกระทบต่อประสิทธิภาพและความเข้ากันได้

การเขียนฟังก์ชัน C ใหม่ด้วย Python

หนึ่งในการเปลี่ยนแปลงที่โดดเด่นที่สุดที่วางแผนไว้สำหรับ Python 3.14 คือการเปลี่ยนฟังก์ชัน built-in หลายตัวจากการใช้ C มาเป็น Python ซึ่งรวมถึงฟังก์ชันที่ใช้งานบ่อย เช่น any, all และ enumerate แม้ว่าอาจดูเหมือนขัดแย้งกับหลักการด้านประสิทธิภาพ แต่การเปลี่ยนแปลงนี้มีจุดมุ่งหมายเพื่อปรับปรุงความสามารถในการ optimize โค้ด ตามที่ระบุในแผนงานของทีม Faster CPython การเปลี่ยนแปลงนี้จะช่วยให้ตัว optimizer สามารถมองเห็นข้ามขอบเขตการเรียกฟังก์ชัน ซึ่งอาจนำไปสู่โอกาสในการ optimize ที่ดีขึ้น

การผสานรวม HPy ในอนาคต

มองไปข้างหน้าถึง Python 3.15 ทีมพัฒนากำลังพิจารณาการนำ HPy-like C API มาใช้ การเปลี่ยนแปลงนี้มีความสำคัญอย่างยิ่งเนื่องจากเชื่อมโยงกับการใช้งาน tagged integer references ซึ่งสามารถปรับปรุงประสิทธิภาพการใช้หน่วยความจำและประสิทธิภาพการทำงานกับตัวเลขจำนวนเต็มได้อย่างมาก API ใหม่นี้จะถูกใช้ภายในระบบก่อน แต่คาดว่าเครื่องมือต่างๆ เช่น Cython และ Pybind11 จะนำไปใช้เพื่อข้ามขั้นตอนที่ต้องใช้ PyObject* based API แบบดั้งเดิม

การปรับปรุงประสิทธิภาพ

การเปลี่ยนแปลงที่วางแผนไว้เป็นส่วนหนึ่งของการริเริ่มที่มุ่งเน้นประสิทธิภาพในวงกว้าง ซึ่งรวมถึง:

  • เพิ่มความสามารถของ JIT compiler ด้วยการสร้างและ optimize โค้ดที่ดีขึ้น
  • กลไกการนับอ้างอิงที่มีประสิทธิภาพมากขึ้น
  • การจัดการ garbage collection แบบวงจรที่ดีขึ้น
  • การ optimize การดำเนินการทางคณิตศาสตร์ที่สามารถขยายได้

Subinterpreters และการประมวลผลแบบขนาน

แผนงานยังรวมถึงการพัฒนาที่สำคัญเกี่ยวกับ subinterpreters โดยมีแผนที่จะพัฒนา interpreter pool executor ที่คล้ายกับ thread และ process pool executors ที่มีอยู่ การพัฒนานี้อาจสร้างโอกาสใหม่ๆ สำหรับการประมวลผลแบบขนานในแอปพลิเคชัน Python แม้ว่าจากการอภิปรายในชุมชนจะบ่งชี้ว่าการนำไปใช้โดย web servers และตัวประมวลผลงานเบื้องหลังยังอยู่ในขั้นตอนเริ่มต้น

การเปลี่ยนแปลงเหล่านี้แสดงถึงการเปลี่ยนแปลงที่สำคัญในสถาปัตยกรรมภายในของ Python ซึ่งมีศักยภาพในการมอบประสิทธิภาพที่ดีขึ้นในขณะที่ยังคงรักษาความง่ายในการเข้าถึงและใช้งาน Python การย้ายจาก C มาเป็น Python สำหรับฟังก์ชันบางตัวโดยเฉพาะ แสดงให้เห็นถึงการเคลื่อนไหวเชิงกลยุทธ์ที่มุ่งใช้ประโยชน์จากความสามารถในการ optimize ของตัวภาษาเอง แทนที่จะพึ่งพาเพียงการใช้งาน C เท่านั้น

อ้างอิง: Berlakovitch, Felix, และ Stefan Brunthaler. 2024. Cross Module Quickening - The Curious Case of C Extensions. DOI: 10.4230/LIPIcs.ECOOP.2024.6