Das zu Qualcomm gehörende Unternehmen Modular hat die stabile Version 1.0 der Programmiersprache Mojo veröffentlicht. Die an Python angelehnte Sprache ist schlanker und einheitlicher geworden: Früher gab es oft mehrere Wege für dieselbe Sache, jetzt lassen sich Variablen beispielsweise einheitlich mit var deklarieren. Der Anbieter hat zudem Closures vereinheitlicht und die vormals getrennten Typen Pointer und UnsafePointer zu einem Pointer verschmolzen, bei dem die riskanten Operationen ein unsafe_ im Namen tragen müssen.
Version 1 ist zusammen mit Version 26.5 der hauseigenen KI-Plattform MAX erschienen, beide im selben GitHub-Release. MAX zählt Versionen kalendarisch nach Jahr und laufender Ausgabe, Mojo wechselt mit dem ersten stabilen Release dagegen auf semantische Versionierung und markiert erstmals einen Teil seiner Schnittstellen ausdrücklich als stabil.
Strengere Regeln für def
Die tiefgreifendste Neuerung betrifft die Funktionsdefinition. Mojo kannte lange def für Python-ähnliche und fn für strenger geprüfte Funktionen. Auf dem Weg zu Version 1 hat Modular fn gestrichen: Seit der Beta 2 quittiert der Compiler das Schlüsselwort nicht mehr mit einer Warnung, sondern mit einem harten Fehler:
error: 'fn' has been removed; use 'def' insteadVerschwunden ist dabei nur das Schlüsselwort, nicht sein Verhalten: Die strengeren fn-Regeln gelten jetzt für def, das ohne ausdrückliches raises keine Ausnahmen mehr auslöst. Ein Umbenennen von fn zu def genügt daher meist, umgekehrt kann alter def-Code an den neuen Regeln scheitern.
Ebenfalls neu ist eine Lambda-Syntax für kurze anonyme Funktionen. Modular bewirbt sie als „Python-style“, verlangt aber Klammern und Typangaben: lambda (x: Int) -> Int: x * 2 statt Pythons lambda x: x * 2.
Der Compiler findet mehr Fehler
Über die Typprüfung hinaus erkennt der Compiler nun ungültig gewordene Referenzen. Wächst eine Liste über ihren reservierten Platz hinaus, zieht sie an eine größere Stelle im Speicher um, und ein Verweis auf die alte Stelle zeigt danach ins Leere. In C++ ist das ein klassischer Weg zu Absturz oder Sicherheitslücke. Mojo lehnt das jetzt schon beim Übersetzen ab:
def main(): var numbers: List[Int] = [1, 2, 3] ref first = numbers[0] numbers.append(4) print(first)ref first ist ein Verweis auf das erste Listenelement, keine Kopie. Die Typangabe List[Int] ist nötig, weil [1, 2, 3] in Mojo 1.0 sonst einen Array fester Länge ohne append erzeugt. Der Compiler benennt präzise, wo die Referenz ihre Gültigkeit verlor:
error: use of invalidated interior reference 'numbers["element"]' print(first) ^ note: origin was invalidated here numbers.append(4)Zieht man print(first) vor das append, läuft dasselbe Programm anstandslos. Ergänzend hat Modular nach eigenen Angaben den Language Server stabilisiert.
Typenprüfung und Ownership
Warum eine weitere Programmiersprache? – Python dominiert die KI-Entwicklung, ist in der verbreiteten CPython-Implementierung aber langsam; die Rechenarbeit übernehmen deshalb Bibliotheken in C, C++ oder CUDA. Dieses Zwei-Sprachen-Problem will Mojo auflösen. Die Sprache ist übersetzt und bringt statische Typprüfung, ein Ownership-Modell ohne Garbage Collector und direkte Hardwarekontrolle mit. Damit steht Mojo trotz vertrauter Python-Optik näher bei C++ und Rust als bei Python. Modular selbst nutzt Mojo als Grundlage von MAX und der Modular Cloud.
Gegründet wurde Modular im Januar 2022 von Chris Lattner, dem ursprünglichen Entwickler von LLVM und Swift, und Tim Davis, bei Google zuständig für TensorFlow, XLA und TPU. Beide entwickelten dort MLIR, das heute Mojos Unterbau bildet: Daher erzeugt die Sprache Code für CPUs ebenso wie für GPUs und andere Beschleuniger. Seit dem 29. Juli 2026 gehört Modular zu Qualcomm; Mojo, MAX und die Modular Cloud sollen jedoch eigenständige Produkte bleiben.
So sieht Mojo aus
def square(x: Int) -> Int: return x * x def main(): var value = 42 print(square(value))Typangaben wie x: Int und -> Int sind Pflicht, var deklariert eine Variable, den Funktionsrumpf markiert wie in Python allein die Einrückung. Mit mojo build entsteht daraus eine eigenständige ausführbare Datei. Mojo läuft unter Linux, macOS und unter Windows via WSL.
Statisch typisiert, und zwar konsequent
Der augenfälligste Unterschied zu Python steckt in der Typprüfung. Python erlaubt es, derselben Variablen nacheinander eine Zahl und dann eine Zeichenkette zuzuweisen; Typfehler zeigen sich erst zur Laufzeit. Mojo legt den Typ beim Übersetzen fest: Aus var value = 42 schließt der Compiler auf eine Ganzzahl, ein anschließendes value = "hallo" bricht die Übersetzung ab:
error: cannot implicitly convert 'StringLiteral["hallo"]' value to 'Int'Diese Strenge geht weiter, als der Python-Anstrich vermuten lässt. Ein def square(x): ohne Typangabe, in Python der Normalfall, lehnt der Compiler mit argument type must be specified ab.
Als Brücke in bestehende Codebestände importiert Mojo über das Modul std.python vorhandene Python-Module, allerdings im echten CPython-Interpreter und damit in dessen Tempo.
Compiler bleibt vorerst geschlossen
In der Vergangenheit hat Modular die Sprache in hohem Tempo umgebaut. Seit der ersten öffentlichen Fassung im Mai 2023 änderten sich laufend APIs und Sprachkonstrukte, was nach eigenem Eingeständnis die langfristige Pflege von Mojo-Projekten erschwert hat.
Damit soll Version 1 Schluss machen: Änderungen sollen während der 1.x-Reihe überwiegend additiv ausfallen; inkompatible schließt Modular nicht aus, will sie aber mit der bei gereiften Sprachen wie C++ üblichen Sorgfalt handhaben. Fertig ist die Sprache damit noch nicht.
Offen ist bislang nur ein Teil der Plattform: Die Standardbibliothek steht unter der Apache-2-Lizenz mit LLVM-Ausnahmen auf GitHub bereit, Compiler und Werkzeugkette nicht. Deren Freigabe hatte Modular bereits früher in Aussicht gestellt und bekräftigt sie nun für 2026. Bis dahin bleibt Mitarbeit nur an der Bibliothek möglich, nicht an der Sprache selbst. Genutzt haben das laut Modular knapp 200 Beitragende, mit mehr als 1.100 Pull Requests und über 200.000 veränderten Codezeilen.
Auf der Roadmap stehen zudem ein belastbares Modell für asynchrone Programmierung, Pattern Matching und Union Types.
(who)











English (US) ·