Python สำหรับ. Net ฟื้นขึ้นจากความตาย

การพัฒนาบน IronPython การใช้งาน Python ที่ทำงานบน Common Language Runtime (CLR) ของ. Net framework กำลังได้รับความสนใจจากโครงการที่เพิ่งเปลี่ยนมือไปสู่ผู้นำการพัฒนาใหม่

Jeff Hardy อดีตหัวหน้าผู้พัฒนา IronPython ยืนยันการเปลี่ยนแปลงในรายชื่ออีเมลของผู้ใช้ Ironpython เมื่อต้นเดือนนี้ "ด้วยเหตุผลหลายประการตอนนี้ฉันไม่มีเวลาให้ความสนใจกับ IronPython เท่าที่ควร" Hardy เขียน "ดังนั้นฉันจึงมอบการควบคุมโครงการนี้ให้กับ [เพื่อนร่วมโครงการ] Alex Earl และ Benedikt Eggers"

Python สำหรับ. Net และในทางกลับกัน

IronPython ซึ่งเขียนด้วย C # ไม่ได้มีไว้เพื่อเรียกใช้โปรแกรม Python ในสต็อกเท่านั้น สามารถให้โปรแกรมเมอร์ Python เชื่อมโยงกับแอปพลิเคชันและอ็อบเจ็กต์. Net ที่มีอยู่ เหนือสิ่งอื่นใดออบเจ็กต์เหล่านั้นสามารถนำเข้าและจัดการได้ด้วยไวยากรณ์และสำนวนเดียวกันกับออบเจ็กต์ Python ดั้งเดิม

การพัฒนา IronPython ชะลอตัวลงอย่างไม่ต้องสงสัยในช่วงสองสามปีที่ผ่านมา การเปิดตัวหลักสุดท้ายคือ Python 2.7.5 เมื่อปลายปี 2014 IronPython ไม่รองรับ Python 3 ซึ่งเป็นข้อเสียเปรียบที่สำคัญเนื่องจาก Python 2 จะไม่ได้รับการสนับสนุนอีกต่อไปในปี 2020 และ Python 3 เป็นผู้สืบทอดที่จัดตั้งขึ้น

ในการประชุมบนไซต์แชทของนักพัฒนาอย่าง Gitter, Earl, Eggers และคนอื่น ๆ ได้สรุปปัญหาเร่งด่วนที่สุดที่โครงการต้องเผชิญในขณะที่กำลังดำเนินไป: จะทำอย่างไรกับปัญหา IronPython ที่โดดเด่นใน CodePlex; กำหนดการวางจำหน่ายประเภทใด และโร้ดแมปประเภทใดที่จะใช้สำหรับ IronPython 3

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

ข่าวดีก็คืองานบางส่วนได้ดำเนินการไปแล้วในพื้นที่นี้ ได้แก่ Ironclad ซึ่งเป็นโครงการที่คิดค้นขึ้นเพื่อให้ส่วนขยาย CPython ที่คอมไพล์ทำงานได้เหมือนใน IronPython ข่าวร้ายคือโครงการไม่ได้เห็นผลงานมากนักในระยะเวลานานและจะต้องได้รับการแก้ไขอย่างหนักเพื่อให้เป็นประโยชน์สำหรับ Python สมัยใหม่

ของทับทิมและ GILs

ปัญหาอีกประการหนึ่งที่เกิดขึ้นคือวิธีจัดการกับโครงการที่คล้ายกันซึ่งจัดการโดยทีมเดียวกัน: IronRuby ซึ่งเป็นการใช้งาน. Net ของ Ruby ตามที่ชื่อมีความหมาย ทั้งสองภาษาได้รับการพัฒนาร่วมกันเนื่องจากมีต้นกำเนิดจากความพยายามเดียวกันภายใน Microsoft เกี่ยวกับ Dynamic Language Runtime และยังคงอยู่ใกล้เคียงกันหลังจากที่ Microsoft แยกพวกเขาออกไปสู่ความพยายามที่ขับเคลื่อนโดยชุมชนในปี 2010

แผนคือการทำให้ IronRuby เป็นโปรเจ็กต์ของตัวเองเพื่อดึงดูดผู้ชมนักพัฒนาของตัวเอง IronPython 2 จะยังคงได้รับการพัฒนาเป็นโครงการที่ไม่ต่อเนื่อง

การพัฒนา IronPython ในอนาคตอาจพิสูจน์ให้เห็นผลด้วยการมอบวิธีการเติมเต็มความฝันอันยาวนานของรันไทม์ Python ที่รวดเร็วและเป็นมิตรกับหลายคอร์ IronPython ไม่มี Global Interpreter Lock (GIL) ซึ่งเป็นคุณลักษณะของการใช้งาน Python จำนวนมากที่ถูกตำหนิว่าเป็นอุปสรรคต่อประสิทธิภาพสูง

ที่กล่าวว่าการที่ IronPython ไม่มี GIL ไม่ได้ทำให้เร็วขึ้นโดยอัตโนมัติ เกณฑ์มาตรฐานของ IronPython บางตัวดีกว่า CPython แต่อย่างอื่นแย่กว่าอย่างเห็นได้ชัด สำหรับตอนนี้เพียงแค่นำ IronPython ให้เร็วขึ้นด้วยสาขาปัจจุบันของ Python, 2 และ 3 ก็ควรจะเป็นภารกิจเพียงพอแล้ว