Mojo: Swift-skaperen har laget Python på stereoider

Det nye programmeringsspråket er opptil 68.000 ganger raskere enn Python.

I Mojo kan du bruke en flammeemoji som filendelse, hvis du vil. 📸: Kurt Lekanger
I Mojo kan du bruke en flammeemoji som filendelse, hvis du vil. 📸: Kurt Lekanger Vis mer

Chris Lattner er ingen hvem som helst. Dette er mannen som i sin tid lagde C-kompilatoren Clang, og senere også programmeringsspråket Swift – ifølge ham selv først som et hobbyprosjekt (!).

Nå er Lattner aktuell igjen med et helt nytt programmeringsspråk: Mojo. Språket lages av selskapet Modular, som Lattner startet opp i 2023.

Mojo er spesielt laget for utviklere som jobber med kunstig intelligens – AI. Ettersom Python tradisjonelt har vært det foretrukne språket til AI-utviklere har Modular sagt at språket over tid vil bli et superset av Python.

Det betyr at på samme måte som all JavaScript fungerer i TypeScript, så fungerer all Python i Mojo – i hvert fall på sikt.

«Mojo kan oppnå opptil 68.000 ganger ytelsen til Python.»

Python med ytelsen til C

Mojo ble annonsert i mai, men det er først nå at første versjon av språket kan lastes ned, installeres og testes ut av utviklere. Man får da tilgang til Mojo og tilhørende IDE- og kompilatorverktøy.

Ifølge Pramod Ramarao, AI-produktsjef i Modular, har Mojo en skalerbar programmeringsmodell laget for å "targete" ytelseskritiske systemer, inkludert AI-akselleratorteknologier som GPU-er.

– Mojo kombinerer det beste av dynamiske og statiske programmeringsspråk, og kan oppnå opptil 68.000 ganger ytelsen til Python i dag, hevder Ramarao i lanseringsbloggposten.

Med Mojo kan man for eksempel enkelt ta i bruk mange CPU-kjerner og CPU-krevende operasjoner i parallell, slik som i dette kodeeksempelet:

fn compute_row(y:Int):
    let cy = min_y + h * scale_y

    @parameter
    fn compute_vector[simd_width:Int](w:Int):
        let cx = min_x + iota[DType.float64, simd_width]() * scale_x
        output.simd_store[simd_width](Index(h,w), 
                mandelbrot_kernel(ComplexSIMD[DType.float64, 
                                              simd_width](cx,cy))

    vectorize[num_ports * simd_width, compute_vector](width)

with Runtime(num_cores()) as rt:
    let partition_factor = 16 # Is autotuned.
    parallelize[compute_row](rt, height, partition_factor * num_cores())

Målet med språket er at AI-utviklere skal kunne fortsette å programmere i et språk de kjenner godt.

Ifølge Ramarao får man brukervennligheten til Python, sammen med funksjonaliteten man kjenner fra systemprogrammeringsspråk som C, C++ eller CUDA.

Har flammer 🔥 som filendelse

Mojo leveres med en utvidelse til VS Code som gir deg blant annet kodefullføring og syntaks-utheving.

Kodefullføring i VS Code. Skjermbildet til venstre viser tilgjengelige moduler og typer. Bildet til høyre viser tilgjengelige funksjoner for "Int"-structen. 📸: Modular
Kodefullføring i VS Code. Skjermbildet til venstre viser tilgjengelige moduler og typer. Bildet til høyre viser tilgjengelige funksjoner for "Int"-structen. 📸: Modular Vis mer

I tillegg har du Mojo-driveren, som gir deg et shell der du kan bygge og kjøre Mojo-programmer, pakke Mojo-moduler, lage dokumentasjon og formatere kode.

Det er også en Jupyter kernel som lar deg lage og kjøre Mojo-noteboks i Jupyter – også med Python-kode.

En temmelig spesiell ting med Mojo, er at en Mojo-fil har en flammeemoji som filendelse. En fil som inneholder Hello World i Mojo kan altså ha filnavnet hello.🔥 eller hello.mojo – begge deler fungerer like bra.

Først til Linux

I første omgang er det kun Linux på x86 som har fått Mojo, men det vil komme versjoner for macOS og Windows etter hvert. For de som vil teste det ut, og ikke har en Linux-maskin, kan du sette det opp på et "remote" Linux-system, for eksempel gjennom GitHub Codespaces.

Det er også en Mojo Playground, som lar deg leke med språket uten at du behøver å installere noe på egen maskin.

Hvis du er interessert i å høre mer om Mojo, anbefales siste episode av Syntax-podcasten der Wes Bos og Scott Tolinski har et interessant intervju med Chris Lattner om språket – og mye annet.