Фикус

Язык программирования Фикус – фукнциональный язык программирования с первоклассной поддержкой работы с массивами.

Фикус позволяет писать программы с использованием фукнциональной, императивной и объектно-ориентированных парадигм.

Язык совмещает простоту и удобство написания кода на Python с производительностью C.

Репозиторий проекта

Настоящая версия языка и компилятора поддерживается в репозитории Ficus.

Ключевые особенности языка Фикус

  • простой синтаксис
  • производительность (генерируется код на C)
  • статическая проверка типов
  • вывод типов
  • параметрический полиморфизм
  • функции первого класса
  • алгебраические типы данных и сопоставление с образцом
  • первоклассная поддержка списков, массивов, кортежей, структур
  • генерация списков, массивов, структур (comprehension)
  • неизменяемые структуры данных и значения
  • поддержка параллельных вычислений (через директивы @parallel и @sync)
  • поддержка Unicode в строках и синтаксисе
  • полноценная поддержка типов-сумм и вариантов
  • поддержка большого количества примитивных типов
  • простая интеграция с C и C++ (с помощью директивы @ccode)

Компилятор Фикус генерирует переносимый код на C и C++.

Установка из исходников

Исходные тексты Фикус содержат сгенерированный код компилятора, поэтому первоначальная сборка из исходников делается просто:

Linux, macOS, BSD, WSL

$ make
$ make test # запуск тестов
$ ./bin/ficus -run examples/hello.fx

Windows

Раздел требует уточнения

> nmake -f Makefile.win32
> bin/ficus -run examples/hello.fx

Использование

Далее по тексту $ficus – путь до папки, где собран компиилятор языка Фикус.

Стоит добавить путь до $ficus/bin/ в переменную $PATH.

Запуск приложения

$ ficus -run <file>.fx

Компилятор генерирует файлы на C/C++, компилирует их и запускает полученный исполняемый файл.

Сборка приложения

$ ficus -app <file>.fx
# или
$ ficus <file>.fx

Компилятор генерирует файлы на C/C++, компилирует их создает исполняемый файл.

Это поведение будет переопределено.

Собранный файл приложения находится в папке __fxbuild__.

Список возможностей компилятора

Полный перечень параметров компилятора можно посмотреть с помощью команды ficus --help.

Информация о версии компилятора ficus -version

Переменные окружения

Компилятор использует дополнительные переменные окружения для работы:

  • FICUS_PATH указывает на стандартную библиотеку (если не задано, то используется $ficus/lib). Может содержать список папок, разделенных : на Unix и ; на Windows. Папки, откуда импортируются модули также можно указать в командной строке ключом -I <import_path>.

  • FICUS_CFLAGS используется для передачи компилятору C/C++ флагов для построения сгенерированных .c/.cpp файлов. Другой способ указать их – с помощью ключа -cflags "<cflags>", например, -cflags "-ffast-math -mavx2".

  • FICUS_LINK_LIBRARIES содержит флаги линковщика и дополнительные линкуемые библиотеки. Другой способ указать их – с помощью ключа -clibs "<clibs>".

Фактические значения, используемые компилятором, можно посмотреть с помощью команды ficus -print-env

Лицензия

Код распространяется под лицензией Apache 2, см. файл LICENSE

Признательность за проделанную работу


Содержание