Deschiderea bibliotecii standard a limbajului Mojo. Actualizarea uneltelor Mojo 24.2

Dezvoltatorii limbajului de programare Mojo au început să transfere lucrările proiectului în domeniul software-ului deschis. Prima parte deschisă este codul bibliotecii standard, care este acum disponibil sub licența Apache 2.0, cu excepțiile proiectului LLVM care permit combinarea cu codul sub licența GPLv2. Pe lângă publicarea codului, procesul de dezvoltare s-a mutat spre transparență și capacitatea de a transmite modificări externe prin trimiterea de pull-request-uri pe GitHub. Codul sursă al compilatorului este planificat să fie deschis după finalizarea proiectării arhitecturii interne.

În repository au fost create două ramuri cu codul bibliotecii standard Mojo: ramura main, sincronizată cu ultima versiune stabilă a Mojo, și ramura nightly, care reflectă procesul actual de dezvoltare și este sincronizată cu versiunile nightly ale Mojo. Ramura nightly este recomandată pentru participanții care doresc să se alăture dezvoltării și să împărtășească modificările lor. Parte din modulele bibliotecii nu sunt încă deschise, dar într-o anumită perioadă, codul rămas închis este, de asemenea, planificat să fie mutat în repository-ul deschis. În general, codul modulelor în dezvoltare rapidă, care necesită o stabilizare suplimentară, modulele pentru care este planificat un refactoring și modulele care necesită o recenzare și o revizuire suplimentară din cauza legăturilor cu proiectele proprietare rămân închise.

În același timp, a fost publicat instrumentul Mojo SDK 24.2, care permite compilarea proiectelor pe sistemul local, și a fost lansat motorul MAX Engine 24.2, care oferă o platformă pentru dezvoltări în domeniul învățării automate. Mojo SDK include componente necesare pentru dezvoltarea aplicațiilor în limbajul Mojo, inclusiv compilator, runtime, o interfață REPL interactivă pentru construirea și rularea programelor, un debugger, un plugin pentru editorul de cod Visual Studio Code (VS Code) care suportă completarea automată, formatarea codului și evidențierea sintaxei, precum și un modul pentru integrarea cu Jupyter pentru construirea și rularea notebook-urilor Mojo. MAX Engine completează SDK-ul cu instrumente pentru dezvoltarea și depanarea aplicațiilor care folosesc modele de învățare automată în diverse formate (TensorFlow, PyTorch, ONNX etc.). Versiunile Mojo SDK și MAX Engine sunt pregătite pentru platformele Linux și macOS.

Printre cele mai notabile schimbări în Mojo 24.2:

  • Structurile și alte tipuri nominale pot acum să corespundă implicit tipurilor. De exemplu, orice structură pentru care este implementată metoda __str__() corespunde implicit tipului Stringable și poate fi utilizată cu funcția str().
  • În instrumentele pentru asigurarea compatibilității cu codul în limbajul Python a fost adăugată suportul pentru transmiterea argumentelor bazate pe cuvinte cheie în funcțiile Python. De exemplu, „plt.plot((5, 10), (10, 15), color=„red”)”
  • A fost adăugat suportul pentru transmiterea în funcție a unui număr variabil de argumente, specificate prin alocarea cuvintelor cheie. De exemplu, „print_nicely(a=7, y=8)”.
  • Tipul DynamicVector a fost redenumit în List și mutat în modulul collections.list. A fost adăugată posibilitatea de a forma o listă pe baza unui număr arbitrar de valori, de exemplu, „var numbers = List[Int](1, 2, 3)”.
  • Funcției print() i-au fost adăugate parametrii numiți sep și end, prin care se pot specifica valorile separatorului și ale ieșirii finale. De exemplu, executarea print(„Hello”, „Mojo”, sep=„, ”, end=„!!!\n”) va produce ieșirea „prints Hello, Mojo!!!”.

Proiectul Mojo se dezvoltă sub conducerea lui Chris Lattner, fondatorul și arhitectul-șef al proiectului LLVM și creatorul limbajului de programare Swift. Sintaxa Mojo se bazează pe limbajul Python, iar sistemul de tipuri este similar cu C/C++. Proiectul se prezintă ca un limbaj de programare general, care extinde capacitățile limbajului Python cu instrumente de programare de sistem, fiind potrivit pentru o gamă largă de sarcini și combinând ușurința de utilizare pentru cercetări și crearea rapidă de prototipuri cu adecvarea pentru formarea de produse finale de înaltă performanță.

Simplitatea este realizată prin utilizarea sintaxei familiare a limbajului Python, iar dezvoltarea produselor finale este sprijinită de posibilitatea de compilare în cod mașină, mecanisme de lucru sigur cu memoria și implicarea resurselor pentru accelerarea hardware-ului în calcule. Pentru a atinge performanțe ridicate, se suportă paralelizarea calculului utilizând toate resursele hardware disponibile în sisteme heterogene, cum ar fi GPU-urile, acceleratoarele specializate pentru învățarea automată și instrucțiunile procesorului vectorial (SIMD). În cazul calculului intensiv, paralelizarea și utilizarea tuturor resurselor de calcul permit obținerea unor performanțe ce depășesc aplicațiile scrise în C/C++.

Limbajul suportă tipizarea statică și mecanisme pentru lucrul sigur la nivel de memorie, similare cu capacitățile limbajului Rust, precum urmărirea duratei de viață a referințelor și verificarea împrumutului variabilelor (borrow checker). De asemenea, limbajul oferă și opțiuni pentru un lucru la nivel de memorie, posibilitatea de a accesa direct memoria în mod nesigur folosind tipul Pointer, apelarea unor instrucțiuni SIMD specifice sau accesul la extensiile hardware, cum ar fi TensorCores și AMX.

Mojo poate fi utilizat atât în modul de interpretare cu JIT, cât și pentru compilarea în fișiere executabile (AOT, ahead-of-time). Compilatorul încorporează tehnologii moderne de optimizare automată, cache și compilare distribuită. Codul sursă scris în Mojo este transformat în cod intermediar de nivel redus (MLIR, Multi-Level Intermediate Representation), dezvoltat de proiectul LLVM. Compilatorul permite aplicarea diferitelor backend-uri pentru generarea codului mașină, care suportă MLIR.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster