Skip to content

Рефал-5λ, версия 2.5

Compare
Choose a tag to compare
@Mazdaywik Mazdaywik released this 31 Jan 22:27
· 795 commits to master since this release

N-модули, новые ключи командной строки и режимы компиляции

  • Опция --ref5rsl добавляет в путь поиска переменную окружения REF5RSL.

  • Сгенерированные файлы .rasl и .cpp помещаются по умолчанию в текущую папку, альтернативную папку можно указать при помощи --temp-dir=… (эта опция ранее поддерживалась, но игнорировалась).

  • Работает опция --keep-rasls, ранее она игнорировалась. По умолчанию .rasl-файлы удаляются после перекомпиляции.

  • Работает опция --overwrite-exist-rasls, ранее она игнорировалась. По умолчанию существующие .rasl-файлы с теми же именами перезаписываются.

  • ИСПРАВЛЕНО: формирование имени целевого файла. Ранее оно могло иметь вид [email protected] в некоторых редких случаях.

  • Флаги --cpp-command-exe-suf=…, --cpp-command-lib-suf=…. На Windows они могут использоваться для передачи .def-файла для библиотек, на Linux для передачи дополнительных внешних библиотек (вроде -lm, -ldl).

  • В шаблоне конфигурации компилятора C++ задаются переменные CPPLINEL, CPPLINEESUF, CPPLINELSUF.

  • ИСПРАВЛЕНО: в случае успешной компиляции выдаётся сообщение Compilation succeeded вместо ошибочного Compilation successed.

  • Для поддержки N-модулей изменился API рантайма.

  • Поддерживаются N-модули (.dll, .so): их генерация и загрузка.

  • Для стандартных библиотек Hash, Library, GetOpt, LibraryEx, Platform генерируются .dll/.so для динамической загрузки, располагаются в папке /bin.

  • Инсталлятор на Windows устанавливает переменную среды RL_MODULE_PATH.

  • Небольшие уточнения в README.md.

  • Префикс slim(-debug).exe-prefix не содержит библиотеку Hash.

  • Расширен аварийный дамп. Помимо поля зрения выдаётся сводка из домена: списки загруженных модулей, функций в них и идентификаторов.

  • ИСПРАВЛЕНО: предупреждение компилятора GCC на рантайм.

  • ИСПРАВЛЕНО: функция Compare выполняется за один виртуальный шаг.

  • Вместо папки /srlib используется папка /lib.

  • Флаг компилятора --no-sources, позволяющий создать целевой файл содержащий только ссылки и/или флаги --incorporated. Без флага --no-sources компилятор выдаёт сообщение об ошибке о том, что исходники отсутствуют.

  • Изменена структура папки /lib в соответствии с задачей #87.

  • Префикс rich(-debug).lib-prefix, содержащий LibraryEx, Hash и GetOpt.

  • ИСПРАВЛЕНО: компилятор падал при наличии файла filename.cpp при отсутствии filename.rasl.

  • Модуль может быть сам себе псевдонимом: допустима ситуация, когда модуль содержит и псевдоним --incorporated=… и ссылку с тем же именем.

  • Скрипты srefc(.bat) и srmake(.bat) поддерживают новые ключи (в соответствии с #87):

    • ключи --slim, --rich, --scratch определяют префикс или его отсутствие,
    • ключи --static, --dynamic, --auto определяют компоновку с библиотеками LirbraryEx и GetOpt: статическая, динамическая и по умолчанию (статическая для исполнимых файлов, динамическая для библиотек),
    • ключи --debug, --no-debug включают и отключают компоновку с отладочными средствами, по умолчанию отладка отключена.

    Эти ключи должны быть первыми параметрами srefc и srmake, их может следовать неограниченное количество, последние имеют приоритет.


Для установки на Windows скачайте и запустите файл setup-refal-5-lambda-2.5.exe.

Для установки на Linux и macOS выполните в терминале следующую команду:

curl -L https://bmstu-iu9.github.io/refal-5-lambda/setup.bash | bash

При этом на компьютере должен быть установлен компилятор GCC C++ или Clang.

Либо программу можно собрать из исходников (архивы bootstrap-refal-5-lambda-2.5.zip или bootstrap-refal-5-lambda-2.5.tar.gz)