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

From EjudgeWiki

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

Добавлена поддержка языка Кумир. При настройке компиляторов автоматически находится интерпретатор ckumir.

Усовершенствовано определение версии интерпретатора языка perl.

Для компиляции ejudge более не требуется библиотека reuse. Все необходимые файлы интегрированы в исходный код ejudge.

ej-batch

Новая программа для пакетного тестирования. Программе передаётся ZIP-файл, сформированный по определенным правилам, который содержит исходные коды программ на тестирование и XML-файл описания. Тестирование выполняется в пакетном режиме, и на выходе формируется ZIP-файл с результатами тестирования, который содержит XML-файл описания результатов и протоколы тестирования.

ej-compile

Для компиляторов поддерживается установка ограничений на максимальный размер адресного пространства и стека. В раздел описания языковых процессоров добавлены конфигурационные переменные max_vm_size и max_stack_size и max_file_size. Эти переменные могут устанавливаться как в конфигурационном файле турнира, так и в глобальном конфигурационном файле сервера компиляции (${CONTESTS_DIR}/compile/conf/compile.cfg). Значение, установленное в конфигурационном файле турнира, имеет приоритет перед значением, заданным в конфигурационном файле сервера компиляции.

Конфигурационная переменная max_vm_size задает максимальный размер виртуального адресного пространства процесса компиляции. Например,

max_vm_size=256M

ограничивает размер виртуального адресного пространства 256 мегабайтами (точнее, 256*1024*1024 байт). Размер виртуального адресного пространства определяется как сумма размера кода программы, глобальных переменных, подгружаемых динамических библиотек, кучи и стека. По умолчанию размер виртуального адресного пространства не ограничен, если только не установлено ограничение на уровне системы (см. вывод команды 'ulimit -a').

Конфигурационная переменная max_stack_size задает максимальный размер системного стека. По умолчанию этот размер равен 8 мегабайтам.

Конфигурационная переменная max_file_size задает максимальный размер файлов, которые смогут создавать компиляторы.

Поддерживаются глобальные конфигурационные переменные compile_max_vm_size, compile_max_stack_size и compile_max_file_size, позволяющие задавать ограничения на ресурсы для всех компиляторов одновременно. Эти глобальные конфигурационные переменные могут задаваться как в конфигурационном файле сервера компиляции, так и в конфигурационном файле турнира.

Значения ограничений, установленные для конкретного языкового процессора, имеют приоритет над значениями, установленными глобально. Значения ограничений, установленные в конфигурационном файле турнира, имеют приоритет над значениями, установленными в конфигурационном файле сервера компиляции.

ej-contests

При сдаче исходного кода в кодировке UCS-2 файл автоматически конвертируется в кодировку UTF-8. Для определения кодировки UCS-2 используется эвристический алгоритм.

Добавлена новая глобальная конфигурационная переменная separate_user_score. Если данная конфигурационная переменная установлена в 1, турнир работает в режиме одновременного хранения предварительных и окончательных результатов тестирования программ. Предварительные (или пользовательские - user) результаты тестирования - это результаты тестирования программы на подмножестве всех тестов. Предварительные результаты тестирования доступны участникам во время турнира. Окончательные результаты тестирования - результаты тестирования программы на всех тестах. Во время турнира окончательные результаты тестирования участникам недоступны, но отображаются в качестве результатов тестирования для административных пользователей. В любой момент проведения турнира или после его окончания администратор турнира может включить отображение окончательных результатов тестирования для участников, тогда участники вместо предварительных результатов будут видеть окончательные.

Этот режим работы доступен только для турниров по системе KIROV.

Режим работы предназначен для турниров, на которых решения во время тура тестируются только на некоторых тестах (так называемых on-line тестах), а после окончания тура - на всех тестах. В системе ejudge решения всегда тестируются на всех тестах, но участники будут получать информацию о результатах тестирования только на части тестов, хотя администраторам доступна и полная информация.

В раздел описания задачи добавлена конфигурационная переменная full_user_score. Данная переменная позволяет указывать, сколько предварительных баллов получает решение, которое прошло все нескрытые тесты, либо получило предварительный статус тестирования OK. Данная конфигурационная переменная аналогична переменной full_score, но задает максимальное количество баллов для предварительного тестирования. Данная переменная используется только для турниров типа KIROV, которые работают в режиме separate_user_score. Значение данной переменной наследуется из абстрактной задачи, если не задано в задаче. Если ни в конкретной, ни в абстрактной задаче значение поля не задано, оно полагается равным 0.

Расширена поддержка правил видимости тестов, задаваемых с помощью конфигурационной переменной open_tests раздела описания задачи. Теперь допускается указывать тип видимости теста. Поддерживаются следующие типы видимости тестов:

