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

Zhvilluesit e gjuhës së programimit Mojo filluan të Konvertojnë zhvillimet e projektit në softuer të hapur. Kodi i bibliotekës standarde tani është publikuar nën licencën Apache 2.0 me përjashtimet nga projekti LLVM, të cilat lejojnë përzierjen me kodin nën licencën GPLv2. Përveç publikimit të kodit, procesi i zhvillimit është zhvendosur në drejtim të transparencës dhe mundësisë për të transferuar ndryshime nga palët e treta përmes dërgimit të kërkesave pull në GitHub. Tekstet burimore të kompiluesit planifikohen 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 më të fundit stabil të Mojo, dhe dega nightly, që pasqyron procesin aktual të zhvillimit dhe është e sinkronizuar me ndërtimet e natës të Mojo. Dega nightly sugjerohet të përdoret nga pjesëmarrësit që dëshirojnë të bashkohen në zhvillim dhe të ndajnë ndryshimet e tyre. Megjithatë, disa module të bibliotekës ende nuk janë hapur, por pas një periudhe, kodi i mbetur i mbyllur gjithashtu planifikohet të transferohet në depo të hapura. Kryesisht, kodi i moduleve që po zhvillohen shpejt mbetet i mbyllur, duke kërkuar stabilizim të mëtejshëm, moduleve për të cilat është planifikuar ristrukturimi dhe moduleve që kërkojnë rishikim të mëtejshëm për shkak të lidhjeve me projekte pronësore.

Njëkohësisht është publikuar versioni 24.2 i mjetit Mojo SDK, i cili lejon kompilimin e projekteve në sistemin lokal, dhe versioni 24.2 i motorit MAX Engine, i cili ofron një platformë për zhvillime në fushën e mësimit të makinerive. Mojo SDK përfshin komponentët e nevojshëm për zhvillimin e aplikacioneve në gjuhën Mojo, duke përfshirë kompiluesin, runtime, një REPL interaktive për ndërtimin dhe ekzekutimin e programeve, një debugger, një shtesë për editorin e kodit Visual Studio Code (VS Code) me mbështetje për plotësimin automatik të hyrjeve, formatimin e kodit dhe ndriçimin e sintaksës, si dhe një modul për integrimin me Jupyter për ndërtimin dhe ekzekutimin e Mojo notebook. MAX Engine kompleton SDK me mjete për zhvillimin dhe debugimin e aplikacioneve që përdorin modele mësimi makine 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Ă« korrespondohen nĂ« mĂ«nyrĂ« implicite me tipazhet. PĂ«r shembull, çdo strukturĂ« pĂ«r tĂ« cilĂ«n Ă«shtĂ« implementuar metoda __str__() korrespondon nĂ« mĂ«nyrĂ« implicite me tipazhin Stringable dhe mund tĂ« pĂ«rdoret me funksionin str().
  • NĂ« mjetet pĂ«r sigurimin e kompatibilitetit me kodin nĂ« gjuhĂ«n Python Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r kalimin e argumenteve mbi baza tĂ« fjalĂ«ve kyçe nĂ« funksionet Python. PĂ«r shembull, «plt.plot((5, 10), (10, 15), color=»red»)»
  • Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r kalimin e njĂ« numri variabil tĂ« argumenteve nĂ« funksion, tĂ« caktuar pĂ«rmes caktimit tĂ« fjalĂ«ve kyçe. PĂ«r shembull, «print_nicely(a=7, y=8)».
  • Tipi DynamicVector Ă«shtĂ« riemruar nĂ« List dhe Ă«shtĂ« zhvendosur nĂ« modulit collections.list. ËshtĂ« shtuar mundĂ«sia pĂ«r tĂ« formuar njĂ« listĂ« mbi baza tĂ« numrave tĂ« rastit, pĂ«r shembull, «var numbers = List[Int](1, 2, 3)».
  • NĂ« funksionin print() janĂ« shtuar parametrat e emĂ«ruar sep dhe end, pĂ«rmes tĂ« cilĂ«ve mund tĂ« caktohen vlerat e ndarĂ«sit dhe tĂ« output-it pĂ«rfundimtar. PĂ«r shembull, ekzekutimi i print(«Hello», «Mojo», sep=», «, end=»!!!\n») do tĂ« shkaktojĂ« output-in «prints Hello, Mojo!!!».

Projekti Mojo zhvillohet nën dirigjimin e Chris Lattner, themeluesit dhe arkitektit kryesor të projektit LLVM dhe krijuesit të gjuhës së programimit Swift. Sintaksisi i Mojo është i bazuar në gjuhën Python, ndërsa sistemi i tipeve është afër C/C++. Projekti paraqitet si një gjuhë e përgjithshme, që zgjeron kapacitetet e gjuhës Python me mjete sistemike, e përshtatshme për një gamë të gjerë detyrash dhe e kombinuar me thjeshtësinë e përdorimit për zhvillime kërkimore dhe krijimin e shpejtë të protipëve me përshtatshmërinë për formimin e produkteve përfundimtare me performancë të lartë.

Thjeshtësia arrihet përmes përdorimit të sintaksës së njohur të gjuhës Python, ndihmuar nga mundësia e kompilimit në kodin makinerik, mekanizmat e sigurt të menaxhimit të kujtesës dhe përfshirja e mjeteve për përshpejtimin harduerik të llogaritjeve. Për të arritur performancën e lartë, mbështetet paralelizimi i llogaritjeve duke përfshirë të gjitha resurset harduerike të disponueshme në sistemin e sistemeve heterogjene, si GPU, akceleratorë të specializuar për mësim të makinerive dhe instruksione të procesorëve vektorë (SIMD). Gjatë llogaritjeve intensive, paralelizimi dhe përfshirja e të gjitha burimeve llogaritëse ofrojnë mundësinë të arrijmë një performancë që kalon aplikacionet në C/C++.

Gjuha mbështet tipizimin statik dhe mjete për punë të sigurt në nivel të ulët me kujtesën, të ngjashme me mundësitë e gjuhës Rust, si ndjekja e kohëzgjatjes së referencave dhe kontrolli i huazimit të variablave (borrow checker). Në të njëjtën kohë, gjuha ofron mundësi për punë të nivelit të ulët, për shembull, akses të drejtpërdrejtë në kujtesë në modin unsafe me përdorimin e tipit Pointer, thirrjen e instruksioneve specifike SIMD ose aksesin në zgjerime harduerike si TensorCores dhe AMX.

Mojo mund të përdoret si në modin e interpretimeve duke përdorur JIT, ashtu edhe për kompilim në skedarë ekzekutivë (AOT, ahead-of-time). Kompileri përfshin teknologji moderne të optimizimit automatik, caching dhe kompilimit të shpërndarë. Kodi burimor në gjuhën Mojo transformohet në kodin e ndërmjetëm të nivelit të ulët MLIR (Multi-Level Intermediate Representation), i zhvilluar nga projekti LLVM. Kompileri lejon përdorimin e backend-eve të ndryshme për gjenerimin e kodit makinerik që mbështesin MLIR.

Burimi: opennet.ru

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