-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Подготовить архитектуру компилятора к ВКР2021 #349
Comments
@dynamic-pie и @torrentino555 сменили темы и научного руководителя ВКР, поэтому задачи #231, #248 и #283 в рамках ВРК2021 выполняться не будут. Однако, задача всё равно актуальна, т.к. позволит заметно упростить код для понимания. Кроме того, не исключено, что упомянутыми тремя задачами я сам займусь. Решение настоящей задачи позволит мне оптимизировать условия, не конфликтуя с @Apakhov’ым. |
Переименование HighLevelRASL-Common.ref → HighLevelRASL-Common+Condition.ref в отдельной ветке для сохранения истории правок.
Переименование HighLevelRASL-Condition.ref → HighLevelRASL-Common+Condition.ref в отдельной ветке для сохранения истории правок.
Слияние двух отдельных веток. История правок в объединённом файле сохранится.
Переименование обратно HighLevelRASL-Common+Condition.ref → HighLevelRASL-Common.ref
Из постановки текущей задачи исключён бенчмарк, он вынесен в независимую задачу #350. |
Файл OptTree-Drive.ref переименован для сохранения истории правок.
Техническое слияние двух веток. Неиспользуемые функции в файлах OptTree-Drive.ref и OptTree-Drive-Expr.ref удалены. История правок, отображаемая в git blame, сохранена.
Попутно актуализирован комментарий, мультимножество в нём не было описано.
Эта задача блокирует задачи #340, #283, #231 и #248.
Требуется отделить код, который будет изменяться в рамках задачи #340 («Прогонка, которая не зацикливается») от кода, который будет изменяться в рамках остальных трёх задач, связанных с оптимизациями условий и нетривиальных образцов (#283, #231 и #248). Изменения в этих трёх задачах будут координироваться отдельно.
Такое разделение выполнить довольно просто. Задача #340 подразумевает выполнение нескольких прогонок в отдельно взятом результатном выражении. Результатом такой прогонки будет набор пар: сужения на переменные выражения + преобразованное выражение. Код, выполняющий преобразование в функции, будет к прогонке в выражении относиться как к чёрному ящику: получает набор новых сужений и новых результатных выражений, дробит предложение по вариантам, применяет к образцу сужения и заменяет выражение на результат прогонки. На данный момент выражением является только правая часть предложения при левой части в виде L-образца без условий. В дальнейшем будет интереснее (#283, #231, #248).
Эта задача подразумевает рефакторинг файла
OptTree-Drive.ref
с выносом логики прогонки в отдельный новый файлOptTree-Drive-Expr.ref
. Соответственно, @Apakhov будет работать только в файлеOptTree-Drive-Expr.ref
, а @torrentino555 и @dynamic-pie — в файлеOptTree-Drive.ref
. Вопрос координации совместной работы @torrentino555 и @dynamic-pie будет решаться в процессе работы.Реализовывать новый алгоритм обобщённого сопоставления #322 без модификации алгоритма специализации смысла мало: на имеющихся прогонках прирост производительности будет небольшим. Поэтому нужно подготовить и компонент специализации.
Задача #340 требует алгоритма проверки отношения Хигмана-Крускала, который реализован в
OptTree-Spec.ref
. Можно просто объявить соответствующую функцию entry и добавить$EXTERN
. Однако, в этом случае получится странная связь между прогонкой и специализацией. Поэтому нужно выделить отношение Хигмана-Крускала в отдельный файл.Нужно решить важный вопрос: для задач #322+#251 и #340 использовать новые опции или менять код на месте?
Вариант добавления новых опций, преимущества и недостатки:
Вариант изменения кода на месте.
Так что более предпочтительным выглядит второй вариант — изменение кода на месте.
На основе https://github.com/Mazdaywik/simple-refal-benchmark подготовить хороший, годный бенчмарк для Рефала-5λ, в том числе, умеющий сравнивать производительность с Рефалом-5 там, где это возможно.The text was updated successfully, but these errors were encountered: