Compiler Mojo Menjadi Open Source: Apa yang Benar-Benar Dapat Diubah Developer

Compiler Mojo kini dapat dibangun dan dimodifikasi dari source. AI News mereproduksi build tersebut, sementara lisensi dan tata kelola kontribusi tetap menjadi batas yang terpisah.

Bagikan artikel ini

Modular merilis compiler Mojo open source pada 18 Agustus, satu minggu setelah Mojo 1.0. Perubahan pentingnya bukan hanya kode tersebut dapat dibaca di GitHub: developer kini dapat memodifikasi compiler, membangunnya dari source, dan menggunakan build tersebut untuk mengompilasi serta menjalankan program Mojo tanpa binary compiler Mojo proprietary.

Kesimpulan itu memerlukan dua kualifikasi. Compiler yang dibangun dari source saat ini tidak dapat membangun target MAX, dan Modular belum menerima kontribusi compiler atau tooling. Repositori juga menempatkan kode dan kontribusinya di bawah Apache 2.0 dengan pengecualian LLVM, sementara secara terpisah menerapkan Modular MAX Community License pada penggunaan dan distribusi MAX. “Mojo adalah open source” akurat; “setiap produk di repositori kini memiliki ketentuan penggunaan tak terbatas yang sama” tidak akurat.

Dapatkah saya membangun dan memodifikasi Mojo tanpa compiler proprietary?

Ya—untuk compiler Mojo dan standard library. Gunakan konfigurasi Bazel build-mojo milik repositori. Konfigurasi itu secara eksplisit menonaktifkan toolchain Mojo prebuilt, membangun target compiler dari source yang telah di-check out, dan dapat menjalankan file .mojo dengan compiler yang dihasilkan.

Tidak—untuk setiap workflow Modular Platform. Panduan open-repository proyek sendiri mengatakan compiler yang dibangun secara lokal tidak dapat membangun target MAX apa pun. Pekerjaan pada kernel atau model MAX tetap menggunakan konfigurasi prebuilt-mojo, yang mengunduh paket Mojo nightly Modular saat ini.

Perbedaan ini memisahkan empat arti “open” yang berguna:

  • Terlihat: Anda dapat memeriksa implementasi dan histori compiler.
  • Dapat dibangun: Anda dapat menghasilkan compiler yang berfungsi dari source yang dipublikasikan.
  • Dapat difork: Lisensi Apache 2.0 dengan pengecualian LLVM mengizinkan modifikasi dan redistribusi sesuai ketentuannya.
  • Terbuka untuk kontribusi upstream: belum untuk compiler dan tooling, meskipun kontribusi standard library dan MAX tertentu diterima.

Rilis ini mencapai tiga milestone pertama untuk bahasa tersebut. Milestone keempat belum tercapai.

Apa tepatnya yang menjadi open source?

Repositori modular adalah monorepo, bukan proyek yang hanya berisi compiler. README tingkat atasnya mengidentifikasi compiler, standard library, kode akselerator, pipeline model, dan inference server sebagai komponen terpisah. Batasan itu penting saat menentukan apa yang dapat Anda ubah dan ketentuan mana yang mengatur hasilnya.

Komponen repositori Mojo dan MAX, jalur modifikasi praktis, serta batas lisensi atau kontribusi
Komponen Path repositori Yang dapat dilakukan developer sekarang Batas penting
Compiler Mojo KGEN/ Membaca, membangun, memodifikasi, menguji, dan memelihara fork. Apache 2.0 dengan pengecualian LLVM; kontribusi compiler upstream belum diterima.
Standard library Mojo mojo/stdlib/ Membangun dengan compiler lokal dan mengirimkan perbaikan, test, dokumentasi, atau proposal yang disetujui dengan scope yang jelas. Apache 2.0 dengan pengecualian LLVM; perubahan juga harus diuji dengan compiler terpaket sebelum pull request.
Tool compiler KGEN/tools/ Memeriksa dan menjalankan tool IR tingkat rendah seperti kgen-translate. Source terbuka, tetapi proses kontribusi compiler dan tooling masih disiapkan.
Library akselerator MAX max/kernels/ Memeriksa kode dan berkontribusi dalam area yang diterima proyek. Pekerjaan MAX menggunakan compiler Mojo prebuilt; penggunaan dan distribusi MAX memiliki ketentuan Community License terpisah.
Pipeline dan inference server MAX max/python/max/pipelines/ dan max/python/max/serve/ Memeriksa implementasi dan mengerjakan arsitektur model yang diterima. Jangan menyimpulkan hak produk khusus Apache dari lisensi repositori; tinjau ketentuan MAX dan lisensi model pihak ketiga.

Rumusan lisensi perlu diperhatikan. README repositori menyatakan bahwa repositori dan kontribusinya berada di bawah Apache 2.0 dengan pengecualian LLVM. README kemudian menyatakan bahwa penggunaan dan distribusi MAX diatur oleh Modular MAX Community License. Lisensi kedua mencakup persyaratan untuk karya turunan dan distribusi aplikasi, mengidentifikasi komponen yang memiliki lisensi terpisah, serta meminta pengguna memeriksa lisensi pihak ketiga.

Dalam praktiknya, mengaudit atau mem-fork bahasa Mojo adalah keputusan hukum yang berbeda dari mengirimkan produk yang menyematkan MAX. README adalah orientasi, bukan nasihat hukum; tim yang mendistribusikan software harus memetakan file dan binary aktual dalam produknya ke pemberitahuan dan ketentuan yang berlaku.

Kami mereproduksi build dari source

Untuk artikel ini, kami meng-clone revisi 33cd4694, yang di-commit pada 20 Agustus, dan menjalankan target compiler terdokumentasi di Linux 64-bit. Mesin tersebut menggunakan AMD Ryzen 7 8700G dengan 8 core, 16 hardware thread, dan memori 46 GiB. Tidak ada discrete GPU yang digunakan dalam test ini.

Perintahnya adalah:

./bazelw run --config=build-mojo //KGEN:mojo -- --version

Build source selesai dengan sukses setelah 11.173 aksi Bazel. Dari awal hingga akhir, perintah memerlukan waktu 41 menit 57 detik dan keluar dengan status 0. Binary yang dihasilkan melaporkan Mojo 1.1.0.dev0 (deadbeef); teks deadbeef adalah metadata versi build, sedangkan revisi Git di atas adalah identitas source yang kami pin.

Kami kemudian membuat file minimal:

def main():
    print("source-built Mojo works")

dan menjalankannya dengan workflow terdokumentasi:

./bazelw run --config=build-mojo //KGEN:mojo -- run repro.mojo

Dengan compiler yang sudah di-cache, perintah lanjutan ini selesai dalam 1,8 detik, mencetak source-built Mojo works, dan keluar dengan status 0. Ini juga menangkap perubahan versi yang praktis: draft sebelumnya menggunakan fn main(), yang ditolak compiler saat ini dengan instruksi untuk menggunakan def.

Perintah pertama adalah build compiler yang besar, bukan instalasi bahasa yang ringan. Bazel wrapper mengunduh binary Bazel yang didukungnya; resolusi dependensi mengambil arsip source termasuk LLVM serta toolchain host dan cross-compilation prebuilt; dan Bazel menganalisis lebih dari 42.000 target terkonfigurasi sebelum merencanakan sekitar 11.000 aksi build untuk target yang diminta. Ini tidak menjadikan Mojo proyek self-hosting atau source-bootstrap: “tidak ada compiler Mojo prebuilt” berbeda dari “tidak ada tool build binary atau toolchain sistem.”

Hal ini membuktikan klaim yang lebih sempit dan diperlukan developer: source compiler yang dipublikasikan dapat menghasilkan executable mojo yang mem-parse, mengompilasi, dan menjalankan program Mojo. .bazelrc repositori menghubungkan --config=build-mojo ke use_prebuilt_mojo_toolchain=false, sedangkan mode prebuilt-mojo yang terpisah mengunduh paket Mojo nightly.

Anggap waktu kami sebagai observasi reproduktibilitas, bukan benchmark. Bazel menggunakan cache yang dikonfigurasikan, kecepatan jaringan tidak dikontrol, dan CPU, status cache, atau revisi repositori yang berbeda akan mengubah hasil. Fakta yang bertahan adalah revisi, target, konfigurasi, kelas hardware, output, dan status keluar yang diuji.

Apa yang dapat diubah developer compiler?

Tree KGEN/ mengekspos jauh lebih banyak daripada wrapper front end. Tree itu berisi parser dan lapisan semantik Mojo, intermediate representation dan pass berbasis MLIR, lowering LLVM, integrasi runtime, tool command-line, serta test dan dokumentasi yang digunakan untuk menelusuri pipeline tersebut. Compiler walkthrough proyek adalah peta awal yang berguna.

Seorang compiler engineer kini dapat menelusuri fitur bahasa melalui parsing, type checking, dialect khusus Mojo, lowering, dan kode yang dihasilkan; mengubah implementasi tersebut dalam fork; membangun ulang //KGEN:mojo; dan menjalankan test terarah. Rilis source juga secara teknis memungkinkan security review, bisect regresi, diagnostik eksperimental, pass riset baru, dan pemeliharaan fork jangka panjang—hal-hal yang tidak mungkin dilakukan dengan executable tertutup.

Repositori terbuka memiliki celah workflow. Panduannya mengatakan target monorepo //:install tidak didukung, sehingga developer harus memanggil target Bazel atau menyalin artefak secara manual. Sebagian dokumentasi internal menggunakan alias yang harus didefinisikan kontributor eksternal. Test khusus hardware dilewati ketika platform yang terdeteksi tidak cocok. Yang paling penting, compiler lokal tidak dapat membangun target MAX.

Itu adalah masalah yang normal bagi tree compiler kompleks yang baru dibuka, tetapi memengaruhi biaya penggunaannya. Rilis source mengurangi ketidaktransparanan vendor; rilis ini tidak otomatis menyediakan packaging yang rapi, cakupan platform luas, API downstream stabil, atau build graph yang kecil.

Visibilitas kode mendahului tata kelola

Pengumuman Modular mengatakan mereka menargetkan penerimaan kontribusi compiler dan tooling pada akhir 2026. Panduan kontributor Mojo saat ini lebih langsung: compiler bersifat open source, tetapi proses kontribusinya belum ditetapkan.

Karena itu, Anda dapat menerbitkan fork compiler hari ini, melaporkan bug, mendiskusikan arsitektur, atau menyiapkan patch untuk penggunaan sendiri. Anda tidak boleh berasumsi Modular akan meninjau dan me-merge pull request compiler hari ini. Sebaliknya, standard library memiliki kategori perubahan yang diterima, ekspektasi pengujian, dan proses proposal untuk desain yang lebih besar.

Itu bukan kontradiksi dalam lisensi. Lisensi open source memberikan hak untuk menggunakan, mempelajari, memodifikasi, dan mendistribusikan kode; lisensi tidak mewajibkan maintainer asli menerima patch dari luar. Namun governance memengaruhi apakah proyek berperilaku seperti upstream bersama atau source tree yang diterbitkan vendor. Bagi tim yang ingin menghindari fork permanen, workflow kontribusi yang dijanjikan adalah milestone yang layak dipantau.

Apakah compiler terbuka membuat Mojo siap produksi?

Tidak ada satu peristiwa repositori yang dapat menjawabnya. Rilis ini secara material meningkatkan auditabilitas, kesinambungan, dan kemampuan mendiagnosis perilaku compiler. Kesiapan produksi tetap bergantung pada workload, hardware yang didukung, ekosistem, kebijakan upgrade, pengalaman debugging, dan kesediaan tim membawa perbaikan yang belum dapat dikirim upstream.

