Изменения в версии 2.3.21

From EjudgeWiki

Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 2.3.21

ejudge.xml

Поддерживается новый элемент <hosts_options>, который позволяет определять дополнительные параметры работы системы ejudge в зависимости от хоста, на котором запущен ejudge.

contest.xml

Добавлен атрибут old_run_managed элемента <contest>. Если значение атрибута равно yes, то тестирование решений участников для этого турнира выполняется в режиме совместимости с предыдущими версиями с помощью программы ej-run.

Атрибут run_managed теперь указывает, что решения участников данного турнира тестируются с помощью программы ej-super-run. Таким образом, при переходе от предыдущих версий к текущей тестирование решений участников будет проводится с помощью новой программы ej-super-run, если только в турнире не будет явно установлен атрибут old_run_managed.

serve.cfg

В турнирах по системе KIROV поддерживается плавное изменение штрафа за посылку в конфигурационной переменной date_penalty.

В спецификации тестеров поддерживается значение dll32 для конфигурационной переменной secure_exec_type для включения безопасного режима у 32-битных приложений на 64-битной системе.

ej-compile

Вывод компилятора сохраняется даже в случае, когда компиляция была успешной.

ej-contests

Исправлена ошибка при интерпретации операции преобразования типов в выражении фильтра посылок.

Исправлено неправильное отображение максимального времени выполнения при просмотре протокола проверки.

Исправлена ошибка при преобразовании файлов в кодировке UTF-16 с BOM-маркером в файлы в кодировке UTF-8.

Корректно обрабатываются недопустимые идентификаторы судей в списке сообщений (вопросы участников судьям и ответы судей).

В случае, когда турнир не может быть загружен из-за ошибки в конфигурационных файлах турнира, на странице "Contest is not available" отображается фрагмент лог-файла с диагностикой ошибки.

В турнирах по системе KIROV поддерживается плавное изменение штрафа за посылку в зависимости от времени сдачи. Для этого расширен синтаксис описания штрафов в конфигурационной переменной date_penalty.

Пакет запроса на тестирование, передаваемый программе ej-run или ej-super-run имеет текстовый формат, аналогичный конфигурационным файлам.

Вывод компилятора отображается под исходным текстом программы при просмотре исходного текста программы.

ejudge-control

Поддерживается запуск нескольких процессов ej-super-run параллельно в зависимости от значения опции parallelism настроек хоста в файле ejudge.xml.

Например во фрагменте конфигурационного файла ejudge.xml:

  <hosts_options>
    <host name="192.168.10.100">
      <option name="parallelism" value="2" />
    </host>
  </hosts_options>

Задается, что на хосте с IP-адресом 192.168.10.100 должно параллельно запускаться два экземпляра процесса ej-super-run, таким образом, может параллельно тестироваться два решения участников.

ej-normalize

Новая программа, которая выполняет преобразование файлов с тестами. В предыдущих версиях ejudge преобразование тестов было встроено в программу ej-super-server. Начиная с данной версии, если у турнира установлен режим advanced_layout, то генерируется Makefile, в котором используется ej-normalize.

ej-super-run

Новая программа, предназначенная для замены программы ej-run. Программа ej-super-run запускается в режиме демона при запуске ejudge и управляет запуском на тестирование и проверкой ответов всех турниров. Программа ej-super-run может запускаться в нескольких экземплярах на одной системе для организации тестирования на многоядерных процессорах.

ej-super-run-control

Новая программа, предназначенная для управления программой ej-super-run.

ej-super-server

При выполнении команды "Check contest settings" в турнира с включенным режимом advanced_layout для каждой задачи генерируется Makefile и вызывается make с целью check_settings.

В командах компиляции проверяющих программ для языков gcc, g++, fpc, dcc устанавливается макрос EJUDGE (-DEJUDGE), который можно использовать в директивах условной трансляции.

Исправлены некоторые ошибки в веб-интерфейсе редактирования тестов.

В веб-интерфейсе редактирования тестов выполняется проверка входных данных тестов, если для задачи задана проверяющая программа для тестов (валидатор).

По входным данным теста автоматически генерируется результат работы (выходной файл), если для задачи задано эталонное решение.

При генерации Makefile поддерживаются проверяющие программы и эталонные решения на языках fpc, dcc, java, python в добавление к языкам gcc, g++.

При генерации Makefile генерируется правило check_tests для проверки тестов с помощью валидатора, если он задан для задачи.

Поддерживается запуск make для выполнения различных задач (проверка тестов, генерация ответов и т. п.).

Для слежения за изменением содержимого каталогов используется механизм inotify (только для отслеживания процессов ej-run в режиме совместимости).

При создании нового турнира по умолчанию устанавливается режим advanced_layout.

При создании нового турнира пользователю, от имени которого работает система ejudge (как правило, это ejudge), даются максимальные административные права.

При создании нового турнира в ограничения доступа по IP-адресам прописывается полное разрешение доступа с IP, с которого был создан турнир.

cmp_file

Добавлена проверка на нулевой байт (\0) с соответствующей диагностикой.

Исправлена ошибка, которая в редких случаях приводила к неправильному сравнению.

проверяющие программы для тестов (валидаторы)

Программа-валидатор получает входной файл на стандартный поток ввода. Программа должна вернуть код завершения 0, если входные данные соответствуют ограничениям условия задачи, и коды завершения 1, 2, 4, 5, если входные данные не удовлетворяют условию задачи. Все прочие коды завершения валидатора, или завершение валидатора из-за получения сигнала рассматриваются как внутренняя ошибка проверки.

проверяющие программы

Проверяющие программы могут возвращать код завершения 1 для индикации вердикта проверки неправильный ответ и код завершения 2 для индикации вердикта ошибка неправильного формата результата (для совместимости с другими тестирующими системами).

Поддерживаются проверяющие программа на java, использующие пакет testlib4j. В сгенерированном Makefile помещаются команды компиляции проверяющей программы, упаковки классов в jar-архив и генерации простого скрипта для запуска проверяющей программы с необходимыми параметрами JVM.

программы-интеракторы

Программы-интеракторы могут возвращать код завершения 1 для индикации вердикта проверки неправильный ответ и код завершения 2 для индикации вердикта ошибка неправильного формата результата (для совместимости с другими тестирующими системами).

языковые процессоры

При компиляции программ на fpc по умолчанию не используется опция -So, включающая режим совместимости с Turbo Pascal.