Otevření standardní knihovny jazyka Mojo. Aktualizace nástrojů Mojo 24.2

Vývojáři programovacího jazyka Mojo zahájili přenos prací projektu do oblasti otevřeného softwaru. Prvním krokem je otevření kódu standardní knihovny, který je nyní dostupný pod licencí Apache 2.0 s výjimkami z projektu LLVM, umožňujícími míchání se kódem pod licencí GPLv2. Kromě publikace kódu se proces vývoje přesunul směrem k otevřenosti a možnosti předávání externích změn prostřednictvím zasílání pull-requestů na GitHub. Zdrojové kódy překladače plánují otevřít po dokončení návrhu vnitřní architektury.

V repozitáři byly vytvořeny dvě větve s kódem standardní knihovny Mojo: větev main, synchronizovaná s posledním stabilním vydáním Mojo, a větev nightly, odrážející aktuální proces vývoje a synchronizovaná s nočními sestaveními Mojo. Větev nightly se doporučuje používat účastníkům, kteří se chtějí zapojit do vývoje a sdílet své změny. Přesto některé moduly knihovny zatím nejsou otevřeny, ale po nějaké době plánují přesunout zbývající uzavřený kód také do otevřeného repozitáře. Hlavně uzavřený zůstává kód rychle se vyvíjejících modulů, které vyžadují dodatečnou stabilizaci, modulů, pro které je plánováno refaktoring, a modulů, které vyžadují dodatečné posouzení a přepracování kvůli spojení s proprietárními projekty.

Současně byl zveřejněn nástroj Mojo SDK 24.2, který umožňuje kompilaci projektů na místním systému, a vydání enginu MAX Engine 24.2, který nabízí platformu pro vývoj v oblasti strojového učení. Sestava Mojo SDK zahrnuje komponenty potřebné pro vývoj aplikací v jazyce Mojo, včetně překladače, runtime, interaktivní REPL prostředí pro sestavení a spuštění programů, debugger, plugin pro editor kódu Visual Studio Code (VS Code) s podporou automatického doplňování vstupu, formátování kódu a zvýraznění syntaxe, modul pro integraci s Jupyter pro sestavení a spuštění Mojo notebooku. MAX Engine doplňuje SDK nástroji pro vývoj a debugging aplikací využívajících modely strojového učení v různých formátech (TensorFlow, PyTorch, ONNX atd.). Sestavení Mojo SDK a MAX Engine jsou připravena pro platformy Linux a macOS.

Mezi nejvýraznějšími změnami v Mojo 24.2:

  • Struktury a další nominální typy nyní mohou implicitně splňovat protokoly. Například jakákoli struktura, pro kterou je implementována metoda __str__(), implicitně splňuje protokol Stringable a může být použita s funkcí str().
  • Do nástrojů pro zajištění kompatibility s kódem v jazyce Python byla přidána podpora předávání argumentů na základě klíčových slov do funkce Python. Například „plt.plot((5, 10), (10, 15), color=‚red‘)“
  • Byla přidána podpora předávání proměnného počtu argumentů, které jsou určeny pomocí přiřazení klíčových slov. Například „print_nicely(a=7, y=8)“.
  • Typ DynamicVector byl přejmenován na List a přesunut do modulu collections.list. Byla přidána možnost vytvoření seznamu na základě libovolného počtu hodnot, například „var numbers = List[Int](1, 2, 3)“.
  • Do funkce print() byly přidány pojmenované parametry sep a end, pomocí kterých lze nastavit hodnoty oddělovače a koncového výstupu. Například provedení print(„Hello“, „Mojo“, sep=„, “, end=„!!!\n“) povede k výstupu „prints Hello, Mojo!!!“.

Projekt Mojo se vyvíjí 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 systém typů je blízký C/C++. Projekt je prezentován jako jazyk obecného použití, který rozšiřuje schopnosti jazyka Python prostředky systémového programování, vhodný pro širokou škálu úloh a spojující jednoduchost použití pro výzkumné projekty a rychlé prototypování s využitelností pro vytváření vysoce výkonných konečných produktů.

Jednoduchost je dosažena díky použití známé syntaxe jazyka Python, zatímco možnost kompilace do strojového kódu, mechanismy bezpečné práce s pamětí a využití prostředků pro hardwarové zrychlení výpočtů přispívají k vývoji konečných produktů. Pro dosažení vysokého výkonu je podporováno paralelizování výpočtů s využitím všech dostupných hardwarových zdrojů heterogenních systémů, jako jsou GPU, specializované akcelerátory pro strojové učení a vektorové procesorové instrukce (SIMD). V intenzivních výpočtech paralelizování a využití všech výpočetních zdrojů umožňuje dosáhnout výkonu, který převyšuje aplikace v C/C++.

Jazyk podporuje statickou typizaci a prostředky pro bezpečnou nízkoúrovňovou práci s pamětí, podobně jako možnosti jazyka Rust, jako je sledování životnosti referencí a kontrola půjčování proměnných (borrow checker). Přitom jsou v jazyce k dispozici i možnosti pro nízkoúrovňovou práci, například je možné přímo přistupovat k paměti v režimu unsafe s použitím typu Pointer, volat jednotlivé SIMD-instrukce nebo mít přístup k hardwarovým rozšířením, jako jsou TensorCores a AMX.

Mojo může být používán jak v režimu interpretace s využitím JIT, tak pro kompilaci do spustitelných souborů (AOT, ahead-of-time). Kompilátor je vybaven moderními technologiemi automatické optimalizace, caching a distribuované kompilace. Zdrojový kód v jazyce Mojo je přetvářen na nízkoúrovňový mezikód MLIR (Multi-Level Intermediate Representation), vyvíjený projektem LLVM. Kompilátor umožňuje použít pro generaci strojového kódu různé backendy podporující MLIR.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster