[#] Mettle 0.15.0 и 0.15.1
robot(spnet, 1) — All
2026-08-06 14:44:05


<img
itemprop="thumbnail"
class="medium-image"
src="https://www.linux.org.ru/images/23846/1000px.jpg"
alt="Mettle 0.15.0 и 0.15.1"
srcset="images/23846/500px.jpg 500w, https://www.linux.org.ru/images/23846/original.png 1000w"
sizes="100vw" style="position: absolute; max-height: 90vh"

width=1000 height=1000>

31 июля состоялись выпуски 0.15.0 и 0.15.1 [ Mettle ]( https://github.com/The-Mettle-Project/Mettle ) — языка системного программирования со статической типизацией:



Нативная поддержка x86-64 (+ AVX2), AArch64, NVIDIA PTX, SPIR-V (OpenCL 2.0).



Собственный линкер Windows PE.



Собственный отладчик на уровне исходного кода:

• Без внешних форматов.

• Точки останова, пошаговая отладка, а также чтение и запись переменных в реальном времени через --debug-hooks.

• Без gdb, PDB и DWARF.



Бэкенд CUDA.



Без LLVM, виртуальной машины и рантайма.



Выполнение на этапе компиляции: функции с атрибутом @test запускаются в интерпретаторе компилятора командой mettle test, без создания бинарного файла. Команда mettle trace интерпретирует одну функцию и выводит построчное отслеживание значений. Команда --pgo интерпретирует функцию main() на этапе сборки и передаёт измеренные частоты вызовов обратно в оптимизатор.



Проверка заимствований ( [ borrow checker ]( https://github.com/The-Mettle-Project/Mettle/blob/main/docs/borrow-checker.md ) ):

ОписаниеПримерАналог Rust

Use-after-free (direct)free(p); p[0]ownership / Drop
Double freefree(p); free(p)ownership
Use-after-free through an aliasq = p; free(q); p[0]move semantics
Use-after-free across a call (inferred)consume(p); p[0] where consume frees pmove semantics
Borrow outliving its stack scope{ var x; g = &x[0]; } use(g)lifetimes ('a)
Interior pointer after reallocq = &buf[i]; realloc(buf,..); q[0]iterator invalidation
Interior pointer after freeq = &buf[i]; free(buf); q[0]dangling reference
Returning the address of a stack localreturn &localfn() -> &T lifetime error
Leak (no owner on any path)var p = malloc(n); return 0(Rust frees via Drop)

Компилятор основан на библиотеке [ libmtlc ]( https://github.com/The-Mettle-Project/libmtlc ) :

• Собственный промежуточный язык (IR).

• Классические и GNN оптимизаторы кода.

• Нативная генерация кода (x86-64 (+ AVX2), AArch64, NVIDIA PTX, SPIR-V (OpenCL 2.0)).

• Нативная компоновка.

Проекты написаны кейптаунским программистом [ suidvandiewereld ]( https://github.com/suidvandiewereld ) на языке C (стандарт C99) и распространяются по лицензии Apache-2.0.

https://www.linux.org.ru/news/development/18353611