У всех современных языков программирования синтаксис постоянно усложняется с выходом каждой новой версии (стандарта). Это вынужденная плата за развитие языка и постоянное повышение "налога" на вход для новичков.
TrustLang — это язык-«надстройка» над
Безопасная память без сборщика мусора
Управление памятью в стиле
Переполнение стека — как исключение
Обработка переполнения стека программы как обычного программное исключения, вместо аварийное завершение с segfault. Защита стека →
Автоматичсеквя защита от dangling ссылок
Статический аналих висящих ссылок (аналог владения и заимствования в Rust),
но для
Система типов
Статическая и динамическая типизация.
Тип можно указать явно или оставить автоматический вывод из контекста.
Возможность использование типов и шаблонов
Интеграция с C/C++
Вставки фрагнметов
Формальная верификация
Контрактное программирование (пред/пост-условия, утверждения). Экспорт кода и контрактов в SMT-решатель (Z3). Верификация* →
Как это выглядит
Пример простой программы на TrustLang с числами неограниченной точности, автоматическим выводом типов.
Запуск программы как bash скрипта с автоматической компиляцией С++ кода при первом запуске и последующим выполнением бинарного файла. Автоматическиая перекомпиляция при измении исходника.
#!../_build/trust --run -Wsigil=ignore -Wembed=ignore
$fact := 1\1; # Autotyping
$mult:Int32 := 1; # Fixed type
while( mult <= 40 ) {
fact *= mult; # факториал 40, точность не теряется
{% $mult++ %}; # Инкремент как фрагмент C++ кода
};
@print('{}', fact);
Вывод:
815915283247897734345611269596115894272000000000
Еще примеры и итоговый сгененрированный