Apa itu Mojo ?

Memperkenalkan Mojo sebagai bahasa sistem milik Modular beserta garis keturunan Lattner, LLVM, dan MLIR.

Daftar isi

Topik ini memperkenalkan Mojo, bahasa pemrograman sistem milik Modular, mulai dari kedudukannya di peta teknologi, garis keturunannya dari Chris Lattner, LLVM, dan MLIR, sampai contoh program kecil beserta keluaran nyatanya. Setelah topik ini dibaca, kedudukan Mojo dan alasan kelahirannya dapat dijelaskan dengan urutan peristiwa yang tepat. Pembahasan bergerak dari definisi bahasa, sejarah garis keturunannya, contoh program yang dieksekusi, sampai alasan Modular mengembangkan bahasa ini.

Bahasa sistem dengan sintaks Python#

Mojo adalah bahasa pemrograman sistem (systems programming language), yaitu bahasa yang dirancang untuk menulis perangkat lunak yang mengendalikan sumber daya komputer secara langsung, seperti alokasi memori, pemanfaatan vektor prosesor, dan penghitungan numerik berkinerja tinggi. Bahasa ini dikembangkan oleh Modular, perusahaan yang didirikan Chris Lattner bersama Tim Davis. Tujuan desainnya adalah memadukan kenyamanan penulisan ala Python dengan kendali tingkat rendah yang dimiliki C++ dan Rust.

Bentuk kode Mojo mengikuti keluarga Python. Fungsi ditulis dengan kata kunci def, blok ditandai dengan indentasi, dan penamaan variabel mengikuti konvensi yang sama. Perbedaannya terletak pada cara program dijalankan, yaitu program dikompilasi menjadi kode mesin oleh compiler Mojo, program yang menerjemahkan kode sumber menjadi biner sebelum eksekusi, sehingga kecepatan berjalannya tidak bergantung pada interpreter Python yang mengeksekusi kode baris demi baris.

Mojo menyediakan penulisan tipe yang eksplisit pada variabel dan argumen fungsi, misalnya Int untuk bilangan bulat dan Float64 untuk bilangan desimal berpresisi ganda. Pengelolaan memorinya berbasis ownership, yakni aturan kepemilikan yang menentukan kapan sebuah nilai dibuat, dipinjam, dan dihancurkan. Bahasa ini juga menyediakan SIMD (Single Instruction, Multiple Data), kemampuan satu instruksi memproses beberapa data sekaligus, sebagai tipe bawaan yang dapat digunakan tanpa pustaka tambahan.

Garis keturunan Lattner, LLVM, dan MLIR#

Mojo digarap oleh Chris Lattner, insinyur yang menciptakan LLVM, infrastruktur kompilasi yang menjadi fondasi banyak compiler modern. Rangkaian karyanya berurutan, yaitu LLVM pada awal tahun 2000-an, Clang pada 2007 sebagai compiler C dan C++ berbasis LLVM, Swift pada 2014 sebagai bahasa aplikasi Apple, dan MLIR pada 2019 sebagai kerangka representasi antara untuk compiler yang menargetkan banyak perangkat keras. Lattner mendirikan Modular pada 2022 bersama Tim Davis, dan Mojo diumumkan pada 2023 dalam keadaan awal yang eksperimental. Perjalanan karier itu menjelaskan mengapa Mojo menggunakan fondasi yang sama dengan compiler modern lainnya.

Diagram berikut merangkum garis keturunan tersebut dari Chris Lattner menuju Mojo.

Chris Lattnerpendiri ModularLLVM (2000-an)Clang (2007)Swift (2014)MLIR (2019)Modulardidirikan 2022Mojo1.0 Agustus 2026
Garis keturunan Mojo dari Chris Lattner menuju Modular

Kedudukan MLIR penting untuk dipahami karena MLIR menyediakan representasi antara yang dapat diperluas, sehingga compiler Mojo menerjemahkan satu kode sumber menjadi kode mesin yang optimal untuk beragam arsitektur prosesor. Versi 1.0 dirilis pada Agustus 2026 dengan kode sumber yang dibuka di repositori modular/modular menggunakan lisensi open source Apache 2.0 beserta pengecualian LLVM. Versi 1.2.0 menyusul pada 22 Oktober 2026 dan menjadi versi acuan seluruh jalur ini.

