Kompiler Python-to-C ++ menjanjikan eksekusi yang lebih cepat

Semakin populer bahasanya, semakin bervariasi implementasinya. Python adalah contoh klasik, dengan sebagian besar pengganti untuk penerjemah defaultnya ditulis untuk mempercepat eksekusi bahasa. Di antara yang terbaru dan paling menarik adalah Nuika.

Nuika (open source di GitHub) mengompilasi kode Python ke C ++, yang kemudian dapat dieksekusi di tempat atau dipaketkan sebagai file yang berdiri sendiri untuk didistribusikan kembali. Tidak seperti beberapa pengganti lain untuk interpreter Python yang ada, ia mengklaim kompatibilitas penuh dengan semua konstruksi bahasa di Python 2.6, 2.7, 3.2, dan 3.3.

Menurut pimpinan proyek, Kay Hayen, tonggak pertama Nuitka - kesamaan fitur dengan bahasa - telah tercapai. Hayen mempresentasikan diskusi tentang Nuitka di konferensi EuroPython 2012 dan pekerjaan dimulai dengan sungguh-sungguh (berdasarkan sejarah komitmen GitHub) sekitar akhir tahun itu.

Untuk melakukan keajaibannya, Nuitka membutuhkan versi interpreter Python saat ini (cabang 2.x atau 3.x) dan kompiler C ++. Microsoft Visual Studio, MinGW, dan Clang / LLVM semuanya didukung untuk yang terakhir, baik dalam edisi 32- dan 64-bit. Namun, kompilasi silang - katakanlah, dari Linux ke Windows atau sebaliknya - tidak didukung, dan kompilasi 64-bit yang dapat dieksekusi di Windows membutuhkan kompiler Microsoft.

Kelemahan lainnya adalah pembuatan executable yang berdiri sendiri. Untuk melakukan ini, Nuitka menyertakan CPython yang dapat didistribusikan ulang (di Windows, kumpulan DLL dan file pendukung lainnya) dengan file yang dapat dieksekusi. Akibatnya, program yang berdiri sendiri datang dengan jumlah overhead yang cukup: Skrip baris perintah "Halo, dunia" sederhana untuk Python 2.7 menghasilkan Windows 2,6MB 32-bit yang dapat dieksekusi, bersama dengan 7,4MB file dukungan. (Versi GUI dari program yang sama berbobot 10MB untuk eksekusi, total 20MB.)

Namun, apa yang sudah bisa dicapai Nuitka sangat mengesankan, dan rencana Hayen untuk masa depannya sangat ambisius. Langkah selanjutnya adalah membuat kode yang dihasilkan oleh Nuitka lebih efisien, termasuk penanganan jenis variabel yang lebih baik dan pengoptimalan aliran kontrol. Lebih jauh di peta jalan adalah fitur yang lebih canggih dan berharga, seperti memiliki antarmuka Nuitka langsung dengan kode C yang digunakan dalam Python melalui sistem fungsi asing ctypes bahasa.