Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ LLVM Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ язык программирования Mojo

ΠšΡ€ΠΈΡ Π›Π°Ρ‚Π½Π΅Ρ€ (Chris Lattner), ΠΎΡΠ½ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ Π³Π»Π°Π²Π½Ρ‹ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ LLVM, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ языка программирования Swift, ΠΈ Π’ΠΈΠΌ Дэвис (Tim Davis), Π±Ρ‹Π²ΡˆΠΈΠΉ Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ AI-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Google, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Tensorflow ΠΈ JAX, прСдставили Π½ΠΎΠ²Ρ‹ΠΉ язык программирования Mojo, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰ΠΈΠΉ простоту примСнСния для ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΈ быстрого создания ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² с ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ для формирования Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². ΠŸΠ΅Ρ€Π²ΠΎΠ΅ достигаСтся благодаря использованию ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ синтаксиса языка Python, Π° Π²Ρ‚ΠΎΡ€ΠΎΠ΅ Π·Π° счёт возмоТности компиляции Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² бСзопасной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΈ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡŽ срСдств для Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ускорСния вычислСний.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ сфокусирован Π½Π° использовании для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ Π² области машинного обучСния, Π½ΠΎ ΠΏΡ€ΠΈ этом прСподносится ΠΊΠ°ΠΊ язык ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΉ возмоТности языка Python срСдствами систСмного программирования ΠΈ подходящий для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ ΠΊΡ€ΡƒΠ³Π° Π·Π°Π΄Π°Ρ‡. НапримСр, язык ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ для Ρ‚Π°ΠΊΠΈΡ… областСй, ΠΊΠ°ΠΊ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Mojo являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ указания emoji-символа «🔥» Π² качСствС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для Ρ„Π°ΠΉΠ»ΠΎΠ² с ΠΊΠΎΠ΄ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, «helloworld.🔥»), ΠΏΠΎΠΌΠΈΠΌΠΎ тСкстового Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ «.mojo».

Π’ настоящСС врСмя язык находится Π½Π° стадии интСнсивного развития ΠΈ для тСстирования ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ online-интСрфСйс. ΠžΠ±ΠΎΡΠΎΠ±Π»Π΅Π½Π½Ρ‹Π΅ сборки для запуска Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… систСмах ΠΎΠ±Π΅Ρ‰Π°ΡŽΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ·Π΄Π½Π΅Π΅, послС получСния ΠΎΡ‚Π·Ρ‹Π²ΠΎΠ² ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ web-окруТСния. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты компилятора, JIT ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… связанных с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ проСктирования Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ (модСль развития Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ° Π·Π° Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ двСрями Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ ΡΡ‚Π°Π΄ΠΈΡŽ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ LLVM, Clang ΠΈ Swift). Π’Π°ΠΊ ΠΊΠ°ΠΊ синтаксис Mojo основан Π½Π° языкС Python, Π° систСма Ρ‚ΠΈΠΏΠΎΠ² Π±Π»ΠΈΠ·ΠΊΠ° ΠΊ C/C++, Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ инструмСнтарий для упрощСния ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° Π½Π° Mojo ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², написанных Π½Π° C/C++ ΠΈ Python, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π³ΠΈΠ±Ρ€ΠΈΠ΄Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ΄ Π½Π° Python ΠΈ Mojo.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ рассчитан Π½Π° ΠΏΡ€ΠΈΠ²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ вычислСний ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ Π² систСмС Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… рСсурсов Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½Ρ‹Ρ… систСм. НапримСр, для выполнСния ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° языкС Mojo ΠΈ распараллСливания вычислСний ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ GPU, спСциализированныС ускоритСли для машинного обучСния ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ процСссорныС инструкции (SIMD). Π’ качСствС ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ развития ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ подмноТСства языка Python вмСсто ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ CPython упоминаСтся ориСнтация Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ, интСграция возмоТностСй систСмного программирования ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ ΠΈΠ½ΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ Π½Π° GPU ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ускоритСлях. ΠŸΡ€ΠΈ этом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Mojo Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ совмСстимости с CPython.

