Files
fz-lang/README.ru.md

67 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FromZero / Language
[README in English](./README.md) · [Документация](./docs/ru/index.md)
**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` для виртуальной машины.
Оба таргета позволяют указать переменную с путём файла. Например, так:
```shell
$ make debug-c FILE=exl/hw.fzs
```
Для проверки новых фич, нужно использовать make-таргет `test`, а тесты писать в `CMakeLists.txt`.
### Бенчмаркинг
`make bench` собирает Release-версию, компилирует `benchmarks/loop.fzs` один раз и
измеряет время запуска программы в виртуальной машине. По умолчанию выполняются
2 прогрева и 7 замеров; выводятся медиана, среднее, минимум и максимум. Компиляция
исходника в измерения не входит.
Параметры можно переопределить:
```shell
make bench RUNS=15 WARMUP=3
make bench BENCH_FILE=path/to/program.fzs MAX_ITER=2000000
```
Измеряется полное время запуска процесса `fz` (включая загрузку программы), а не
только цикл интерпретации. Для сопоставимых результатов запускайте бенчмарк на
одной машине и не меняйте нагрузку между прогонами.