ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΏΠ΅ΡΠ²ΡΠΉ Π±Π΅ΡΠ° Π²ΡΠΏΡΡΠΊ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Mojo 1.0, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ·Π½Π°ΠΌΠ΅Π½ΠΎΠ²Π°Π» ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ ΡΠ·ΡΠΊΠ° ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΅Ρ Π±Π°Π·ΠΎΠ²ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ. ΠΡΠΏΡΡΠΊ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠΈ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΊ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π€ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ· Mojo 1.0 ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΎΡΠ΅Π½ΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π½Π°ΡΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΊΡΡΠΏΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, Π½Π΅ ΠΎΠΏΠ°ΡΠ°ΡΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π² ΡΠ·ΡΠΊΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π½Π°ΡΡΡΠ°ΡΡΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ.
Π ΡΠΎΡΡΠ°Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Mojo, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, runtime, ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΡΡ REPL-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΡ ΠΊΠΎΠ΄Π° Visual Studio Code (VS Code) Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π²ΠΎΠ΄Π°, ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°, ΠΌΠΎΠ΄ΡΠ»Ρ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ Jupyter Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° Mojo notebook. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Mojo ΠΎΡΠΊΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0 c ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° LLVM, Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡΠΈΠΌΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠ΅ Ρ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv2. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΠ»Π°Π½ΠΈΡΡΡΡ ΠΎΡΠΊΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΈΠΈ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
A lingua Mojo hè sviluppata sottu a guida di Chris Lattner, fundatore è architettu capu di u prughjettu LLVM è creatore di a lingua di prugrammazione Swift. A sintassi di Mojo hè basatu annantu à a lingua Python, è u sistema di tipu hè vicinu à C/C++. U prugettu hè presentatu cum'è una lingua di scopu generale chì estende e capacità di Python cù capacità di prugrammazione di sistemi, hè adattatu per una larga gamma di compiti, è unisce a facilità d'utilizazione per u sviluppu di ricerca è a prototipazione rapida cù l'adattabilità per i prudutti finali d'altu rendiment.
A simplicità hè ottenuta per mezu di l'usu di a sintassi familiare di Python, è u sviluppu di i prudutti finali hè facilitatu da a capacità di cumpilà à codice macchina, meccanismi sicuri di memoria, è l'usu di strumenti di accelerazione hardware. Per ottene un rendimentu altu, a parallelizazione di i calculi hè supportata utilizendu tutte e risorse hardware di sistemi eterogenei dispunibuli in u sistema, cum'è GPU, acceleratori specializati per l'apprendimentu di machine è istruzzioni di processore vettoriale (SIMD). Per i calculi intensivi, a parallelizazione è l'utilizazione di tutte e risorse di l'informatica permette di ottene un rendimentu superiore à l'applicazioni C/C++.
A lingua accumpagna a tipografia statica è e funzioni di salvezza di memoria di pocu livellu chì ricordanu Rust, cum'è u seguimentu di a vita di riferimentu è u verificatore di prestitu. à u stessu tempu, a lingua furnisce ancu opportunità per u travagliu di livellu bassu, per esempiu, hè pussibule accede direttamente à a memoria in modu inseguru cù u tipu Pointer, chjamate struzzioni SIMD individuali, o accessu à estensioni hardware cum'è TensorCores è AMX.
Mojo pò esse usatu sia in u modu di interpretazione cù JIT, sia per a compilazione in i fugliali eseguibili (AOT, prima di u tempu). U compilatore hà tecnulugii muderni integrati per ottimisazione automatica, caching è compilazione distribuita. U codice sorgente in a lingua Mojo hè cunvertitu in codice intermediu bassu MLIR (Multi-Level Intermediate Representation), sviluppatu da u prughjettu LLVM. U compilatore permette di utilizà diversi backends chì supportanu MLIR per generà codice macchina.
Π‘ΡΠ΅Π΄ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² 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