Mojo ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ с использованиСм JIT, Ρ‚Π°ΠΊ ΠΈ для компиляции Π² исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ (AOT, ahead-of-time). Π’ компилятор встроСны соврСмСнныС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ автоматичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ распрСдСлённой компиляции. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ тСксты Π½Π° языкС Mojo ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ MLIR (Multi-Level Intermediate Representation), Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ LLVM ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ возмоТности для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π³Ρ€Π°Ρ„Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ позволяСт ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ машинного ΠΊΠΎΠ΄Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ бэкСнды, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ MLIR.

ЗадСйствованиС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² для ускорСния вычислСний Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΏΡ€ΠΈ интСнсивных вычислСниях прСвосходящСй прилоТСния Π½Π° C/C++. НапримСр, ΠΏΡ€ΠΈ тСстировании прилоТСния для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ мноТСства ΠœΠ°Π½Π΄Π΅Π»ΡŒΠ±Ρ€ΠΎΡ‚Π°, скомпилированноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° языкС Mojo ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ AWS (r7iz.metal-16xl) оказалось Π² 6 Ρ€Π°Π· быстрСС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° C++ (0.03 сСк. ΠΏΡ€ΠΎΡ‚ΠΈΠ² 0.20 сСк.), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² 35 тысяч Ρ€Π°Π· быстрСС прилоТСния Π½Π° Python ΠΏΡ€ΠΈ использовании ΡˆΡ‚Π°Ρ‚Π½ΠΎΠ³ΠΎ CPython 3.10.9 (0.03 сСк. ΠΏΡ€ΠΎΡ‚ΠΈΠ² 1027 сСк.) ΠΈ Π² 1500 Ρ€Π°Π· быстрСС ΠΏΡ€ΠΈ использовании PYPY (0.03 сСк. ΠΏΡ€ΠΎΡ‚ΠΈΠ² 46.1 сСк.).

ΠŸΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² области Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ машинного обучСния, AI-стСк Modular Inference Engine, написанный Π½Π° языкС Mojo, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° Π±Π°Π·Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ TensorFlow оказался Π½Π° систСмС с процСссором Intel Π² 3 Ρ€Π°Π·Π° быстрСС ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ языковой ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π² 6.4 Ρ€Π°Π·Π° быстрСС ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ формирования Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΈ Π² 2.1 Ρ€Π°Π·Π° быстрСС ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с модСлями для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΈ использовании процСссоров AMD Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΏΡ€ΠΈ использовании Mojo составил 3.2, 5 ΠΈ 2.2 Ρ€Π°Π·Π°, Π° ΠΏΡ€ΠΈ использовании процСссоров ARM — 5.3, 7.5 ΠΈ 1.7 Ρ€Π°Π·, соотвСтствСнно. РСшСниС Π½Π° Π±Π°Π·Π΅ PyTorch отстало ΠΎΡ‚ Mojo Π² 1.4, 1.1 ΠΈ 1.5 Ρ€Π°Π· Π½Π° CPU Intel, Π² 2.1, 1.2 ΠΈ 1.5 Ρ€Π°Π· Π½Π° CPU AMD ΠΈ Π² 4, 4.3 ΠΈ 1.3 Ρ€Π°Π·Π° Π½Π° CPU ARM.

Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ LLVM Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ язык программирования Mojo

Π―Π·Ρ‹ΠΊ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ срСдства для бСзопасной Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ возмоТности языка Rust, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ отслСТиваниС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ссылок ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° заимствования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (borrow checker). Помимо срСдств для бСзопасной Ρ€Π°Π±ΠΎΡ‚Ρ‹ с указатСлями Π² языкС доступны ΠΈ возмоТности для Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ прямоС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ памяти Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ unsafe с использованиСм Ρ‚ΠΈΠΏΠ° Pointer, Π²Ρ‹Π·ΠΎΠ² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… SIMD-инструкций ΠΈΠ»ΠΈ доступ ΠΊ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ TensorCores ΠΈ AMX.

Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ LLVM Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ язык программирования Mojo

Для упрощСния раздСлСния классичСского ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Python-ΠΊΠΎΠ΄Π° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ с явным ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ² для всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово «fn» вмСсто «def». Аналогично для классов, ΠΏΡ€ΠΈ нСобходимости статичСской ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти Π²ΠΎ врСмя компиляции (ΠΊΠ°ΠΊ Π² Π‘ΠΈ) вмСсто «class» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ «struct». Π’Π°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ простой ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π½Π° языках C/C++, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ cos ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ math ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ «from «math.h» import cos».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