Kompiler Python-to-C Nuitka menyiapkan peningkatan performa yang besar

Nuitka, kompiler yang mengubah Python menjadi C demi peningkatan kinerja dan runtime yang lebih portabel, telah mencapai rilis 0,6 — sebuah pencapaian yang meletakkan dasar untuk peningkatan kinerja di masa mendatang. Seperti yang dikatakan pengembang Nuitka, Kay Hayen, “Peningkatan kinerja kemungkinan besar terjadi di setiap rilis yang akan datang.”

Nuitka 0.6 menerapkan pengoptimalan untuk booljenis Python ( true/false), sehingga kode yang menggunakannya dapat direduksi menjadi kode C yang paling efisien. The booloptimasi datang sebagai awal untuk optimasi yang sama untuk jenis variabel lainnya.

Nuitka, seperti Cython, mengkompilasi program Python ke C, dan menautkan eksekusi yang dihasilkan ke runtime Python untuk kompatibilitas maksimum. Python versi 2.6, 2.7, dan 3.3 hingga 3.7 semuanya didukung, termasuk konstruksi seperti async.

Program Python yang dikompilasi dengan Nuitka bisa mendapatkan keuntungan dari peningkatan kinerja yang besar. Hayen mengklaim versi benchmark Pystone yang dikompilasi Nuitka berjalan sekitar 312 persen lebih cepat daripada implementasi CPython konvensional.

Tapi Hayen memperingatkan bahwa peningkatan kinerja yang paling signifikan menunggu kedatangan jenis inferencing di Nuitka, memungkinkan terjemahan penuh dari jenis objek Python tertentu ke dalam versi C asli.

Dinamika Python membuat banyak jenis pengoptimalan menjadi sulit. Banyak pengoptimalan Cython memerlukan banyak panduan dan sintaks anotasi khusus untuk hasil terbaik. Proyek Nuitka bertujuan untuk memberikan jenis pengoptimalan yang sama tanpa mengharuskan pengembang untuk membuat anotasi kode.

Akselerator Python lain yang umum digunakan, PyPy, bekerja dengan mengkompilasi kode Python ke assembly tepat waktu. Tapi PyPy bekerja paling baik untuk pengoptimalan di tempat; itu tidak cocok untuk mengompilasi aplikasi Python yang diterapkan dengan cara yang berdiri sendiri. Nuitka menghasilkan file executable yang berdiri sendiri. Salah satu kasus penggunaan potensial adalah mengemas aplikasi Python untuk distribusi pihak ketiga.

Peningkatan lain di Nuitka 0.6 termasuk dukungan pada Windows untuk Clang, Microsoft Visual C ++, dan kompiler Cygwin, caching file objek untuk kompilasi ulang yang lebih cepat (sekali lagi, pada Windows), dan pemformatan otomatis kode C yang dihasilkan  clang-formatagar dapat dibaca.