Contoh program kecil#

Program berikut menampilkan tiga ciri Mojo sekaligus, yaitu fungsi bertipe dengan def, variabel lokal dengan var, dan vektor SIMD sebagai tipe bawaan. Program ini disimpan sebagai berkas cicip.mojo dan dieksekusi dengan mojo run. Keluarannya ditampilkan apa adanya dari eksekusi Mojo 1.2.0 pada mesin penulisan jalur ini.

mojo cicip.mojo
def jumlah(a: Int, b: Int) -> Int:
    return a + b

def main():
    var v = SIMD[DType.float64, 4](1.0, 2.0, 3.0, 4.0)
    print(jumlah(2, 3))
    print(v.reduce_add())

Fungsi jumlah menerima dua parameter bertipe Int dan mengembalikan Int. Fungsi main adalah pintu masuk eksekusi karena Mojo 1.2.0 tidak mendukung pernyataan di tingkat berkas. Baris var v = SIMD[DType.float64, 4](1.0, 2.0, 3.0, 4.0) membuat vektor empat angka desimal berpresisi ganda dalam satu nilai, dan reduce_add() menjumlahkan keempat elemennya dalam satu operasi. Tipe Int dan SIMD termasuk pustaka bawaan (prelude) yang tersedia tanpa pernyataan import, sehingga program sesingkat ini dapat menggunakannya tanpa persiapan tambahan.

bash
# jalankan program contoh
mojo run cicip.mojo
text Keluaran
5
10.0

Keluaran pertama, yaitu 5, berasal dari pemanggilan jumlah(2, 3). Keluaran kedua, yaitu 10.0, adalah hasil penjumlahan 1.0, 2.0, 3.0, dan 4.0 oleh reduce_add(). Pada mesin penulisan, pemanggilan pertama memerlukan waktu sekitar satu sampai lima detik karena kode dikompilasi lebih dahulu sebelum program dijalankan.

Mengapa Modular membuat Mojo#

Alasan kelahiran Mojo berawal dari pembagian kerja pada pengembangan komputasi AI. Python digunakan untuk menyusun model dan mengatur alur data, tetapi bagian yang perhitungannya berat ditulis dengan bahasa lain, umumnya C++ dengan kode khusus per perangkat keras. Akibatnya, satu proyek memelihara dua basis kode dengan keahlian dan perkakas yang berbeda.

Modular menawarkan satu bahasa untuk kedua sisi. Bagian yang berat ditulis sebagai kernel, yaitu fungsi yang menghitung operasi numerik secara langsung di atas perangkat keras, dan bagian orkestrasi tetap menggunakan bentuk kode ala Python. Kernel untuk CPU ditulis langsung dengan Mojo, sedangkan dukungan perangkat GPU tersedia melalui platform MAX dari Modular.

Sejak 1.0, kode sumber Mojo terbuka untuk publik di repositori modular/modular dengan lisensi Apache 2.0 beserta pengecualian LLVM. Status terbuka itu membuat perilaku bahasa dapat diperiksa langsung dari kode pustaka standarnya. Bagi pembelajar, keberadaan repositori resmi menjadi sumber jawaban ketika dokumentasi belum membahas sebuah detail.

Ringkasan#

  • Mojo adalah bahasa pemrograman sistem dari Modular yang memadukan sintaks keluarga Python dengan kompilasi tingkat rendah berbasis MLIR dan LLVM.
  • Bahasa ini digarap Chris Lattner, pencipta LLVM, Clang, dan Swift serta penggagas MLIR, yang mendirikan Modular bersama Tim Davis pada 2022.
  • Versi 1.0 dirilis pada Agustus 2026 sebagai proyek open source berlisensi Apache 2.0, disusul versi 1.2.0 pada 22 Oktober 2026.
  • Program berbasis def main() dikompilasi lalu dieksekusi dengan mojo run, dan tipe vektor SIMD tersedia sebagai bagian bawaan bahasa.

Referensi#

  • Mojo — Modular — Situs resmi bahasa Mojo berisi perkenalan, status proyek, dan tautan dokumentasinya.
  • Mojo Manual — Modular — Manual resmi versi 1.2.0 yang menjadi acuan sintaks pada jalur ini.