8000 Тестирование, рефакторинги, оптимизации и исправления после ВКР · Issue #359 · bmstu-iu9/refal-5-lambda · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Тестирование, рефакторинги, оптимизации и исправления после ВКР #359
Open
@Mazdaywik

Description

@Mazdaywik

Только что завершились две выпускные квалификационные работы:

Эти расширения станут основным новшеством версии 3.4. Однако, прямо сейчас создавать новую версию преждевременно по следующим причинам.

  1. @Apakhov и @VladisP намеренно работали с очень ограниченным объёмом кода (в смысле, я ограничил их работу). Работа @Apakhov’а была ограничена файлом OptTree-Drive-Expr.ref, работа @VladisP’а — файлами GenericMatch.ref и OptTree-Spec.ref. Однако, полноценная реализация новых функций требует изменения куда большего объёма кода (например, скрипта в OptTree.ref).

    Ограниченность поля для работы @Apakhov’а и @VladisP’а была намеренной, т.к. этого было достаточно для выполнения содержательной части задачи.

  2. Ациклическая прогонка @Apakhov’а делает ненужной авторазметку прогоняемых функций в том виде, в каком она сейчас есть. Исходно разметка была призвана не допускать пометки $DRIVE для рекурсивных функций. Сейчас рекурсивные функции могут иметь метку $DRIVE, их прогонка не зациклится.

  3. Со специализацией без шаблона @VladisP’а становятся ненужными шаблоны в абстрактном синтаксическом дереве. Но, чтобы их удалить, нужны более глубокие правки.

  4. Да, авторазметка для специализации тоже становится ненужной.

  5. Основные компоненты для Универсальная древесная оптимизация $OPT #314 уже реализованы (#251, #322, #340). Фактически в Универсальная древесная оптимизация $OPT #314 нужно реализовать поддержку псевдокомментариев так, как она описана (и в следующем релизе удалить старый синтаксис).

  6. Написанный студентами код может быть неоптимальным, т.к. у них нет опыта в оптимизации Рефала.

  7. Новые оптимизации работают глубже, из-за чего могут выявиться проблемы в других частях системы. В частности, обостряются проблемы с раздуванием программ (Древесные оптимизации раздувают программы #332). На данный момент проблема купирована в 54c28cad9921556d208bc43dc88f55943d7885cb.

  8. Хотя все автотесты выполнились, включая и случайные, тестовое покрытие, выполненное студентами неполное. Требуется более тщательное тестирование.

  9. Автотесты проверяют корректность. Содержательную сторону нужно тестировать вручную.

  10. Даже если обе оптимизации в отдельных ветках работали порознь, при работе вместе возможны проблемы.

  11. Можно удалить ObjectMatch.ref, т.к. новый 5965 лгоритм сопоставления покрывает этот случай.


В первую очередь нужно

  • самоприменить компилятор на максимальных оптимизациях,
  • проверить, что совместная работа оптимизаций работает так, как надо (остаточная программа в логе соответствует ожиданиям).

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

    0