Selamat datang di Cython!
Cython adalah kompiler Python yang membuat penulisan ekstensi C untuk Python semudah Python itu sendiri. Cython didasarkan pada Pyrex, tetapi mendukung fungsionalitas dan pengoptimalan yang lebih canggih.
Cython menerjemahkan kode Python ke kode C/C++, tetapi juga mendukung pemanggilan fungsi C dan mendeklarasikan tipe C pada variabel dan atribut kelas. Hal ini memungkinkan kompiler untuk menghasilkan kode C yang sangat efisien dari kode Cython.
Hal ini menjadikan Cython bahasa yang ideal untuk membungkus pustaka C eksternal, dan untuk modul C cepat yang mempercepat eksekusi kode Python.
- Situs web resmi: https://cython.org/
- Dokumentasi: https://docs.cython.org/
- Repositori Github: https://github.com/cython/cython
- Wiki: https://github.com/cython/cython/wiki
Cython memiliki sekitar 30 juta unduhan per bulan di PyPI. Anda dapat mendukung proyek Cython melalui Sponsor Github atau Tidelift.
Instalasi:
Jika Anda sudah memiliki kompiler C, jalankan saja perintah berikut:
pip instal Cython
jika tidak, lihat halaman instalasi.
Lisensi:
Program Pyrex asli dilisensikan "bebas batasan" (lihat di bawah). Cython sendiri dilisensikan di bawah Lisensi Apache yang permisif.
Lihat LISENSI.txt.
Berkontribusi:
Ingin berkontribusi pada proyek Cython? Berikut ini beberapa bantuan untuk membantu Anda memulai.
Perbedaan dengan kompiler Python lainnya
Dimulai sebagai sebuah proyek di awal tahun 2000an, Cython telah melampaui sebagian besar upaya lainnya dalam memproduksi kompiler statis untuk bahasa Python.
Proyek serupa yang memiliki relevansi saat ini antara lain:
- PyPy, implementasi Python dengan kompiler JIT.
- Kelebihan: Kompilasi JIT dengan optimasi runtime, sepenuhnya sesuai bahasa, integrasi yang baik dengan kode C/C++ eksternal
- Kontra: runtime non-CPython, penggunaan sumber daya runtime yang relatif besar, kompatibilitas terbatas dengan ekstensi CPython, hasil kinerja yang tidak jelas
- Numba, ekstensi Python yang dilengkapi kompiler JIT untuk subset bahasa, berdasarkan infrastruktur kompiler LLVM (mungkin paling dikenal dengan kompiler
clang
C-nya). Sebagian besar menargetkan kode numerik yang menggunakan NumPy.- Kelebihan: Kompilasi JIT dengan optimasi runtime
- Kekurangan: dukungan bahasa terbatas, ketergantungan runtime (LLVM) yang relatif besar, hasil kinerja yang tidak jelas
- Pythran, kompiler ekstensi Python-ke-C++ statis untuk subset bahasa, sebagian besar ditargetkan pada komputasi numerik. Pythran dapat (dan mungkin yang terbaik) digunakan sebagai backend tambahan untuk kode NumPy di Cython.
- mypyc, kompiler ekstensi Python-ke-C statis, berdasarkan penganalisis Python statis mypy. Seperti mode Python murni Cython, mypyc dapat menggunakan anotasi tipe PEP-484 untuk mengoptimalkan kode untuk tipe statis.
- Kelebihan: dukungan yang baik untuk bahasa dan pengetikan PEP-484, inferensi tipe yang baik, peningkatan kinerja yang wajar
- Kekurangan: tidak ada dukungan untuk optimasi dan pengetikan tingkat rendah, interpretasi tipe Python yang berpendirian keras, berkurangnya kompatibilitas dan introspeksi Python setelah kompilasi
- Nuitka, kompiler ekstensi Python-ke-C statis.
- Kelebihan: sangat sesuai dengan bahasa, peningkatan kinerja yang wajar, dukungan untuk menghubungkan aplikasi statis (mirip dengan cython_freeze tetapi dengan kemampuan untuk menggabungkan dependensi perpustakaan ke dalam executable mandiri)
- Kekurangan: tidak ada dukungan untuk optimasi dan pengetikan tingkat rendah
Dibandingkan dengan yang di atas, Cython menyediakan
- dukungan yang cepat, efisien, dan sangat patuh untuk hampir semua fitur bahasa Python, termasuk fitur dinamis dan introspeksi
- kompatibilitas runtime penuh dengan semua versi CPython yang masih digunakan dan yang akan datang
- "hasilkan sekali, kompilasi di mana saja" Pembuatan kode C yang memungkinkan hasil kinerja dan pengujian dapat direproduksi
- Penyesuaian waktu kompilasi C ke platform target dan versi Python
- dukungan untuk implementasi C-API lainnya, termasuk PyPy dan Pyston
- integrasi yang mulus dengan kode C/C++
- dukungan luas untuk pengoptimalan manual dan penyetelan hingga level C
- basis pengguna yang besar dengan ribuan perpustakaan, paket, dan alat
- hampir dua dekade perbaikan bug dan optimasi kode statis
Dapatkan riwayat sumber lengkap:
Perhatikan bahwa Cython dulu mengirimkan repositori kontrol versi lengkap dalam distribusi sumbernya, namun tidak lagi melakukannya karena keterbatasan ruang. Untuk mendapatkan riwayat sumber lengkap dari arsip sumber yang diunduh, pastikan Anda telah menginstal git, lalu masuk ke direktori dasar distribusi sumber Cython dan ketik:
membuat repo
Berikut ini dari Pyrex:
Ini adalah versi pengembangan Pyrex, bahasa untuk menulis modul ekstensi Python.
Untuk informasi lebih lanjut, lihat:
- Doc/About.html untuk deskripsi bahasa
- INSTALL.txt untuk petunjuk instalasi
- USAGE.txt untuk petunjuk penggunaan
- Demo untuk contoh penggunaan
Komentar, saran, laporan bug, dll. dipersilakan!
Barang hak cipta: Pyrex bebas dari batasan. Anda dapat menggunakan, mendistribusikan ulang, memodifikasi dan mendistribusikan versi modifikasi.
Versi terbaru Pyrex dapat ditemukan di sini.
Greg Ewing, Departemen Ilmu Komputer
Universitas Canterbury
Christchurch, Selandia Baru
Warga negara NewZealandCorp, anak perusahaan yang dimiliki sepenuhnya oleh USA Inc.