Hapja e bibliotekës standarde të gjuhës Mojo. Përditësimi i mjeteve të punës Mojo 24.2

Zhvilluesit e gjuhës së programimit Mojo filluan të transferojnë punën e projektit në kategorinë e softuerit të hapur. E para, kodi i bibliotekës standarde është bërë i hapur, i cili tani është në dispozicion nën licencën Apache 2.0 me përjashtime nga projekti LLVM, që lejojnë përzierjen me kodin nën licencën GPLv2. Përveç publikimit të kodit, procesi i zhvillimit është orientuar drejt transparencës dhe mundësisë për të bërë ndryshime nga të tretët përmes dërgimit të kërkesave për tërheqje në GitHub. Tekstet burimore të kompajlerit pritet të hapen pas përfundimit të projektimit të arkitekturës së brendshme.

Në depo janë krijuar dy degë me kodin e bibliotekës standarde Mojo: dega kryesore, e sinkronizuar me versionin e fundit stabil të Mojo, dhe dega nightly, që pasqyron procesin aktual të zhvillimit dhe është e sinkronizuar me ndërtimet nocturne të Mojo. Dega nightly propozohet të përdoret nga pjesëmarrësit që dëshirojnë të bashkohen me zhvillimin dhe të ndajnë ndryshimet e tyre. Megjithatë, disa module të bibliotekës ende nuk janë hapur, por pas një kohe, kodi që mbetet i mbyllur pritet të transferohet gjithashtu në depo të hapura. Në përgjithësi, kodi i moduleve që zhvillohen shpejt dhe kërkojnë stabilizim shtesë, moduleve që janë planifikuar për ristrukturim dhe moduleve që kërkojnë rishikim dhe ripunim për shkak të lidhjeve me projekte pronësore mbetet i mbyllur.

Në të njëjtën kohë është publikuar versioni 24.2 i mjetit zhvillues Mojo SDK, që lejon kompajtimin e projekteve në sistemin lokal, dhe versioni 24.2 i motorit MAX Engine, që ofron një platformë për zhvillime në fushën e mësimit automat. Mojo SDK përfshin komponentët e nevojshëm për zhvillimin e aplikacioneve në gjuhën Mojo, duke përfshirë kompajlerin, runtime, një ndërfaqe REPL interaktive për ndërtimin dhe ekzekutimin e programeve, një debugger, një shtesë për redaktorin e kodit Visual Studio Code (VS Code) me mbështetje për përfundimin automatik të hyrjes, formatimin e kodit dhe ndriçimin e sintaksës, një modul për integrimin me Jupyter për ndërtimin dhe ekzekutimin e notave Mojo. MAX Engine kompleton SDK-në me mjete për zhvillimin dhe rregullimin e aplikacioneve që përdorin modele të mësimit automat në formate të ndryshme (TensorFlow, PyTorch, ONNX, etj.). Ndërtimet e Mojo SDK dhe MAX Engine janë përgatitur për platformën Linux dhe macOS.

