Рефал-5λ, версия 2.5
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
)