3.3 KiB
FromZero / Language
README in English · Документация
FromZero/Language - пакет из JIT-компилятора и виртуальной машины для языка FZL.
Текущие возможности
На данный момент язык имеет:
- Встроенную функцию
printlineдля вывода аргумента в stdout - Строковый, булев и числовой литералы
- Арифметические операции: сложение, вычитание, умножение, деление, модуло, возведение в степень
- Декларация переменных со следующими типами:
uint,int- целые числа размером с машинное словоi8..i64- целые числа со знакомu8..u64- целые числа без знакаstr- строкиbool- булевы
- Присваивание
- Функции
- Классы и объекты
Примеры кода лежат в директории exl/.
Инструкции по сборке
- Склонировать проект:
git clone https://git.samsonium.dev/samsonium/fz-lang.git - Собрать проект:
make build - Установить проект:
sudo make install
Оба бинарных файла предоставляют справку по использованию при запуске с флагом --help (или -h).
Гайдлайн по разработке
Желательно иметь редактор кода, поддерживающий Clang LSP, так как в проекте есть готовые настройки для
форматтера в виде файла .clang-format.
Для дебаггинга есть два таргета в CMake: build-c для компилятора и build-vm для виртуальной машины.
Оба таргета позволяют указать переменную с путём файла. Например, так:
$ make debug-c FILE=exl/hw.fzs
Для проверки новых фич, нужно использовать make-таргет test, а тесты писать в CMakeLists.txt.
Бенчмаркинг
make bench собирает Release-версию, компилирует benchmarks/loop.fzs один раз и
измеряет время запуска программы в виртуальной машине. По умолчанию выполняются
2 прогрева и 7 замеров; выводятся медиана, среднее, минимум и максимум. Компиляция
исходника в измерения не входит.
Параметры можно переопределить:
make bench RUNS=15 WARMUP=3
make bench BENCH_FILE=path/to/program.fzs MAX_ITER=2000000
Измеряется полное время запуска процесса fz (включая загрузку программы), а не
только цикл интерпретации. Для сопоставимых результатов запускайте бенчмарк на
одной машине и не меняйте нагрузку между прогонами.