ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΏΠ΅ΡΠ²ΡΠΉ Π±Π΅ΡΠ° Π²ΡΠΏΡΡΠΊ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Mojo 1.0, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ·Π½Π°ΠΌΠ΅Π½ΠΎΠ²Π°Π» ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ ΡΠ·ΡΠΊΠ° ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Ρ Π±Π°Π·ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. ΠΡΠΏΡΡΠΊ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠΈ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π€ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ· Mojo 1.0 ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΎΡΠ΅Π½ΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΡΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, Π½Π΅ ΠΎΠΏΠ°ΡΠ°ΡΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π² ΡΠ·ΡΠΊΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½Π°ΡΡΡΠ°ΡΡΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ.
Π ΡΠΎΡΡΠ°Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Mojo, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, runtime, ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ REPL-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ ΠΊΠΎΠ΄Π° Visual Studio Code (VS Code) Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°, ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°, ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ Jupyter Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° Mojo notebook. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Mojo ΠΎΡΠΊΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0 c ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° LLVM, Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΠΈΠΌΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv2. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΠ»Π°Π½ΠΈΡΡΡΡ ΠΎΡΠΊΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΠΈ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
Basa Mojo lagi dikembangake ing pimpinan Chris Lattner, pangadeg lan pangareping arsitek proyek LLVM lan pangripta basa pamrograman Swift. Sintaksis Mojo adhedhasar basa Python, lan sistem jinis cedhak karo C / C ++. Proyèk iki disebut-sebut minangka basa tujuan umum sing ngluwihi kemampuan Python karo kemampuan program sistem, cocok kanggo sawetara saka sudhut tugas, lan nggabungke ease saka nggunakake kanggo pangembangan riset lan prototyping cepet karo cocog kanggo produk mburi kinerja dhuwur.
Gamblang wis ngrambah liwat nggunakake sintaks Python menowo, lan pangembangan produk final wis difasilitasi dening kemampuan kanggo ngumpulake kode mesin, mekanisme memori-aman, lan nggunakake piranti akselerasi hardware. Kanggo entuk kinerja dhuwur, parallelization saka petungan didhukung nggunakake kabeh sumber daya hardware saka sistem heterogen kasedhiya ing sistem, kayata GPUs, akselerator khusus kanggo machine learning lan instruksi prosesor vektor (SIMD). Kanggo petungan intensif, parallelization lan pemanfaatan kabeh sumber daya komputasi ndadekake iku bisa kanggo entuk kinerja unggul C / C ++ aplikasi.
Basa kasebut ndhukung ngetik statis lan fitur aman memori tingkat rendah kaya Rust, kayata referensi tracking umur lan pemeriksa utang. Ing wektu sing padha, basa uga menehi kesempatan kanggo karya tingkat kurang, Contone, iku bisa kanggo langsung ngakses memori ing mode aman nggunakake jinis Pointer, nelpon instruksi SIMD individu, utawa akses kanggo ekstensi hardware kayata TensorCores lan AMX.
Mojo bisa digunakake ing mode interpretasi nggunakake JIT, lan kanggo kompilasi menyang file eksekusi (AOT, ahead-of-time). Compiler nduweni teknologi modern sing dibangun kanggo optimasi otomatis, caching lan kompilasi sing disebarake. Kode sumber ing basa Mojo diowahi dadi kode menengah tingkat rendah MLIR (Multi-Level Intermediate Representation), sing dikembangake dening proyek LLVM. Compiler ngidini sampeyan nggunakake macem-macem backend sing ndhukung MLIR kanggo ngasilake kode mesin.
Π‘ΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Mojo 1.0.0b1:
- ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Β«fnΒ» ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΎ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ β Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ Β«defΒ» (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Β«fnΒ» ΠΈ Β«defΒ» ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Ρ, ΠΈ Π² Β«defΒ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ° Β«fnΒ» Π±Π΅Π· Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ).
- Π£Π½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΉ (closure). ΠΠ΅ ΡΡΠΈΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ (stateless closure) ΡΠ΅ΠΏΠ΅ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΡΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ callback-Π²ΡΠ·ΠΎΠ²Ρ Π² FFI (Foreign Function Interface). ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π·Π°Ρ Π²Π°ΡΠ° ΠΏΠΎ ΡΡΡΠ»ΠΊΠ΅ (ref capture). ΠΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΠΏΡΠΈΠ·Π½Π°ΠΊ Β«thinΒ» Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅Π· Π·Π°Ρ Π²Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ½ΠΈΡ.
- Π£ΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Ρ ΡΠΈΠΏΠΎΠΌ UnsafePointer ΡΠ΅ΠΏΠ΅ΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ null ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ null-ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Β«Optional[UnsafePointer[β¦]]Β», ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΊΠ»ΡΡΠΈΡΡ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ null-ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠΌΠΈ ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² FFI.
- ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ Π΄Π»Ρ CPU Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π³ΡΠ°Π½ΠΈΡ (Π½Π° GPU ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΡΠΊΠ»ΡΡΠ΅Π½Π° Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Ρ Β«mojo build -D ASSERT=allΒ»). ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ (Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ Β«x[-1]Β», Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Β«x[len(x)-1]Β»).
- ΠΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠ΄Π°Π»ΡΠ½ ΡΠΈΠΏ NDBuffer, Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TileTensor.
- Π Π°ΡΡΠΈΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π±ΠΎΡΡ Ρ GPU ΡΠ΅ΡΠ΅Π· Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ API Metal Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Apple (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° print() ΠΈ ΠΌΠ°ΡΡΠΈΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉ M5). ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠΊΠΎΡΠΈΡΠ΅Π»Π΅ΠΉ AMD MI250X ΠΈ NVIDIA B300.
- ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² GPU (ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈ Π±Π»ΠΎΠΊΠΎΠ²) ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Ρ Π½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Int Π²ΠΌΠ΅ΡΡΠΎ UInt.
- ΠΠΎΠ½ΡΠ΅ΠΊΡΡ CPU (βDeviceContext(api=Β»cpuΒ»)β) ΡΡΠ°Π» ΠΏΠΎΡΠΎΠΊΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΡΠΌ (stream-ordered). ΠΠ»Ρ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ enqueue_cpu_function() ΠΈ enqueue_cpu_range().
- Π ΡΠΈΠΏΠ°Ρ String ΠΈ StringSlice Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π³ΡΠ°ΡΠ΅ΠΌΠ½ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² (Unicode UAX #29), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π²ΡΡΠΈΡΠ»ΡΡΡ Π΄Π»ΠΈΠ½Ρ ΠΈ ΠΎΠ±ΡΠ΅Π·Π°ΡΡ ΡΡΡΠΎΠΊΠΈ Ρ emoji ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ graphemes() ΠΈ count_graphemes(), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ»Π°ΠΉΡΠΎΠ² Β«[grapheme=β¦]Β».
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡΡΠΎΡΠ½Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² (Type Refinement) Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Π²Π½ΡΡΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Β«whereΒ», Β«ifΒ» ΠΈ Β«assertΒ» (ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΈΡ trait_downcast).
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ API ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π½ΠΎΠ²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ reflect[T](), Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ Reflected[T] ΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡΠ°Ρ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ struct_field_* ΠΈ ΡΡΠ°ΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ get_type_name().
ΠΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ Π²ΡΠΏΡΡΠΊ Π΄Π²ΠΈΠΆΠΊΠ° MAX Framework 26.3, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠ΅Π³ΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΎΠΊ Π² ΠΎΠ±Π»Π°ΡΡΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. MAX Framework Π΄ΠΎΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Mojo ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ
ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΎΡΠΌΠ°ΡΠ°Ρ
(TensorFlow, PyTorch, ONNX ΠΈ Ρ.ΠΏ.). Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ MAX Framework Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π²ΠΈΠ΄Π΅ΠΎ, ΡΠ°ΡΡΠΈΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π±ΠΎΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
GPU, Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° (Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΡΠ°Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π±ΡΡΡΡΠ΅Π΅ Π² 10-20 ΡΠ°Π·).
Source: opennet.ru
