Mojo🔥 is nu open source!

We zijn blij aan te kondigen dat de Mojo🔥-taal nu volledig open source is onder de Apache 2.0-licentie (met LLVM-uitzonderingen)! De broncode voor de Mojo-compiler, de tooling en alle overige benodigdheden om de taal te bouwen, zijn nu beschikbaar in onze modular GitHub-repository.

De Mojo-taal is een gedurfde weddenschap: een nieuwe, algemene programmeertaal die verder gaat dan oudere talen. Mojo integreert de nieuwste onderzoeken op het gebied van compilers en programmeertalen om GPU's, AI-accelerators en andere geavanceerde rekenkracht te ontsluiten. De afgelopen vier jaar is Mojo ontwikkeld met een open community, maar met een gesloten compiler. Vorige week bereikte Mojo versie 1.0 (met bronstabiliteit), en vandaag zijn we enthousiast om de volledige compiler en toolchain open source te maken.

Apache 2: Een permissieve licentie

De Apache 2.0-licentie is de gouden standaard voor programmeertalen en compilers, omdat het grote flexibiliteit biedt voor gebruik in allerlei toepassingen. De LLVM-uitbreidingen van de licentie vergroten deze vrijheden verder voor het bouwen en distribueren van binaries die met Mojo zijn gecompileerd. We willen dat je Mojo kunt adopteren en gebruiken in zoveel mogelijk toepassingen als je je kunt voorstellen.

Onze open-source-aanpak is bewust geweest: we hebben gemerkt dat kleine en hechte ontwerpteams (geen commissies) het beste zijn om de "ziel" van een taal te vinden, maar dat feedback van een bredere community essentieel is om een echokamer te vermijden.

Daarom hebben we de volgende stappen ondernomen:

  1. Eerst hebben we de Mojo-standaardbibliotheek open-sourced.
  2. Daarna hebben we honderdduizenden regels kernelcode geschreven in Mojo, samen met tools en ondersteuning, uitgebracht.
  3. We hebben samen gebouwd op basis van feedback uit de community en publieke ontwerpvoorstellen.
  4. Nu maken we de compiler open source.

We zullen onze processen verder openstellen naarmate Mojo verder rijpt.

De compiler verkrijgen en bouwen

Alle code voor de Mojo-taal is nu beschikbaar in de hoofd-repository van modular op GitHub. Clone eerst de repository lokaal:

git clone https://github.com/modular/modular.git
cd modular

Om de Mojo-compiler vervolgens vanuit de broncode te bouwen en deze uit te voeren tegen een Mojo-bestand, kun je één build-commando gebruiken:

./bazelw run --config=build-mojo KGEN:mojo -- run hello.mojo

Bij Modular gebruiken we Bazel om de complexe build-processen en caching voor Mojo en MAX te beheren. Dit ene commando downloadt of bouwt alles wat nodig is om de Mojo-compiler en de Mojo-standaardbibliotheek te bouwen. De vlag --config=build-mojo instrueert het build-systeem om alles vanaf nul te compileren, gebruikmakend van de broncode op je lokale systeem.

Dit geldt ook voor het werken met de Mojo-standaardbibliotheek; je kunt de compiler- of bibliotheekcode wijzigen en de volledige suite van tests uitvoeren via:

./bazelw test --config=build-mojo mojo/stdlib/test/...

Als je niet direct aan de compiler zelf werkt, kun je de vlag --config=prebuilt-mojo gebruiken. Het build-systeem downloadt dan de nieuwste nachtelijke binaire distributie van de compiler, wat compilatietijd bespaart. Let op: een vooraf gebouwde Mojo-compiler is vandaag de dag nog steeds noodzakelijk als je MAX-kernels of -modellen aanpast.

Bijdragen

De Mojo-standaardbibliotheek accepteert bijdragen sinds 2024, en we zijn dankbaar voor iedereen die heeft geholpen de taal vooruit te helpen. Een belangrijke les (vooral in het huidige tijdperk van AI-codering) is dat we bewust moeten omgaan met de manier waarop we bijdragen behandelen.

Om die reden zijn we op dit moment nog niet klaar om bijdragen aan de compiler en tooling te accepteren. We streven ernaar om tegen het einde van dit jaar bijdragen aan de compiler en tooling te accepteren, en we zullen meer details delen zodra dat mogelijk is.

Om vragen te stellen over de broncode van de Mojo-compiler terwijl je deze doorleest, of om te delen waar je aan werkt, nodigen we je uit om ons forum te bezoeken. Clone de broncode en laat ons weten wat je bouwt met de Mojo-taal. We zijn enthousiast om Mojo open te stellen voor de wereld en te zien hoe het groeit!