Programovací jazyk Mojo, beta verze 1.0

Byla vydána první beta verze programovacího jazyka Mojo 1.0, která znamená stabilizaci jazyka a implementaci všech základních funkcí. Tato verze je považována za téměř připravenou k širokému použití. Finální verze Mojo 1.0 se očekává začátkem podzimu. Používání této větve vám umožní začít s vývojem velkých projektů bez obav z narušení kompatibility jazyka.

Platforma obsahuje komponenty nezbytné pro vývoj aplikací v jazyce Mojo, včetně kompilátoru, běhového prostředí, interaktivního REPL shellu pro tvorbu a spouštění programů, debuggeru, doplňku editoru Visual Studio Code (VS Code) s automatickým doplňováním vstupu, formátováním kódu a zvýrazňováním syntaxe a integračního modulu Jupyter pro tvorbu a spouštění poznámkových bloků Mojo. Standardní knihovna Mojo je open source pod licencí Apache 2.0 s výjimkou projektu LLVM, která umožňuje kombinování s kódem pod licencí GPLv2. Kompilátor by měl být open source, jakmile bude stabilizována interní architektura.

Jazyk Mojo je vyvíjen pod vedením Chrise Lattnera, zakladatele a hlavního architekta projektu LLVM a tvůrce programovacího jazyka Swift. Syntaxe Mojo je založena na jazyce Python a typový systém je blízký C/C++. Projekt je nabízen jako univerzální jazyk, který rozšiřuje možnosti Pythonu o možnosti systémového programování, je vhodný pro širokou škálu úloh a kombinuje snadné použití pro výzkumný vývoj a rychlé prototypování s vhodností pro vysoce výkonné koncové produkty.

Jednoduchosti je dosaženo použitím známé syntaxe Pythonu a vývoj finálních produktů je usnadněn schopností kompilace do strojového kódu, paměťově bezpečnými mechanismy a použitím nástrojů hardwarové akcelerace. Pro dosažení vysokého výkonu je podporována paralelizace výpočtů s využitím všech hardwarových prostředků heterogenních systémů dostupných v systému, jako jsou GPU, specializované akcelerátory pro strojové učení a instrukce vektorového procesoru (SIMD). Pro intenzivní výpočty umožňuje paralelizace a využití všech výpočetních zdrojů dosáhnout vyššího výkonu než aplikace C/C++.

Jazyk podporuje statické psaní a nízkoúrovňové paměťově bezpečné funkce připomínající Rust, jako je sledování životnosti referencí a kontrola výpůjček. Jazyk zároveň poskytuje příležitosti i pro nízkoúrovňovou práci, například je možné přímo přistupovat k paměti v nebezpečném režimu pomocí typu Pointer, volat jednotlivé instrukce SIMD nebo přistupovat k hardwarovým rozšířením jako TensorCores a AMX.

Mojo lze použít jak v režimu interpretace pomocí JIT, tak pro kompilaci do spustitelných souborů (AOT, předběžně). Kompilátor má zabudované moderní technologie pro automatickou optimalizaci, ukládání do mezipaměti a distribuovanou kompilaci. Zdrojový kód v jazyce Mojo je převeden na nízkoúrovňový střední kód MLIR (Multi-Level Intermediate Representation), vyvinutý projektem LLVM. Kompilátor umožňuje používat různé backendy, které podporují MLIR pro generování strojového kódu.

Změny v Mojo 1.0.0b1 zahrnují:

  • Klíčové slovo „fn“ bylo zastaralé – klíčové slovo „def“ by se mělo používat k deklaraci funkcí (funkce „fn“ a „def“ byly zkombinovány a „def“ implementuje sémantiku „fn“ bez vyvolání výjimek).
  • Implementace uzávěrů byla sjednocena. Bezstavové uzávěry se nyní automaticky převádějí na funkce nejvyšší úrovně a lze je použít jako zpětná volání v rozhraní Foreign Function Interface (FFI). Byla přidána podpora pro zachycení odkazů. Do deklarací funkcí byl přidán příznak „thin“ pro deklaraci jednoduchého typu ukazatele funkce bez zachycení stavu.
  • Ukazatele typu UnsafePointer nyní ve výchozím nastavení nemohou mít hodnotu null a pro jejich zpracování je nutné použít parametr „Optional[UnsafePointer[…]]“, čímž se eliminuje režijní zátěž spojená s manipulací s těmito ukazateli a zároveň je použití ve FFI bezpečné.
  • Ve výchozím nastavení je kontrola hranic v kolekcích v kódu CPU povolena (na GPU je z důvodu výkonu zakázána, ale lze ji povolit sestavením pomocí „mojo build -D ASSERT=all“). Podpora pro zadávání záporných hodnot v indexech byla ukončena („x[-1]“ je zakázáno, ale „x[len(x)-1]“ je povoleno).
  • Typ NDBuffer byl ze standardní knihovny odstraněn; místo něj by měl být použit TileTensor.
  • Byla rozšířena podpora pro práci s GPU prostřednictvím grafického API Metal na systémech Apple (například jsou nyní podporovány instrukce print() a maticové instrukce M5). Byla přidána podpora pro akcelerátory AMD MI250X a NVIDIA B300.
  • Primitivní identifikátory GPU (indexy vláken a bloků) byly přesunuty tak, aby vracely Int místo UInt.
  • Kontext CPU ('DeviceContext(api="cpu")') se nyní řadí podle streamu. Byly přidány funkce enqueue_cpu_function() a enqueue_cpu_range() pro zajištění uspořádaného provádění úloh.
  • Typy String a StringSlice nyní podporují shluky grafémů (Unicode UAX #29), což umožňuje správný výpočet délky a zkrácení řetězců obsahujících emoji a kombinované znaky. Byly přidány metody graphemes() a count_graphemes() a také syntaxe slice „[grapheme=…]“.
  • Implementováno zpřesnění typů během kompilace pro automatické zúžení typů v rámci příkazů „where“, „if“ a „assert“ (eliminuje nutnost explicitně specifikovat trait_downcast).
  • Je navrženo sjednocené API pro reflexi, které zavádí novou funkci reflect[T](), jež vrací Reflected[T] a nahrazuje rodinu funkcí struct_field_* a staré metody get_type_name().

Současně byl vydán MAX Framework 26.3, který nabízí platformu pro vývoj strojového učení. MAX Framework doplňuje sadu nástrojů Mojo o nástroje pro vývoj a ladění aplikací, které využívají modely strojového učení v různých formátech (TensorFlow, PyTorch, ONNX atd.). Nová verze MAX Frameworku přidává generování videa, rozšířenou podporu pro pracovní postupy s více GPU a výrazně vylepšený výkon interpretu (některé operace jsou nyní 10–20krát rychlejší).

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster