LINUX.ORG.RU

Mettle 0.17.0

 , , , ,


0

3

1 сентября состоялся выпуск 0.17.0 компилятора языка системного программирования Mettle и библиотеки libmtlc.

Основные возможности:
  • Без LLVM, виртуальной машины и сборки мусора.
  • Нативная генерация кода CPU: x86-64 (+ AVX2), ARM64.
  • Нативная генерация кода GPU: NVIDIA PTX, SPIR-V (подробнее: gpu.md).
  • Нативная компоновка Windows PE и ELF (подробнее: linker-build-pipelines.md).
  • Без сторонних runtime (подробнее: runtime-model.md).
  • Собственный промежуточный язык (подробнее: ir.md).
  • Классические оптимизаторы кода и экспериментальная оптимизация на обученной нейросети (подробнее: ml-opt.md).
  • Встроенный ассемблер.
  • Собственный отладчик на уровне исходного кода:
    • без внешних форматов;
    • точки останова, пошаговая отладка, а также чтение и запись переменных в реальном времени с опцией компилятора --debug-hooks;
    • без gdb, PDB и DWARF.
  • Тестирование во время компиляции: функции с атрибутом @test запускаются в интерпретаторе компилятора командой mettle test, без создания бинарного файла. Команда mettle trace интерпретирует одну функцию и выводит построчное отслеживание значений. Команда --pgo интерпретирует функцию main() на этапе сборки и передаёт измеренные частоты вызовов обратно в оптимизатор (подробнее: testing.md).
  • Проверка безопасности памяти командой --safe (подробнее: memory-safety.md).
  • Проверка заимствований (подробнее: borrow checker.md).

Проект написан на языке C и распространяется по лицензии Apache 2.0.

Наиболее важные нововведения
  • Собственный линкер ELF.
  • Встроенный ассемблер.
  • Интерполяция строк в любом выражении. Например: println("{value}").
  • В std/core добавлены типы Result<T, E> и Option<T>.
  • Многомерные массивы.
  • Рекурсивные тегированные перечисления: два типа могут указывать друг на друга.
  • Примерно удвоилась скорость компиляции на обеих платформах.

>>> Исходный код на GitHub

>>> Документация

>>> Бенчмарки

>>> Подробности на GitHub

★★★★★

Проверено: Dimez ()
Последнее исправление: dataman (всего исправлений: 12)

Для чего нужен? Если это всё ради аннотации «@simd!», то может лучше в C++ такую же фичу добавить?

VladimirP ★★★★
()
Ответ на: комментарий от VladimirP

Там и так уже надобавляли что с другой стороны вываливается

zurg ★★
()

Опять это ИИ слоп запостили. Модератор, может начнете фильтровать?

dizza ★★★★★
()

Проект написан на языке C

То есть даже бутстрап ещё не осилили?

распространяется по лицензии Apache

Вдвойне не нужно.

zabbal ★★★☆☆
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.