Mojo 1.2: Limbajul de programare aduce Pattern Matching complet, execuție extinsă pe GPU pentru biblioteca matematică și compilare mai rapidă cu jemalloc

 

Creat de echipa Modular (condusă de Chris Lattner, arhitectul din spatele LLVM, Clang și Swift) pentru a uni sintaxa prietenoasă a limbajului Python cu performanța brută a limbajelor de programare de sistem (C/C++ și Rust), limbajul Mojo a ajuns la versiunea 1.2. Această lansare urmează deschiderii compilatorului către contribuții externe din 1.1 și livrează una dintre cele mai solicitate funcționalități de sintaxă modernă: pattern matching complet la runtime și compile-time.

Inovația centrală de sintaxă: Pattern Matching la runtime și la compile-time

Mojo 1.2 introduce o suită completă de instrucțiuni pentru analiza structurală a datelor:

  • Instrucțiunile match și case: Permite compararea valorilor împotriva unor tipare complexe, inclusiv literali, tuple, structuri definite de utilizator și gărzi condiționale (pattern guards), ramificând execuția pe primul caz valid.

  • Evaluare la compilare (comptime match): Oferă metaprogramare directă, permițând selectarea căilor de execuție sau a implementărilor optime pe baza tipurilor sau a valorilor rezolvate în timpul compilării.

  • Construcții if case și while case: Mecanisme ergonomice pentru despachetarea condiționată a valorilor, alături de suport nativ pentru destructurarea colecțiilor (list destructuring).

Calcul eterogen extins pe GPU: Portarea funcțiilor matematice

O prioritate majoră pentru Mojo este rularea unificată a codului atât pe nucleele CPU, cât și pe acceleratoare GPU (NVIDIA CUDA / AMD ROCm):

  • Eliminarea dependențelor de biblioteca C a sistemului: Peste 20 de funcții din biblioteca standard math au fost rescrise nativ direct în limbajul Mojo (printre care atan(), tan(), log10(), hypot() și mai multe funcții Bessel).

  • Execuție directă în kernel-uri GPU: Fiind implementate nativ în limbaj, aceste funcții matematice pot fi invocate acum direct în interiorul kernel-urilor paralele de GPU, eliminând diferențele de apelare între arhitecturi și asigurând o consistență numerică superioară pe platformele AI.

Performanță: Compilare mai rapidă și alocator jemalloc pe Linux

Echipa a adus optimizări substanțiale atât timpilor de construcție, cât și vitezei de execuție a codului generat:

Modul / SubsistemÎmbunătățire adusă în Mojo 1.2Câștig de performanță
Compilarea pachetelor mari (ex. nn)Timpul de compilare a pachetului de rețele neuronale a scăzut de la 98 la 61 de secunde.Reducere de ~38% a timpului de build
Compilator pe Linux (jemalloc)Trecerea compilatorului la alocatorul de memorie jemalloc pe distribuțiile Linux.10% - 13% mai rapid la compilarea kernel-urilor masive de GPU
Operațiuni pe șiruri (String padding)Rescrierea algoritmilor de padding pe șiruri de caractere.De până la 86x mai rapid
Repetare de șiruri (String repetition)Optimizări pentru multiplicarea șirurilor lungi de text.De aproximativ 2x mai rapid

Sistemul de tipuri, Generice și Corespondențe

  • Generice mai clare: Clauzele where oferă diagnostice mai precise la erorile de constrângere a tipurilor generice.

  • Opt-out de la traits: Structurile pot renunța acum explicit la implementarea anumitor trăsături (traits).

  • Manipulare memorie: S-au adăugat noi capabilități de feliere a tablourilor (array slicing), rafinări în lucrul cu tuple și metode suplimentare pentru manipularea intervalelor de memorie contiguă (memory spans).

  • Documentație dedicată tranziției din Python: Actualizarea ghidurilor oficiale de sintaxă, cu accent pe diferențele semantice și trecerea dezvoltatorilor existenți de la Python la paradigma Mojo.

Sursa articolului: Linuxiac — Mojo 1.2 Programming Language Adds Pattern Matching, Improves GPU Support

Comentarii

Postări populare de pe acest blog

Linux Mint 27 „Adrien” sosește de Crăciun: Schimbare istorică prin renunțarea la versiunile intermediare (point releases)

⏱️ Test de laborator Neowin: Linux spulberă Windows 11 în sarcinile zilnice și managementul resurselor!

PhotoSuite: O alternativă gratuită și open-source la Photoshop, cu suport nativ pentru fișiere PSD