Bukti independen cukup menggembirakan tetapi terbatas. Studi SC 2025 Workshops yang telah melalui peer review menguji empat kernel ilmiah pada GPU NVIDIA H100 dan AMD MI300A. Penulis menemukan Mojo kompetitif dengan CUDA atau HIP untuk kernel yang dibatasi memori, sambil melaporkan celah pada operasi atomic AMD dan workload compute-bound fast-math pada kedua vendor. Mereka juga menggambarkan model pemrogramannya sebagai cukup low-level. Eksperimen itu mendahului Mojo 1.0 dan rilis source, sehingga menunjukkan bahwa evaluasi kernel lintas-vendor yang nyata mungkin dilakukan—bukan bahwa compiler saat ini unggul pada setiap workload.

Diskusi peluncuran di Hacker News, r/ProgrammingLanguages, dan r/Compilers mengangkat pertanyaan yang masuk akal tentang dependensi MAX, driver GPU proprietary, dialect MLIR khusus Mojo, migrasi Python, dan audiens praktis untuk bahasa akselerator lain. Ini adalah petunjuk riset, bukan validasi. Komentar dapat mengidentifikasi test yang seharusnya dijalankan tim Anda; komentar tidak dapat menggantikan test tersebut.

Panduan keputusan untuk mengadopsi atau berkontribusi pada Mojo setelah rilis source compiler
Tujuan Status sekarang Langkah berikut yang disarankan
Mengaudit atau bereksperimen dengan compiler bahasa Dapat dilakukan Pin sebuah revisi, build dengan build-mojo, dan jalankan test compiler serta standard library di sekitar kode yang Anda ubah.
Memelihara fork compiler internal Memungkinkan secara legal dan teknis Anggarkan build Bazel/LLVM yang besar, rebase upstream, packaging rilis, dan pembaruan keamanan.
Berkontribusi perbaikan standard library Didukung Ikuti aturan issue, test, benchmark, dan proposal yang terdokumentasi; uji dengan compiler lokal dan prebuilt.
Berkontribusi fitur compiler ke upstream Belum terbuka Diskusikan dengan proyek dan tunggu workflow kontribusi compiler formal sebelum mengharapkan review.
Menyesuaikan kernel atau model MAX Memerlukan compiler terpaket Gunakan prebuilt-mojo, tinjau lisensi MAX dan model, serta uji target akselerator yang tepat.
Memigrasikan sistem Python atau CUDA produksi Memerlukan bukti workload Buat prototipe satu hot path yang dibatasi dan bandingkan correctness, latensi end-to-end, portabilitas, debugging, serta biaya upgrade.

Putusan praktis

Membuka compiler Mojo benar-benar mengubah profil risikonya. Developer tidak lagi harus mempercayai binary bahasa yang opaque untuk memahami bagaimana source Mojo menjadi machine code, dan mereka dapat mempertahankan atau mengubah compiler jika roadmap Modular menyimpang dari kebutuhan mereka. Ini membuat Mojo menjadi eksperimen bahasa yang lebih kredibel dan dependensi yang lebih mudah diperiksa.

Hal itu tidak melebur Mojo, MAX, driver GPU, kode model, dan hak deployment menjadi satu janji open source. Hal itu juga tidak menciptakan komunitas compiler upstream dalam semalam. Putusan 2026 yang jujur adalah: bahasanya kini dapat diaudit, dibangun dari source, dan difork; integrasi MAX serta governance compiler tetap menjadi dua batas yang perlu dievaluasi berikutnya.

Daily Digest 19 Agustus memiliki snapshot rilis singkat. Analisis deployment lokal Qwen3.8-27B kami menerapkan pembedaan yang sama antara artefak yang terlihat dan sistem lengkap yang diperlukan untuk menggunakannya.

Sumber

  1. Modular’s Mojo open-source announcement
  2. Modular repository at the revision tested for this article
  3. Working with Mojo in the open-source repository
  4. Mojo contributor guide
  5. Modular repository license
  6. Modular MAX Community License in the repository
  7. Independent SC 2025 study of Mojo GPU science kernels
  8. Hacker News discussion of open-source Mojo
  9. Programming Languages discussion of open-source Mojo