Files
fz-lang/README.ru.md

3.3 KiB
Raw Permalink Blame History

FromZero / Language

README in English · Документация

FromZero/Language - пакет из JIT-компилятора и виртуальной машины для языка FZL.

Текущие возможности

На данный момент язык имеет:

  • Встроенную функцию printline для вывода аргумента в stdout
  • Строковый, булев и числовой литералы
  • Арифметические операции: сложение, вычитание, умножение, деление, модуло, возведение в степень
  • Декларация переменных со следующими типами:
    • uint, int - целые числа размером с машинное слово
    • i8..i64 - целые числа со знаком
    • u8..u64 - целые числа без знака
    • str - строки
    • bool - булевы
  • Присваивание
  • Функции
  • Классы и объекты

Примеры кода лежат в директории exl/.

Инструкции по сборке

  1. Склонировать проект: git clone https://git.samsonium.dev/samsonium/fz-lang.git
  2. Собрать проект: make build
  3. Установить проект: 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 (включая загрузку программы), а не только цикл интерпретации. Для сопоставимых результатов запускайте бенчмарк на одной машине и не меняйте нагрузку между прогонами.