normal Правила видимости тестов определяются общими настройками турнира, данный тип видимости является типом по умолчанию, для тестов, для которых тип видимости не указан.
full Полная видимость теста: показываются входные данные, результат работы программы, вердикт проверки, балл за тест.
fullifmarked Полная видимость, но только если данная посылка имеет статус marked, а в противном случае тест является невидимым.
brief Показывается вердикт проверки и балл за тест. Это - стандартный режим показа тестов для турниров KIROV.
exists Существование. Показывается, что такой тест существует, но ни вердикт проверки, ни балл за тест не показываются.
hidden Тест полностью скрыт. Не показывается ни вердикт проверки, ни балл, ни факт самого существования теста.

Спецификация видимости записывается после диапазона тестов через двоеточие. Пример спецификации тестов:

open_tests="1-3:full,4-10:brief,11-15:hidden"

тесты 1-3 показываются полностью, тесты 4-10 показываются в краткой форме, а тесты 11-15 являются скрытыми

Добавлена конфигурационная переменная final_open_tests секции определения задачи. Данная переменная задает видимость тестов в режиме финального показа тестов. Турнир может быть переключен в режим финального показа тестов администратором турнира (см. ниже). Например,

final_open_tests="1-10:full,11-15:fullifmarked"

Тесты 1-10 показываются полностью, а тесты 11-15 показываются полностью только для решений, имеющих статус marked. Значение данной переменной не наследуется из абстрактной задачи.

Добавлена конфигурационная переменная score_latest_or_unmarked, которая модифицирует способ подсчета баллов за задачу следующим образом. Если среди посылок данного пользователя по данной задаче имеются посылки со статусом marked (отмеченные), то оценивается последняя такая посылка. В противном случае оценивается посылка, набравшая максимальное количество баллов. Значение данной переменной наследуется из абстрактной задачи.

Добавлена конфигурационная переменная extid, позволяющая задать "внешний" идентификатор задачи. Внешний идентификатор задачи используется программой тестирования пакетного режима ej-batch.

В административный интерфейс new-master добавлена новая страница настройки режима работы турнира "Contest settings". С ее помощью можно включать или выключать видимость исходных кодов посылок для участников, видимость протоколов тестирования участниками, видимость основных результатов тестирования участниками (в режиме отображения предварительных результатов тестирования) и режим видимости тестов. Теперь для выполнения этих действий не требуется модифицировать конфигурационный файл serve.cfg.

В раздел описания задачи добавлены конфигурационные переменные, позволяющие устанавливать ограничения на ресурсы, доступные процессу.

max_core_size Максимальный размер core-файла, который будет создан ядром ОС в случае, если выполнение процесса завершилось аварийно. Как правило, этот размер установлен в 0.
max_file_size Максимальный размер файлов, с которыми может работать процесс. В случае попытки записи в файт так, что его размер превысит максимальный разрешенный, процесс будет прерван сигналом, то есть завершится аварийно.
max_open_file_count Максимальное количество файловых дескрипторов, доступных одному процессу. Если это ограничение превышено, попытка открытия файла будет завершаться с ошибкой.
max_process_count Максимальное количество процессов/нитей, доступных одному пользователю. Если это ограничение будет превышено, попытка создания нового процесса с помощью системного вызова fork() завершится ошибкой.

ej-run

При работе турнира в режиме 'separate_user_score' при запуске программы оценивания (valuer) устанавливается переменная окружения EJUDGE_USER_SCORE.

Помимо балла за пройденные тесты и флага marked в режиме турнира 'separate_user_score' программа оценивания должна возвращать три целых числа: предварительный статус тестирования (OK или PE), балл за предварительные тесты, количество пройденных предварительных тестов. Вместо каждого из этих чисел программа оценивания может вывести -1, тогда соответствующее значение будет вычислено по стандартным правилам.

Добавлена опция командной строки -s, которая позволяет задавать игнорируемые для тестирования архитектуры из командной строки. В командной строке можно указать опцию несколько раз, например,

ej-run -s win32 -s dos conf/serve.cfg

В этом случае игнорируется значение конфигурационной переменной skip_testing раздела [tester], но для указанных в опциях -s архитектурах флаг skip_testing устанавливается.

libchecker

Добавлена функция valuer_parse_input для чтения входных данных программы оценивания решения.

style_c

Программа проверки стиля форматирования программ на языках Си и Си++. В настоящий момент программа выполняет только совсем базовые проверки на отсутствие управляющих символов в коде программы (в том числе табуляции), на кратность величин отступов значению 4, на максимальную длину строки кода.