Версия 2.2.0 (20060609) ======================= То же самое, что версия 2.1.49. С этого момента в ветке 2.2 будут только исправляться ошибки. Все новые возможности будут добавляться в ветку 2.3, которая по окончанию разработки станет версией 3.0. Версия 2.1.49 (20060609) ======================== Добавлена поддержка нового "языка" - текстовых файлов (txt). Это позволяет сдавать на проверку обычные текстовые файлы (например, в output-only задачах). Результатом компиляции текстового файла является скрипт, который всегда возвращает код завершения 1. Для тонкой настройки, какие языки могут использоваться для сдачи каждой задачи можно использовать конфигурационную переменную `disable_language' раздела описания задачи. serve ----- В генерируемый файл журнала посылок в XML-формате добавлена дополнительная информация о времени турнира. В журнал посылок во внешнем XML-формате добавлена информация об имени турнира. Поддерживается автоматическая генерация журнала посылок как во внутреннем, так и во внешнем формате через заданные интервалы времени. С помощью новой глобальной конфигурационной переменной `external_xml_update_time' задается интервал времени в секундах между генерацией XML-файла во внешнем формате, а с помощью новой глобальной конфигурационной переменной `internal_xml_update_time' задается интервал времени в секундах между генерацией XML-файла во внутреннем формате. Файлы имеют следующие пути: /var/status/dir/external.xml /var/status/dir/internal.xml super-serve, serve-control -------------------------- Поддерживается редактирование новых глобальных конфигурационных переменных `external_xml_update_time' и `internal_xml_update_time'. testlib ------- Текст сообщения, который выводится при вызове `quit' выводится на стандартный поток ошибок, а не на стандартный поток вывода (для возможности работы чекера в режиме оценивания решения). run --- Исправлена ошибка, из-за которой решения для DOS-компиляторов не работали в режиме перенаправления стандартных потоков, когда run запускался под управлением super-serve. serve ----- Поддерживаются задачи, в которых балл за задачу (или за каждый тест) выставляется проверяющей программой. Раньше чекер давал ответ ДА/НЕТ для каждого теста, а балл назначался исходя из настроек задачи. Теперь чекер может оценивать тест в любое количество баллов от 0 и до максимального балла за данный тест. Для этого в разделе определения задачи поддерживается конфигурационная переменная `scoring_checker'. Если эта переменная установлена в значение 1, то балл за тест будет проставляться чекером. В турнирах по системе KIROV/OLYMPIAD чекер оценивает каждый тест по отдельности, и суммарный балл за задачу равен сумме оценок чекера по каждому тесту. В турнирах по системе MOSCOW балл за задачу равен оценке чекера первого непройденного теста (в этом случае, разумнее всего, чтобы у задачи был единственный тест). Оценивающий чекер должен работать следующим образом. Код завершения чекера, как обычно, обозначает результат проверки: 0 OK 4 PE 5 WA все остальные коды интерпретируются как Check failed. Если чекер вернул OK, то тест/задача всегда получает полный балл. Если чекер вернул PE, то тест/задача получает 0. Если чекер вернул WA, то на стандартный поток вывода он должен записать единственное число - балл за тест/задачу. Кроме числа и пробельных символов в стандартный поток вывода ничего выводиться не должно (иначе - Check failed). Число должно быть >= 0 и меньше максимального балла за задачу. Если выведено другое число - Check failed. run --- Поддерживаются задачи с оценивающим чекером. super-serve, serve-control -------------------------- Поддерживается редактирование переменной `scoring_checker' раздела описания задачи. Поддерживается редактирование переменной `disable_language' раздела описания задачи. run --- Для турниров по системе MOSCOW поддерживаются "скачки" в баллах, то есть при оценивании задачи промежуточные баллы могут пропускаться. Пусть для некоторой задачи есть 10 тестов, максимальный балл равен 2, при этом решения оцениваются либо в 0 (если пройдены не все тесты), либо в 2 балла. Тогда переменная `score_tests' для данной задачи должна быть установлена следующим образом: score_tests = "11" то есть решение, которое прошло 10 тестов должно оцениваться в 1 балл, но такое решение (неявно) оценивается в два балла, поэтому будет выбрана оценка 2 балла. Таким образом, последовательность номеров тестов образует неубывающую последовательность (то есть несколько подряд номеров тестов могут быть равны - в этом случае будет выбран максимальный балл. serve ----- Поддерживаются "output-only" задачи, то есть задачи, в которых сдается файл с ответом, а не файл с исходным текстом программы. Для этого добавлена конфигурационная переменная `output_only' раздела описания задачи. Эта переменная может быть установлена и в описании абстрактной задачи и будет наследоваться. Значение по умолчанию - 0. Если переменная установлена в 1, соответствующая задача является "output-only". Для output-only задач все равно выполняется стадия "компиляции" и "запуска" (см. ниже). compile ------- Поддерживаются "output-only" задачи. В этом случае "компиляция" программы заключается в копировании файла "исходного текста" (а на самом деле ответа) в файл результата компиляции. Выбранный язык в этом случае не играет никакой роли, так как компилятор соответствующего языка не запускается. run --- Поддерживаются "output-only" задачи. В этом случае у задачи должен быть единственный тест. "Запуск на выполнение" заключается в копировании "исполняемого" файла в файл результата работы, после чего он проверяется обычным образом с помощью запуска проверяющей программы. super-serve, serve-control -------------------------- Поддерживается редактирование переменной `output_only' раздела описания задачи. serve, master, judge -------------------- При отправке сообщения участникам до начала турнира администратор или судья может указать, что сообщение должно стать видимым обычным участникам только после начала турнира. execute ------- Новая программа для запуска тестируемых программ из командной строки. Программа `execute' позволяет установить все виды ограничений (по времени, по памяти, по доступным операциям), которые поддерживаются системой ejudge. libchecker ---------- Библиотека портирована под Windows с использованием компилятора gcc (gcc -mno-cygwin). В результате компиляции получаются .DLL и .LIB файлы, которые могут использоваться любыми компиляторами для Windows.