Версия 2.1.38 (20050607) ======================== libchecker ---------- Проверяющие программы не выдают ошибки "Check Failed", если им передано больше параметров, чем требуется. Лишние параметры игнорируются. Это позволяет использовать стандартные проверяющие программы (например, cmp_int) в конфигурациях задачи совместно с дополнительной информацией о тестах (.inf-файлами). run,serve --------- Переработан интерфейс взаимодействия программ run и serve. run всегда генерирует протокол тестирования в XML-формате. Отображение протокола тестирования в HTML-представлении выполняется теперь программой serve. Поэтому отпала необходимость в двух отдельных протоколах: судейском и протоколе участника. XML-протоколы тестирования сохраняются в подкаталогах каталога ${contest_root}/var/archive/xmlreport. Поддерживается обратная совместимость с каталогами турниров, созданных предыдущими версиями ejudge. Если для некоторой посылки не существует протокола в формате XML, используются протоколы тестирования, сгенерированные предыдущими версиями. Так как run всегда генерирует отчёт в формате XML, глобальная конфигурационная переменная html_report потеряла своё значение. Она сохранена (для совместимости), но её значение игнорируется. Добавлена возможность сохранения в архиве запуска полного вывода программы. По умолчанию входные тестовые данные, вывод программы, вывод проверяющей программы для каждого теста добавляются непосредственно в протокол тестирования. Однако максимальный размер и длина строки в файле добавляемом в протокол тестирования ограничены (см. конфигурационные переменные max_file_length, max_line_length), и если ограничение превышается, вместо содержимого файла добавляется короткое сообщение о том, что файл или строка слишком длинные. В данной версии добавлена глобальная конфигурационная переменная `enable_full_archive'. Если эта переменная установлена в 1, вывод тестируемой программы сохраняется без ограничений, но не в XML-протоколе тестирования, а в отдельном файле. В режиме полного архива XML-протокол не содержит ни входных, ни выходных файлов тестируемой программы, за исключением параметров командной строки, передаваемых тестируемой программе, если таковые имеются. Вывод тестирующей программы и вывод проверяющей программы сохраняются в отдельном файле в специальном архивном формате. Формат архива в данной версии ejudge не совместим ни с какой архивной программой. Для каждого файла в архиве хранится служебная информация и содержимое файла, сжатое алгоритмом gzip. Архивные файлы находятся в подкаталогах каталога ${contest_root}/var/archive/output. serve,master,judge,team ----------------------- Так как в режиме полного архива протокол тестирования не содержит входных данных, добавлена возможность просмотра файлов в архиве. Выходной файл тестируемой программы, stderr, вывод проверяющей программы для каждого теста берутся из архивного файла, входной файл, файл с правильным ответом (если есть) и файл с дополнительной информацией (если есть) берутся из каталога с тестами. При этом возможно рассогласование между теми тестами, которые использовались при запуске программы, и отображаемым в текущий момент (например, если тесты с тех пор были обновлены). В текущей версии нет механизма контроля соответствия (например, контрольной суммы). serve ----- Для каждой посылки хранится административный журнал (audit log), в котором хранится информация обо всех операциях с данной посылкой. В журнал информация только добавляется, но никогда не удаляется и не редактируется. Файлы журналов находятся в подкаталогах каталога ${contest_root}/var/archive/audit. serve,master ------------ Поддерживается отображение административного журнала. Чтобы пользователь мог просмотреть административный журнал, у него должен быть установлен бит CONTROL_CONTEST. serve,master,judge,team ----------------------- Удалена поддержка старых сессионных режимов (логин/пароль в форме, cookie, ключ сессии в форме). Эти режимы никогда не использовались, но их в поддержка в коде присутствовала. Теперь поддержка этих режимов удалена. URL, используемый в работе в результате упростился, так как отпала необходимость в переменной sid_mode. userlist-server --------------- Программа не падает при попытке входа пользователя, у которого не установлен пароль (т. е. поле register_password в XML-файле отсутствует).