Rilis béta munggaran tina basa pamrograman Mojo 1.0 parantos dirilis, nandakeun stabilisasi basa sareng implementasi sadaya fitur inti. Rilis ieu dianggap ampir siap dianggo sacara lega. Rilis ahir Mojo 1.0 diperkirakeun bakal dirilis dina awal usum gugur. Ngagunakeun cabang ieu bakal ngamungkinkeun anjeun pikeun ngamimitian ngembangkeun proyék ageung tanpa sieun ngalanggar parobihan kompatibilitas kana basa éta.
Platform ieu ngawengku komponén anu diperyogikeun pikeun ngembangkeun aplikasi dina basa Mojo, kalebet kompiler, runtime, cangkang REPL interaktif pikeun ngawangun sareng ngajalankeun program, debugger, add-on éditor Visual Studio Code (VS Code) kalayan input autocompletion, format kode, sareng panyorot sintaksis, sareng modul integrasi Jupyter pikeun ngawangun sareng ngajalankeun notebook Mojo. Pustaka standar Mojo sumber terbuka dina lisénsi Apache 2.0, kalayan pengecualian proyék LLVM anu ngamungkinkeun nyampur sareng kode anu dilisensikeun GPLv2. Kompiler direncanakeun bakal sumber terbuka saatos arsitéktur internal distabilisasi.
Basa Mojo dikembangkeun dina kapamimpinan Chris Lattner, pangadeg sareng lulugu arsiték proyék LLVM sareng panyipta basa pamrograman Swift. Sintaksis Mojo dumasar kana basa Python, sareng sistem jinisna caket sareng C / C ++. Proyék ieu touted salaku basa tujuan umum nu manjangkeun kamampuhan Python jeung kamampuhan programming sistem, cocog pikeun rupa-rupa pancén, sarta ngagabungkeun betah pamakéan pikeun ngembangkeun panalungtikan sarta prototyping gancang kalayan cocog pikeun produk tungtung-kinerja tinggi.
Kesederhanaan kahontal ngaliwatan pamakéan rumpaka Python akrab, sarta ngembangkeun produk ahir ieu facilitated ku kamampuhan pikeun compile kode mesin, mékanisme memori-aman, sarta pamakéan parabot akselerasi hardware. Pikeun ngahontal kinerja luhur, parallelization tina itungan dirojong ngagunakeun sagala sumberdaya hardware sistem hétérogén sadia dina sistem, kayaning GPUs, akselerator husus pikeun mesin learning jeung instruksi processor vektor (SIMD). Pikeun itungan intensif, parallelization na utilization sadaya sumberdaya komputasi ngamungkinkeun pikeun ngahontal kinerja punjul mun C / C ++ aplikasi.
Basa éta ngadukung ketikan statik sareng fitur anu aman-memori tingkat rendah anu ngingetkeun ka Rust, sapertos référénsi nyukcruk saumur hirup sareng pamariksaan pinjaman. Dina waktos anu sami, basa ogé nyayogikeun kasempetan pikeun padamelan tingkat rendah, contona, anjeun tiasa langsung ngaksés mémori dina modeu anu teu aman nganggo jinis Pointer, nelepon paréntah SIMD individu, atanapi aksés kana ekstensi hardware sapertos TensorCores sareng AMX.
Mojo tiasa dianggo dina modeu interpretasi nganggo JIT, sareng pikeun kompilasi kana file anu tiasa dieksekusi (AOT, sateuacanna). Compiler geus diwangun-di téknologi modern pikeun optimasi otomatis, cache sarta kompilasi disebarkeun. Kode sumber dina basa Mojo dirobih kana kode panengah tingkat rendah MLIR (Multi-Level Intermediate Representasi), dikembangkeun ku proyék LLVM. Kompiler ngamungkinkeun anjeun ngagunakeun rupa-rupa backends anu ngadukung MLIR pikeun ngahasilkeun kode mesin.
Parobihan dina Mojo 1.0.0b1 kalebet:
- Kecap konci "fn" geus teu dipaké deui—kecap konci "def" kudu dipaké pikeun ngadéklarasikeun fungsi (fitur "fn" jeung "def" geus digabungkeun, sarta "def" ngimplementasikeun semantik "fn" tanpa ngaluarkeun pengecualian).
- Implementasi panutupan parantos dihijikeun. Panutupan tanpa status ayeuna sacara otomatis dirobih janten fungsi tingkat luhur sareng tiasa dianggo salaku callback dina Foreign Function Interface (FFI). Dukungan pikeun panangkepan ref parantos ditambahkeun. Bendera "ipis" parantos ditambahkeun kana deklarasi fungsi pikeun nyatakeun jinis pointer fungsi saderhana tanpa panangkepan status.
- Pointer UnsafePointer ayeuna dicegah janten null sacara standar, sareng "Optional[UnsafePointer[…]]" kedah dianggo pikeun nanganan pointer null, ngaleungitkeun biaya overhead pikeun nanganan pointer null bari tetep aman dianggo dina FFI.
- Sacara standar, pamariksaan wates diaktipkeun dina kumpulan dina kode CPU (dina GPU, éta ditumpurkeun pikeun kinerja, tapi tiasa diaktipkeun ku cara ngawangun nganggo "mojo build -D ASSERT=all"). Dukungan pikeun nangtukeun nilai négatif dina indéks parantos dihentikeun ("x[-1]" dilarang, tapi "x[len(x)-1]" diidinan).
- Tipe NDBuffer parantos dihapus tina pustaka standar; TileTensor kedah dianggo.
- Pangrojong pikeun digawe sareng GPU ngalangkungan Metal graphics API dina sistem Apple parantos dilegaan (contona, parentah print() sareng matriks M5 ayeuna dirojong). Pangrojong pikeun akselerator AMD MI250X sareng NVIDIA B300 parantos ditambahkeun.
- Identifier primitif GPU (indéks thread sareng blok) parantos dipindahkeun pikeun mulangkeun Int tinimbang UInt.
- Kontéks CPU ('DeviceContext(api="cpu")') parantos janten stream-ordered. Fungsi enqueue_cpu_function() sareng enqueue_cpu_range() parantos ditambahkeun pikeun mastikeun palaksanaan tugas anu teratur.
- Tipe String sareng StringSlice ayeuna ngadukung klaster grafem (Unicode UAX #29), anu ngamungkinkeun itungan panjang anu leres sareng motong string anu ngandung emoji sareng karakter gabungan. Métode grafem() sareng count_grafem() parantos ditambahkeun, ogé sintaksis irisan "[grafem=…]".
- Ngalaksanakeun Compile-time Type Refinement pikeun sacara otomatis ngahususkeun tipe dina pernyataan "where", "if", sareng "assert" (ngaleungitkeun kabutuhan pikeun sacara éksplisit nangtukeun trait_downcast).
- API réfléksi terpadu diusulkeun, ngenalkeun fungsi anyar reflect[T]() anu mulangkeun Reflected[T] sareng ngagantikeun kulawarga fungsi struct_field_* sareng metode get_type_name() anu lami.
Sakaligus, MAX Framework 26.3 dirilis, nawiskeun platform pikeun pamekaran pembelajaran mesin. MAX Framework ngalengkepan toolkit Mojo ku alat-alat pikeun ngembangkeun sareng debugging aplikasi anu nganggo modél pembelajaran mesin dina rupa-rupa format (TensorFlow, PyTorch, ONNX, jsb.). Versi anyar MAX Framework nambihan generasi pidéo, dukungan anu dilegaan pikeun alur kerja multi-GPU, sareng kinerja interpreter anu ningkat sacara signifikan (sababaraha operasi ayeuna 10-20 kali langkung gancang).
sumber: opennet.ru
