Python untuk .Net bangkit dari kematian

Pengembangan di IronPython, implementasi Python yang berjalan pada Common Language Runtime (CLR) framework .Net, mendapatkan kesempatan berkat proyek yang baru-baru ini berpindah tangan ke pemimpin pengembangan baru.

Jeff Hardy, mantan pemimpin pengembang IronPython, mengonfirmasi transisi di milis pengguna Ironpython awal bulan ini. "Karena banyak alasan, saya tidak punya waktu sekarang untuk memberi IronPython perhatian yang layak," tulis Hardy, "jadi saya menyerahkan kendali proyek kepada [sesama kontributor proyek] Alex Earl dan Benedikt Eggers."

Python untuk .Net, dan sebaliknya

IronPython, ditulis dalam C #, tidak hanya dimaksudkan untuk menjalankan program Python stok. Ini dapat menyediakan pemrogram Python jembatan ke aplikasi dan objek .Net yang ada. Yang terbaik dari semuanya, objek-objek itu dapat diimpor dan ditangani dengan sintaks dan idiom yang sama dengan objek Python asli.

Pengembangan di IronPython tidak diragukan lagi telah melambat selama beberapa tahun terakhir. Rilis utama terakhir adalah untuk Python 2.7.5, pada akhir 2014. Python 3 tidak didukung oleh IronPython - kelemahan utama karena Python 2 tidak lagi didukung pada tahun 2020, dan Python 3 adalah penerus yang mapan.

Dalam pertemuan di situs obrolan pengembang Gitter, Earl, Eggers, dan lainnya membahas masalah paling mendesak yang dihadapi proyek saat bergerak maju: apa yang harus dilakukan tentang masalah IronPython yang luar biasa di CodePlex; jenis jadwal rilis yang akan diterapkan; dan peta jalan seperti apa yang harus dibuat untuk IronPython 3.

Masalah lain yang muncul dalam diskusi adalah bagaimana mengimplementasikan dukungan untuk pustaka Python yang menggunakan ekstensi C. Jika IronPython ingin memiliki audiens seluas mungkin, ini bukanlah pilihan. Banyak pustaka Python utama, seperti Numpy, menggunakan ekstensi C untuk kecepatan, dan idealnya berfungsi sebagaimana adanya di IronPython tanpa perlu dikompilasi ulang.

Kabar baiknya adalah bahwa beberapa pekerjaan telah dilakukan di area ini, yaitu Ironclad, sebuah proyek yang dirancang untuk memungkinkan ekstensi CPython yang dikompilasi untuk bekerja sebagaimana adanya di IronPython. Kabar buruknya adalah proyek ini belum melihat banyak pekerjaan dalam waktu lama dan perlu banyak direvisi agar berguna untuk Python modern.

Dari rubi dan GIL

Masalah lain yang muncul adalah bagaimana menangani proyek serupa yang ditangani oleh tim yang sama: IronRuby, yang merupakan implementasi .Net dari Ruby, sesuai dengan namanya. Kedua bahasa tersebut telah dikembangkan bersama, karena mereka berasal dari upaya yang sama dalam Microsoft seputar Dynamic Language Runtime, dan tetap berada di dekat setelah Microsoft memintalnya ke dalam upaya berbasis komunitas pada tahun 2010.

Rencananya adalah menjadikan IronRuby proyeknya sendiri untuk menarik audiens pengembangnya sendiri. IronPython 2 juga akan terus dikembangkan sebagai proyek terpisah.

Pengembangan IronPython di masa depan mungkin terbukti bermanfaat dengan menyediakan cara untuk memenuhi impian lama tentang runtime Python yang cepat dan ramah banyak inti. IronPython tidak memiliki Global Interpreter Lock (GIL), fitur dari banyak implementasi Python yang disalahkan sebagai penghalang untuk kinerja tinggi.

Meskipun demikian, fakta bahwa IronPython tidak memiliki GIL tidak otomatis membuatnya lebih cepat; beberapa benchmark IronPython lebih baik daripada CPython, tetapi yang lain jauh lebih buruk. Untuk saat ini, cukup meningkatkan kecepatan IronPython dengan cabang Python saat ini, 2 dan 3, sudah cukup untuk misi.