Disa nga ndryshimet më të dukshme në Mojo 24.2:

  • Strukturat dhe llojet e tjera nominale tani mund tĂ« pĂ«rputhen implicit me tiparĂ«t. PĂ«r shembull, çdo strukturĂ« pĂ«r tĂ« cilĂ«n Ă«shtĂ« realizuar metoda __str__() implicit pĂ«rputhet me tiparin Stringable dhe mund tĂ« pĂ«rdoret me funksionin str().
  • NĂ« mĂ«nyrat pĂ«r sigurimin e kompatibilitetit me kodin nĂ« gjuhĂ«n Python Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r kalimin e argumenteve bazuar nĂ« fjalĂ« kyçe nĂ« funksionet Python. PĂ«r shembull, «plt.plot((5, 10), (10, 15), color=»red»)»
  • ËshtĂ« shtuar mbĂ«shtetje pĂ«r kalimin nĂ« funksion tĂ« numrit tĂ« ndryshueshĂ«m tĂ« argumenteve, tĂ« caktuara pĂ«rmes çelĂ«sit. PĂ«r shembull, «print_nicely(a=7, y=8)».
  • Tipi DynamicVector Ă«shtĂ« ribĂ«rĂ« nĂ« List dhe Ă«shtĂ« zhvendosur nĂ« modulin collections.list. ËshtĂ« shtuar mundĂ«sia pĂ«r tĂ« formuar njĂ« listĂ« bazuar nĂ« njĂ« numĂ«r tĂ« rastĂ«sishĂ«m vlerash, pĂ«r shembull, «var numbers = List[Int](1, 2, 3)».
  • NĂ« funksionin print() janĂ« shtuar parametrat me emĂ«r sep dhe end, pĂ«rmes tĂ« cilave mund tĂ« pĂ«rcaktohen vlerat e ndarĂ«sit dhe tĂ« fundit tĂ« shtypjes. PĂ«r shembull, ekzekutimi print(«Hello», «Mojo», sep=», «, end=»!!!\n») do tĂ« sjellĂ« si rezultat «prints Hello, Mojo!!!».

Projekti Mojo zhvillohet nën drejtimin e Chris Lattner, themeluesit dhe arkitektit kryesor të projektit LLVM, si dhe krijuesit të gjuhës së programimit Swift. Sintaksa e Mojo mbështetet në gjuhën Python, ndërsa sistemi i tipave është i afërt me C/C++. Projekti paraqitet si një gjuhë e qëllimshme, që zgjeron mundësitë e gjuhës Python me mjete për programimin sistemor, e përshtatshme për një gamë të gjerë detyrash, dhe që kombinon thjeshtësinë e përdorimit për zhvillimet hulumtuese dhe krijimin e shpejtë të prototipave me adaptueshmërinë për formimin e produkteve përfundimtare me performancë të lartë.

Thjeshtësia arrihet duke përdorur sintaksën e njohur të gjuhës Python, ndërsa zhvillimi i produkteve përfundimtare përfshin mundësinë e kompajlimit në kodin makinerik, mekanizmat për punën e sigurt me memorjen dhe aktivizimin e mjeteve për përshpejtimin harduerik të llogaritjeve. Për të arritur një performancë të lartë, mbështetet paralelizimi i llogaritjeve me angazhimin e të gjithë burimeve harduerike të disponueshme në sistemet heterogjene, si GPU-të, përshpejtuesit e specializuar për mësimin automat dhe komandat e procesorëve vektorialë (SIMD). Gjatë llogaritjeve intensive, paralelizimi dhe angazhimi i të gjithë burimeve të llogaritjes mundëson të arrihet një performancë që e tejkalon aplikacionet në C/C++.

Gjuha mbështet tipizimin statik dhe mjetet për një punë të sigurt në nivel të ulët me memorjen, duke kujtuar mundësitë e gjuhës Rust, siç janë gjurmimi i kohëzgjatjes së referencave dhe kontrolli i huazimit të variablave (borrow checker). Megjithatë, gjuhës i janë të disponueshme edhe mundësitë për punë në nivel të ulët, për shembull, është e mundur qasja e drejtpërdrejtë në memorje në modalitetin unsafe duke përdorur tipin Pointer, thirrja e instrukcioneve SIMD të veçanta ose qasja në zgjerimet harduerike, si TensorCores dhe AMX.

Mojo mund të përdoret si në modalitetin e interpretimit me JIT, ashtu edhe për kompilimin në skedarë ekzekutivë (AOT, ahead-of-time). Në kompilator janë të ndërtuara teknologji moderne për optimizimin automatike, caching dhe kompilim të shpërndarë. Kodi burimor në gjuhën Mojo shndërrohet në kodin e ulët të ndërmjetëm MLIR (Multi-Level Intermediate Representation), që zhvillohet nga projekti LLVM. Kompilatori lejon përdorimin e backend-eve të ndryshme për gjenerimin e kodit të makinës që mbështesin MLIR.

Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster