LINUX.ORG.RU

Mettle 0.15.0 и 0.15.1

 , mettle, ,


0

3

31 июля состоялись выпуски 0.15.0 и 0.15.1 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):

    ОписаниеПримерАналог 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:

  • Собственный промежуточный язык (IR).
  • Классические и GNN оптимизаторы кода.
  • Нативная генерация кода (x86-64 (+ AVX2), AArch64, NVIDIA PTX, SPIR-V (OpenCL 2.0)).
  • Нативная компоновка.

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

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

★★★★★

Проверено: cetjs2 ()
Последнее исправление: hobbit (всего исправлений: 2)

Наконец-то нашелся герой, который вытеснил Дадю Степу из новостей. Жаль, что не до конца.

Irma ★★★★
()
Последнее исправление: Irma (всего исправлений: 1)
Ответ на: комментарий от dynamic_cast

И когда just for fun проект закроется?

В чём ирония таких вот вопросов?

Закроется и закроется - не все же проекты должны/обязаны становиться распространёнными как Linux. Удовольствие разработки получено - значит цель свою проект выполнил.

Просто Linux был одним из первых вот и взлетел. А так-то и проектов операционных систем одного автора не так уж и мало.

unDEFER ★★★★★
()

выпуски 0.15.0 и 0.15.1

Нужно не пущать выпуски до версии 1.0 во избежании «как бы чего не вышло».

Проекты написаны кейптаунским программистом

Это новая национальность или гражданство? :)

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

Более интересно, зачем вообще понадобился свой собственный линкер. И если он действительно нужен для каких-то языкоспецифичных вещей, то что тогда используется для «эльфов»? Про виндовый явно в новости написано, а с линуксом что?

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

Я в таких случаях молча ставлю атланту-комментатору клоуна. Как и сейчас, предлагаю присоединиться.

Хотя не помешала бы отдельная реакция «не дождётесь» в виде кукиша :) Учитывая, что комментарии «ненужно» удостоились отдельного пункта в офтопик-листе… :)

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

то что тогда используется для «эльфов»?

ld, для опции --musl выполняется musl-gcc.

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

Было бы неплохо сделать загрузчик exe, но без реализации winapi (линковаться вместо этого к libc.dll) и сделать дистр на этой основе. По идее это практически не будет отщичаться от загрузки динамического линкера из DT_INTERP, разве что бинарь маппить будет не ядро

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

Растокапец близок? :)

«У хомяка же задача в духе Иисуса - показать детям смерть.» Показали миру borrow checker – можно и на покой.

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

А до места проживания не додумался?

Обычно указывают страну (ЮАР), а место проживания указывают точнее «ты с какого района» Кейптауна? :)

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

Я понадеялся, что многие знают, где находится Кейптаун и без «ИИ». :)

dataman ★★★★★
() автор топика
В кейптаунском порту,
С пробоиной в борту,
«Жанетта» поправляла такелаж.
И прежде чем уйти
В далёкие пути
На берег был отпущен экипаж.
...
olelookoe ★★★★
()

Этот проект - это же ИИ слоп. Я таких «языков» могу 10 штук за вечер нагенерить.

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

Я таких «языков» могу 10 штук за вечер нагенерить.

Давай, до воскресенья чтоб успел.

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

Я таких «языков» могу 10 штук за вечер нагенерить

Доработай лучше язык Шекспир:)

REDDERa
()
Последнее исправление: REDDERa (всего исправлений: 1)
Ответ на: комментарий от hobbit

«не дождётесь» в виде кукиша

проще и понятней - один палец (учимся у линуса)

sunjob ★★★★★
()

У меня тоже есть свой язык программирования который лучше остальных языков. Может тоже о нем новость как нибудь запилю. Язык используеся на https://db.qumir.dev

Reset ★★★★★
()
Последнее исправление: Reset (всего исправлений: 1)
Ответ на: комментарий от quickquest

Такая версия у настоящего джастфофана может быть достигнута только в пределе. Ну или волюнтаристскими незаконными методами. Обычно нумерация выглядит так: 0.9, 0.99, 0.999,...

Vudod ★★★★★
()

Вообще страшно, что он это на C написал. То, что взлетело, последние десятилетия обычно сначала на Окамле писали, тот же Руст. Потому что так безопаснее и точнее. Потом уже переписывали на себя любимого.

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

free(ptr)

ptr[0] = 1;

Segmentation Fault.

AAAAAAA!, нужен новый язык! Этот - сложный!

Программист нынче не тот. Ребята, изучите как работают указатели, глядишь, и Rast вам нужен не будет и метла.

vvb333007
()

Собственный синтаксис, смешное количество тестов, только amd64/arm64 + cuda, ну даёт

ac130kz ★★★
()
Последнее исправление: ac130kz (всего исправлений: 1)
Ответ на: комментарий от Irma

Дядя Стёпа пеликан, за обедом съел стоп-кран.

Стакановец он! — Не иначе.

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