Åbning af sprogbiblioteket for Mojo. Opdatering af værktøjslinjen Mojo 24.2

Udviklerne af programmeringssproget Mojo har begyndt at gøre projekternes resultater tilgængelige som open source. Koden til standardbiblioteket er blevet offentliggjort først, og er nu tilgængelig under Apache 2.0-licensen med undtagelser fra LLVM-projektet, som tillader blanding med kode under GPLv2-licensen. Udover offentliggørelsen af koden er udviklingsprocessen blevet mere åben, og mulighed for at bidrage med ændringer gennem pull-requests på GitHub er blevet introduceret. Kildekoden til compileren planlægges offentliggjort efter designet af den interne arkitektur er færdiggjort.

Der er oprettet to grene med koden til standardbiblioteket Mojo i repositoryet: hovedgrenen, som er synkroniseret med den seneste stabile version af Mojo, og nightly-grenen, som afspejler den aktuelle udviklingsproces og er synkroniseret med de natlige builds af Mojo. Nightly-grenen anbefales til deltagere, der ønsker at bidrage til udviklingen og dele deres ændringer. Nogle moduler af biblioteket er dog endnu ikke åbne, men over tid planlægges det, at den resterende lukkede kode også vil blive flyttet til det åbne repository. Primært forbliver koden for hurtigt udviklende moduler, der kræver yderligere stabilisering, moduler der skal omstruktureres, og moduler, der kræver yderligere gennemgang og revision på grund af forbindelsen til proprietære projekter, lukket.

Samtidig er version 24.2 af Mojo SDK blevet offentliggjort, som gør det muligt at kompilere projekter på den lokale maskine, samt MAX Engine 24.2, som tilbyder en platform til udvikling inden for maskinlæring. Mojo SDK indeholder de komponenter, som er nødvendige for at udvikle applikationer på Mojo-sproget, herunder compiler, runtime, interaktiv REPL-miljø til at bygge og køre programmer, debugger, et supplement til visual studio code (VS Code), der understøtter autocompletion, kodestil og syntaksfremhævning, samt et modul til integration med Jupyter til at bygge og køre Mojo-notebook. MAX Engine supplerer SDK med værktøjer til udvikling og debug af applikationer, der arbejder med modeller for maskinlæring i forskellige formater (TensorFlow, PyTorch, ONNX osv.). Mojo SDK- og MAX Engine-builds er klargjort til Linux- og macOS-platforme.

Blandt de mest markante ændringer i Mojo 24.2:

  • Strukturer og andre nominelle typer kan nu implicit overholde protokoller. For eksempel kan enhver struktur, hvor metoden __str__() er implementeret, implicit overholde protokollen Stringable og kan bruges med funktionen str().
  • I værktøjerne til at sikre kompatibilitet med kode på Python er der tilføjet støtte til at videregive nøgleordsbaserede argumenter til Python-funktioner. For eksempel, «plt.plot((5, 10), (10, 15), color=»rød»)»
  • Støtte til at videregive et variabelt antal argumenter til funktionen via nøgleords tildeling er blevet tilføjet. For eksempel, «print_nicely(a=7, y=8)».
  • Typen DynamicVector er omdøbt til List og flyttet til modulet collections.list. Muligheden for at oprette en liste baseret på et vilkårligt antal værdier er tilføjet, for eksempel «var numbers = List[Int](1, 2, 3)».
  • Der er tilføjet navngivne parametre sep og end til funktionen print(), hvorigennem man kan angive værdier for separatoren og den afsluttende output. For eksempel vil udførelsen af print(«Hello», «Mojo», sep=», «, end=»!!!\n») resultere i udskriften «prints Hello, Mojo!!!».

Mojo-projektet udvikles under ledelse af Chris Lattner, grundlægger og hovedarkitekt af LLVM-projektet og skaberen af programmeringssproget Swift. Mojo-syntaksen er baseret på Python-sproget, og typesystemet ligner C/C++. Projektet præsenteres som et generelt formålssprog, der udvider Python's kapaciteter med systemprogrammeringsværktøjer, velegnet til et bredt spektrum af opgaver og som kombinerer brugervenlighed til forskningsudvikling og hurtig prototypeopbygning med egenskaber til at skabe højtydende slutprodukter.

Simplicitet opnås gennem brugen af det velkendte Python-syntaks, og udviklingen af de endelige produkter understøttes af muligheden for kompilering til maskinkode, mekanismer til sikker hukommelsesarbejde og anvendelse af midler til hardwareaccelerering af beregninger. For at opnå høj ydeevne understøttes parallelisering af beregninger ved hjælp af alle de tilgængelige hardwareressourcer i heterogene systemer, såsom GPU'er, specialiserede acceleratore til maskinlæring og vektorprocessor-instruktioner (SIMD). Ved intensiv beregning giver parallelisering og inddragelse af alle beregningsressourcer mulighed for ydeevne, der overgår applikationer skrevet i C/C++.

Sproget understøtter statisk typetildeling og værktøjer til sikker lavniveau hukommelsesarbejde, der minder om funktionerne i Rust-sproget, såsom livscyklusovervågning af referencer og kontrol af variabellån (borrow checker). Samtidig er der også muligheder for lavniveauarbejde i sproget, for eksempel direkte adgang til hukommelse i unsafe-tilstand ved hjælp af typen Pointer, anvendelse af specifikke SIMD-instruktioner, eller adgang til hardwareudvidelser som TensorCores og AMX.

Mojo kan anvendes både i fortolkningsmode med JIT og til kompilering til eksekverbare filer (AOT, ahead-of-time). Kompilatoren integrerer moderne teknologier til automatisk optimering, caching og distribueret kompilering. Kildekoden skrevet i Mojo transformeres til lavniveau mellemliggende kode (MLIR, Multi-Level Intermediate Representation), udviklet af LLVM-projektet. Kompilatoren giver mulighed for at anvende forskellige backends, der understøtter MLIR, til at generere maskinkode.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster