Am 31. Juli wurden die Versionen 0.15.0 und 0.15.1 veröffentlicht. Mettle — Programmiersprache mit statischer Typisierung:
Native Unterstützung für x86-64 (+ AVX2), AArch64, NVIDIA PTX, SPIR-V (OpenCL 2.0).
Eigener Linker für Windows PE.
Eigener Debugger auf Quellcode-Ebene:
- Ohne externe Formate.
- Haltepunkte, schrittweise Fehlersuche sowie das Lesen und Schreiben von Variablen in Echtzeit über —debug-hooks.
- Ohne gdb, PDB und DWARF.
CUDA-Backend.
Ohne LLVM, virtuelle Maschine und Laufzeitumgebung.
Ausführung zur Kompilierungszeit: Funktionen mit dem Attribut @test werden im Interpreter des Compilers mit dem Befehl mettle test ausgeführt, ohne eine Binärdatei zu erstellen. Der Befehl mettle trace interpretiert eine Funktion und gibt eine zeilenweise Verfolgung der Werte aus. Der Befehl —pgo interpretiert die Funktion main() während des Build-Prozesses und übergibt die gemessenen Aufrufhäufigkeiten zurück an den Optimierer.
-
Beschreibung Beispiel Ähnlich wie Rust Use-after-free (direkt) free(p); p[0] Ownership / Drop Doppeltes Freigeben free(p); free(p) Ownership Use-after-free durch ein Alias q = p; free(q); p[0] Move Semantik Use-after-free über einen Aufruf (abgeleitet) consume(p); p[0] wo consume p freigibt Move Semantik Leihgabe überlebt ihren Stack-Bereich { var x; g = &x[0]; } use(g) Lebensdauern (‘a) Interior-Zeiger nach realloc q = &buf[i]; realloc(buf,..); q[0] Iterator-Invalidierung Interior-Zeiger nach free q = &buf[i]; free(buf); q[0] dangling reference Rückgabe der Adresse eines lokalen Stack-Elements return &local fn() -> &T Lebensdauermist Leck (kein Eigentümer auf einem Pfad) var p = malloc(n); return 0 (Rust gibt über Drop frei)
Der Compiler basiert auf der Bibliothek libmtlc:
- Eigene Zwischensprache (IR).
- Klassische und GNN-Codeoptimierer.
- Native Codegenerierung (x86-64 (+ AVX2), AArch64, NVIDIA PTX, SPIR-V (OpenCL 2.0)).
- Native Linkage.
Die Projekte wurden von einem Programmierer aus Kapstadt geschrieben suidvandiewereld in C (C99-Standard) und werden unter der Lizenz Apache-2.0 vertrieben.
Quelle: linux.org.ru
