Добрый вечер, Михаил! В своём ответе также отвечу на несколько соседних писем. По поводу установки онлайн и офлайн. Для разработки доступ в интернет требуется, т.к. сборочные скрипты bootstrap.bat и bootstrap.sh выкачивают подмодуль. Впрочем, разрабатывать без интернета не очень логично, т.к. исходники лежат в GitHub и новый код всё равно придётся туда коммитить. Установка может проходить в нескольких вариантах: https://github.com/bmstu-iu9/refal-5-lambda/releases/tag/3.3.1 На unix-подобных системах Linux и macOS можно использовать модный нынче способ установки curl -L … | bash. Но доступны и офлайн-варианты: распаковать архив и выполнить в нём ./bootstrap.sh (скрипт из скачанного архива соединения с интернетом не требует). Фактически, curl -L … | bash скачивает архив, распаковывает и вызывает в нём ./bootstrap.sh. На Windows используется классический setup.exe. Под современными дистрибутивами Linux и в последних версиях macOS всё собирается без проблем. На старых дистрибутивах Linux, например, на Fedora 16, есть проблемы со сборкой, которые я пока не решил. Самая ранняя система Windows, на которой я регулярно собираю исходники — Windows 7. Однако, нет причин не собраться и на Windows XP, и возможно даже, Windows 2000, но там я не пробовал. На Windows 98 собрать не получится, т.к. батники написаны для cmd.exe, а на Win9x — command.com. Вариант с curl -L … | bash ставит систему в домашний каталог (~/.local/share/refal-5-lambda), прописывает PATH в ~/.bashrc или в ~/.bash_profile. Setup.exe на Windows тоже ставит в профиль пользователя (%APPDATA%). Если скачивать архив и собирать из исходников, то куда захотите, туда и ставьте. Установку в классические каталоги Linux (/usr/bin и прочие) я пока не поддерживаю, т.к. в этом не очень разбираюсь. Если Nix требует установки туда, то открывайте заявку в GitHub (https://github.com/bmstu-iu9/refal-5-lambda/issues), будем разбираться вместе. По поводу интеграции с IDE. Есть плагин <https://github.com/bmstu-iu9/RefalFiveLambdaPlugin> для IntelliJ IDEA, плагин умеет подсвечивать синтаксис, автодополнять имена и показывать на синтаксические ошибки. Есть поддержка <https://github.com/bmstu-iu9/refal-5-lambda/tree/master/editors> нескольких текстовых редакторов: Vim, Far Colorer и VSCode. «Рефал-5λ можно ограничить (например, опцией командной строки), чтобы он поддерживал только то, что понимает суперкомпилятор?» Ну, для начала, SCP4 (я так понял, о нём идёт речь) сам по себе не очень полностью поддерживает Рефал-5. Например, не поддерживаются программы из нескольких файлов ($EXTERN в одном файле, $ENTRY в другом). С суперкомпиляцией программ, которые вызывают функцию Mu, есть некоторые сложности. SCP4 знает не все имена встроенных функций. SCP4 — это экспериментальный суперкомпилятор, но не промышленный. Есть опция командной строки, которая ограничивает компилятор тем, что понимает классический Рефал-5 (т.е. запрещаются вложенные функции и другие расширения синтаксиса). Называется эта опция --classic. Об опции, которая ограничивала бы исходники тем, что поддерживает SCP4, я даже не задумывался. И мне не очевидны сценарии работы, где эта опция была бы полезна. SCP4 после некоторой его доработки напильником может быть собран Рефалом-5λ. В его сборочном скрипте зашиты команды запуска refc и refgo. Сам суперкомпилятор многопроходный, проходы выделены в отдельные процессы, запускаемые последовательно. Управляющий компонент запускает эти процессы посредством того же refgo. Всё это можно переделать, чтобы собиралось при помощи Рефала-5λ, я это делал когда-то. (Есть адаптированные исходники: https://mazdaywik.github.io/direct-link/scp4_000925-srefc.zip, только в них нужно заменить srefc → rlc, srmake → rlmake.) «Научить суперкомпилятор функциям высших порядков будет не просто…» Я об этом как-то делал доклад в ИПМ имени Келдыша РАН. Там возникают всякие сложности со ссылочной эквивалентностью замыканий, когда вложенные функции начинают специализироваться. Да, там всё непросто, если стремиться к действительно эквивалентным преобразованиям. Однако, если забить на нарушение инвариантов, которые в Рефале должны быть незыблемыми, то всё становится проще. «а сделать ещё пакет для суперкомпилятора было бы полезно» На эту тему лучше напрямую списаться с Андреем Петровичем Немытых: nemyt...@math.botik.ru <mailto:nemyt...@math.botik.ru> . «Можно, конечно, и по Zoom или совместить offline и online, какое-то оборудование для видеоконференций там есть.» Могу приехать и выступить. Так даже интереснее. С уважением, Александр Коновалов From: Mike Potanin mpotanin_AT_gmail.com <refal@botik.ru> Sent: Monday, October 11, 2021 1:11 PM To: refal@botik.ru Subject: Re: Актуальные реализации и текущее состояние. Спасибо! Рефал-5λ можно ограничить (например, опцией командной строки), чтобы он поддерживал только то, что понимает суперкомпилятор? Научить суперкомпилятор функциям высших порядков будет не просто, а сделать еще пакет для суперкомпилятора было бы полезно. Можно, конечно, и по Zoom или совместить offline и online, какое-то оборудование для видеоконференций там есть. On Sun, Oct 10, 2021 at 4:33 PM Александр Коновалов a.v.konovalov87_AT_mail.ru <http://a.v.konovalov87_AT_mail.ru> <refal@botik.ru <mailto:refal@botik.ru> > wrote: Добрый день, Михаил! На данный момент в системе контроля версий, на сколько мне известно, живут интерпретатор Рефала-2: https://github.com/cmc-msu-ai/refal и мой Рефал-5λ: https://github.com/bmstu-iu9/refal-5-lambda Первый уже 6 лет не обновляется, второй активно развивается. Остальные лежат в zip-архивах на своих сайта. Какая версия наиболее актуальна? Позволю себе быть необъективным и скажу, что моя. 😉 Рефал-5λ собирается и работает под тремя основными операционными системами: Windows, Linux и macOS, на процессорах с разрядностью 32 и 64 бита. А собраться рассказать — это приехать на Воронцово поле (см. адрес по Вашей ссылке) или можно дистанционно через Zoom? С уважением, Александр Коновалов From: Mike Potanin mpotanin_AT_gmail.com <refal@botik.ru <mailto:refal@botik.ru> > Sent: Sunday, October 10, 2021 3:31 PM To: refal@botik.ru <mailto:refal@botik.ru> Subject: Актуальные реализации и текущее состояние. Добрый день! Рефалом заинтересовался мой друг, мантейнер пакетов Nix и кофаундер хакспейса. Он спрашивает какие версии наиболее актуальны, чтобы сделать для них пакеты в Nix (желательно работающие под Linux и хранящиеся не в zip-архиве, а в системе контроля версий, позволяющей сослаться на конкретный коммит ;-)) и предлагает как-нибудь собраться у него в хакспейсе (https://t.me/undefspace), чтобы кто-нибудь рассказал про текущее состояние Рефала и обсудить, куда двигаться. С уважением, Михаил Потанин
RE: Актуальные реализации и текущее состояние.
Александр Коновалов a . v . konovalov87_AT_mail . ru Mon, 11 Oct 2021 09:39:52 -0700