Beberapa hari yang lalu, diumumkan bahwa proyek Jitter secara resmi menjadi proyek di bawah naungan Proyek GNU dan sekarang dikembangkan dengan nama GNU Jitter menggunakan infrastruktur GNU dan sesuai dengan persyaratan proyek.
Bagi yang belum familiar dengan Jitter, ini adalah implementasi yang memungkinkan Anda untuk menghasilkan mesin virtual portabel dan sangat cepat untuk desain bahasa pemrograman apa pun, yang kinerja eksekusi kodenya jauh lebih unggul daripada interpreter dan mendekati kode yang dikompilasi secara native.
Jitter sangat portabel dan VM yang benar akan menunjukkan perilaku yang persis sama pada platform apa pun yang hanya memiliki kompiler dan pustaka C standar; namun, kinerja akan lebih baik menggunakan salah satu arsitektur yang didukung (saat ini: M68k, MIPS, PowerPC, RISC-V, SPARC, x86_64; level 64: Aarch390, Alpha, ARM, SXNUMXx) pada sistem ELF dengan GCC. Tentu saja, Jitter adalah bagian dari proyek GNU dan dirancang terutama untuk digunakan pada sistem GNU.
Jitter menerima input berupa spesifikasi tingkat tinggi dari instruksi yang didukung oleh mesin virtual, dan sebagai output berupa implementasi mesin virtual yang siap digunakan untuk mengeksekusi instruksi yang diberikan.
Logika setiap instruksi dalam spesifikasi ditentukan menggunakan kode C. Fitur tambahan mencakup dukungan untuk operasi percabangan bersyarat yang sulit diimplementasikan dalam C dan melekat pada bahasa pemrograman dinamis, seperti pengecekan nilai label dan pengecekan luapan (overflow).
Runtime Jitter juga dilengkapi dukungan efisien untuk operasi percabangan bersyarat yang sulit diterapkan hanya dengan menggunakan C, seperti pemeriksaan tag nilai seperti yang diperlukan oleh bahasa yang diketik secara dinamis dan aritmatika dengan pemeriksaan luapan. Kode VM mengakses panggilan prosedur dan operasi pengembalian, dalam banyak kasus mengandalkan mekanisme perangkat keras yang efisien.
Mesin virtual yang dihasilkan diformat dalam bahasa C dengan sejumlah kecil sisipan assembler. Konfigurasi disediakan untuk memungkinkan berbagai optimasi dan mekanisme pengiriman tertentu, sehingga memudahkan migrasi mesin virtual ke platform yang berbeda.
Ini mendukung penggunaan arsitektur register, stack, dan join execution, serta kemampuan untuk mencerminkan struktur data mesin virtual dalam register perangkat keras CPU dan menghubungkan pengumpul sampah.
Kode yang dihasilkan mencakup C API sederhana untuk secara dinamis mengganti dan mengeksekusi kode di mesin virtual, serta program pengontrol untuk mengeksekusi kode secara terpisah dari file teks di mesin virtual.
Kode C yang dihasilkan sangat dikondisikan dan dapat dikonfigurasi untuk dijalankan menggunakan teknik distribusi yang berbeda dari berbagai kecanggihan; teknik pengiriman yang paling efisien bergantung pada beberapa arsitektur khusus, tetapi tidak khusus VM, dukungan perakitan yang disediakan oleh Jitter; semua model pengiriman, tetapi satu juga didasarkan pada ekstensi GNU C.
Terakhir, bagi yang tertarik mempelajari lebih lanjut, kode asli Jitter ditulis dalam bahasa C dan tersedia di bawah lisensi GPLv3. Anda dapat menemukan informasi lebih lanjut di tautan berikut.
Bagaimana cara mendapatkan Jitter?
Bagi mereka yang tertarik untuk menguji Jitter, mereka dapat memperoleh kode sumber dengan membuka terminal dan mengetikkan perintah berikut di dalamnya:
git clone http://git.ageinghacker.net/jitter
Setelah ini selesai, sekarang kita masuk ke folder yang memiliki kode, kita akan mengeksekusi skrip startup yang digunakan untuk menghasilkan file yang diperlukan untuk mengkonfigurasi dan membangun Jitter, termasuk skrip konfigurasi. Kami melakukan ini dengan:
cd jitter && ./bootstrap
Perlu disebutkan bahwa Jitter mengikuti konvensi GNU untuk konfigurasi dan konstruksi dan mendukung konstruksi dari direktori sumber; pada kenyataannya, ini mendukung kompilasi silang dan bahkan menjalankan rangkaian pengujian dalam kompilasi silang melalui emulator.
./configure && make
Terakhir, untuk mengeksekusi, cukup ketik:
make check