Otwarcie standardowej biblioteki języka Mojo. Aktualizacja zestawu narzędzi Mojo 24.2

Twórcy języka programowania Mojo rozpoczęli przekształcanie wyników projektu w oprogramowanie typu open source. Pierwszą udostępnioną na zasadzie open source biblioteką jest biblioteka standardowa, która jest teraz dostępna na licencji Apache 2.0 z wyjątkami od projektu LLVM, które pozwalają na łączenie jej z kodem objętym licencją GPLv2. Oprócz publikowania kodu, proces rozwoju przesunął się w stronę otwartości i możliwości przesyłania zmian wprowadzanych przez osoby trzecie za pośrednictwem żądań ściągnięcia do GitHub. Planuje się udostępnienie kodu źródłowego kompilatora jako open source po zakończeniu projektowania jego architektury wewnętrznej.

Repozytorium zawiera dwie gałęzie kodu standardowej biblioteki Mojo: gałąź główną, która jest zsynchronizowana z najnowszą stabilną wersją Mojo, oraz gałąź nocną, która odzwierciedla bieżący proces rozwoju i jest zsynchronizowana z nocnymi kompilacjami Mojo. Zachęcamy do korzystania z gałęzi nocnej wszystkich współpracowników, którzy chcą włączyć się w rozwój projektu i wprowadzać swoje zmiany. Jednocześnie niektóre moduły biblioteczne nie są jeszcze otwarte, ale po pewnym czasie planowane jest przeniesienie pozostałego, zamkniętego kodu do otwartego repozytorium. Kod szybko rozwijających się modułów wymagających dodatkowej stabilizacji, modułów przeznaczonych do refaktoryzacji i modułów wymagających dodatkowego przeglądu i przeróbki ze względu na ich powiązanie z projektami zastrzeżonymi pozostaje zamknięty.

Jednocześnie opublikowano wersję Mojo SDK 24.2, umożliwiającą kompilację projektów w systemie lokalnym, oraz MAX Engine 24.2, oferującą platformę do tworzenia aplikacji w oparciu o uczenie maszynowe. Mojo SDK zawiera komponenty niezbędne do tworzenia aplikacji w języku Mojo, w tym kompilator, środowisko uruchomieniowe, interaktywną powłokę REPL do budowania i uruchamiania programów, debugger, dodatek do edytora kodu Visual Studio Code (VS Code) z obsługą autouzupełniania danych wejściowych, formatowania kodu i podświetlania składni, a także moduł integracji z Jupyter do budowania i uruchamiania notatników Mojo. Silnik MAX uzupełnia SDK o narzędzia do tworzenia i debugowania aplikacji wykorzystujących modele uczenia maszynowego w różnych formatach (TensorFlow, PyTorch, ONNX itp.). Kompilacje Mojo SDK i MAX Engine są przygotowane dla tej platformy. Linux и macOS.

Oto najważniejsze zmiany w Mojo 24.2:

  • Struktury i inne typy nominalne można teraz niejawnie mapować na cechy. Na przykład każda struktura implementująca metodę __str__() jest zgodna z typem Stringable i może być używana z funkcją str().
  • Narzędzia do zapewniania zgodności z Pythonem dodały obsługę przekazywania argumentów opartych na słowach kluczowych do funkcji Pythona. Na przykład: „plt.plot((5, 10), (10, 15), color="red")”
  • Dodano obsługę przekazywania zmiennej liczby argumentów do funkcji, określonej poprzez przypisanie słów kluczowych. Na przykład „print_nicely(a=7, y=8)”.
  • Typ DynamicVector został przemianowany na List i przeniesiony do modułu collections.list. Dodano możliwość generowania listy na podstawie dowolnej liczby wartości, na przykład „var numbers = List[Int](1, 2, 3)”.
  • Funkcja print() została zaktualizowana o nazwane parametry sep i end, których można używać do określania wartości separatora oraz końcowego wyniku. Na przykład wykonanie polecenia print("Hello", "Mojo", sep=", ", end="!!!\n") spowoduje wyświetlenie komunikatu "prints Hello, Mojo!!!".

Projektem Mojo kieruje Chris Lattner, założyciel i główny architekt projektu LLVM oraz twórca języka programowania Swift. Składnia Mojo oparta jest na języku Python, a system typów zbliżony jest do C/C++. Projekt przedstawiono jako język ogólnego przeznaczenia, który rozszerza możliwości języka Python o narzędzia programowania systemowego, nadaje się do szerokiego zakresu zadań i łączy w sobie łatwość użytkowania w pracach badawczo-rozwojowych i szybkim prototypowaniu z przydatnością do tworzenia wydajnych produktów końcowych.

Prostotę osiągnięto dzięki wykorzystaniu znanej składni języka Python, a tworzenie produktów końcowych ułatwiono dzięki możliwości kompilacji do kodu maszynowego, mechanizmom bezpieczeństwa pamięci oraz wykorzystaniu narzędzi obliczeniowych przyspieszanych sprzętowo. Aby osiągnąć wysoką wydajność, obliczenia równoległe są obsługiwane z wykorzystaniem wszystkich dostępnych zasobów sprzętowych systemów heterogenicznych, takich jak procesory GPU, specjalistyczne akceleratory uczenia maszynowego i instrukcje procesora wektorowego (SIMD). W przypadku intensywnych obliczeń, paralelizacja i wykorzystanie wszystkich zasobów obliczeniowych umożliwiają osiągnięcie wydajności przewyższającej aplikacje C/C++.

Język obsługuje typizację statyczną i funkcje bezpieczeństwa pamięci niskiego poziomu podobne do tych, które znajdziemy w języku Rust, takie jak śledzenie czasu życia referencji i sprawdzanie pożyczeń. Jednocześnie język ten udostępnia również możliwości wykonywania zadań niskiego poziomu, na przykład bezpośredni dostęp do pamięci w trybie niebezpiecznym przy użyciu typu Pointer, wywoływanie poszczególnych instrukcji SIMD lub dostęp do rozszerzeń sprzętowych, takich jak TensorCores i AMX.

Mojo można używać zarówno w trybie interpretowanym JIT, jak i do kompilacji do plików wykonywalnych (AOT, ahead-of-time). Kompilator wyposażono w nowoczesne technologie automatycznej optymalizacji, buforowania i kompilacji rozproszonej. Kod źródłowy Mojo został przekonwertowany do niskopoziomowego kodu pośredniego MLIR (Multi-Level Intermediate Representation), opracowanego przez projekt LLVM. Kompilator pozwala na wykorzystanie różnych zapleczy obsługujących MLIR do generowania kodu maszynowego.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster