Thursday, April 13, 2023

Язык программирования Аргентум

(Argentum programming language: aglang.org)



Пару месяцев назад я начал новый проект - это язык программирования Argentum.
А как же Фламберг, спросите вы и будете совершенно правы. Фламберг был хорошим оценочным проектом, на котором обкатались идеи, многие из которых стали основой Аргентума - это объектная модель, интерполяция строк, легковесные лямбды. Вместе с тем было выброшено и переделано все, что мешает в больших структурированных проектах - синтаксис основанный на отступах, модульность через текстовые инклуды, тяжелый interop с Си.

Итак новый язык:

  • Работает без сборщика мусора, поэтому не запинается в лучайные моменты времени, не жрет двух- трехкратный объем памяти, и не тратит лишнего процессорного времени.
  • Гарантированно удаляет объекты в предсказуемые моменты времени.
  • Гарантирует отсутствие утечек памяти (в отличие от Java, Rust, Swift и т.д.)
  • Язык безопасен:
    • Проверки типов -только динамические (но очень быстрые).
    • Синтаксически невозможно обратиться по null-указателю или optional none.
    • Нет висящих ссылок, и двойного удаления объектов.
    • Нет race между потоками.
    • Изменяемые объекты не могут шарится между иерархиями объектов, а разделяемые объекты не могут изменяться.
    • Неизменяемость объектов - гарантирована. Нет const_cast, нет взлома финальности через рефлексию.
  • Язык очень быстр:
    • Прямая компиляция в машинный код.
    • Динамическая проверка типов - пара машинных инструкций.
    • Вызов методов интерфейса и приведение к интерфейсу имеет такой же порядок сложности, что и вызов обычного метода класса.
    • Работа с делегатами и лямбдами не требует аллокаций.
    • Счетчики в шареных объектах не используют атомарные инструкции (вообще примитивы синхронизации используются только при передаче объектов между пртоками).
  • Язык компактен (hello_world.exe может быть собран в 12Kb без дополнительных DLL).
  • Программа на Аргентуме может напрямую вызывать код на Си.

Степень готовности проекта

Вместе с тем язык далек от завершения - не хватает нескольких важных частей - многопоточноти, параметризации типов, не хватает синтаксического сахара, поддержки отладчика. Но как говориться, все впереди.

Ссылки


No comments:

Post a Comment