Difference between revisions of "Изменения в версии 3.10.0"
(...) |
(...) |
||
Line 202: | Line 202: | ||
Ограничение на PID процесса проверяется в соответствии с ограничениями Linux | Ограничение на PID процесса проверяется в соответствии с ограничениями Linux | ||
− | [https://github.com/blackav/ejudge/pull/101 #101]. | + | ([https://github.com/blackav/ejudge/pull/101 #101]). |
При запуске тестируемой программы диспозиция сигнала SIGPIPE устанавливается | При запуске тестируемой программы диспозиция сигнала SIGPIPE устанавливается | ||
по умолчанию | по умолчанию | ||
− | [https://github.com/blackav/ejudge/pull/103 #103]. | + | ([https://github.com/blackav/ejudge/pull/103 #103]). |
В тестируемые программы не утекает файловый дескриптор устройства | В тестируемые программы не утекает файловый дескриптор устройства | ||
Line 231: | Line 231: | ||
Исправления в обработке comment-and-ok | Исправления в обработке comment-and-ok | ||
− | [https://github.com/blackav/ejudge/pull/115 #115]. | + | ([https://github.com/blackav/ejudge/pull/115 #115]). |
При отображении дат используется формат дат ISO (YYYY-MM-DD). | При отображении дат используется формат дат ISO (YYYY-MM-DD). | ||
Line 238: | Line 238: | ||
<tt>[[serve.cfg:problem:scoring_checker|scoring_checker]]</tt> | <tt>[[serve.cfg:problem:scoring_checker|scoring_checker]]</tt> | ||
устанавливается переменная окружения <tt>EJUDGE_MAX_SCORE</tt> | устанавливается переменная окружения <tt>EJUDGE_MAX_SCORE</tt> | ||
− | [https://github.com/blackav/ejudge/pull/121 #121]. | + | ([https://github.com/blackav/ejudge/pull/121 #121]). |
=== [[ej-super-server]] === | === [[ej-super-server]] === | ||
Line 270: | Line 270: | ||
Новая утилита, которая переименовывает лог-файлы | Новая утилита, которая переименовывает лог-файлы | ||
+ | |||
+ | === [[libchecker]] === | ||
+ | |||
+ | Добавлены функции <tt>checker_kill_2</tt>, <tt>open_control_fd</tt>. | ||
=== Прочее === | === Прочее === | ||
Line 278: | Line 282: | ||
Добавлена поддержка java 18 и 19. | Добавлена поддержка java 18 и 19. | ||
− | |||
− | |||
− | |||
− |
Revision as of 17:55, 13 December 2022
Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 3.10.0
Время выхода: ?? ?? 2022 г.
Новые возможности:
- Аутентификация с помощью Yandex (в дополнение к уже поддерживающимся
Google и VK).
- Поддержка запуска программы на сервере на тестовых данных пользователя.
- Поддержка интеграции с github и gitlab.
- Новая модель распределенной компиляции и тестирования.
- Хранение информации о вариантах задач в MySQL.
- Отказ от использования MongoDB.
Contents
- 1 ejudge.xml
- 2 contest.xml
- 3 ej-agent
- 4 ej-compile
- 5 ej-contests
- 6 ejudge-control
- 7 ej-compile-control
- 8 ej-convert-status
- 9 ej-convert-xuser
- 10 ej-convert-variant
- 11 ej-jobs
- 12 ej-super-run
- 13 ej-super-server
- 14 ej-suid-container
- 15 ej-vcs-compile
- 16 ejudge-execute
- 17 .inf-файлы
- 18 tools/logrotate
- 19 libchecker
- 20 Прочее
ejudge.xml
Добавлен новые элементы compiler_options и compiler_option.
<compiler_options> <compiler_option compiler="gcc" option="-std=gnu18" /> <compiler_option compiler="g++" option="-std=gnu++20" /> </compiler_options>
Используются для сборки проверяющих программ по "Check contest settings".
Добавлен новый элемент default_variant_plugin.
contest.xml
Добавлен атрибут "disable_standalone_reg", который отключает регистрацию новых пользователей с помощью интерфейса ejudge. Новые пользователи могут войти и зарегистрироваться только с одного из поддерживаемых сервисов аутентификации.
ej-agent
Новая программа для распределенной компиляции и тестирования. Программа реализует серверную часть для обмена по новому протоколу взаимодействия сервера ejudge и серверов тестирования и компиляции.
ej-compile
Поддерживается работа с помощью agent.
Улучшено определение версии компиляторов dotnet.
ej-contests
Обновлен URL ejudge в copyright notice.
Таблица runs значительно расширена. Структура run_entry в памяти занимает 256 байт вместо 128 и дополнительно содержит:
- место для хранения sha256 хеша исходного кода вместо sha1;
- идентификатор тестирования в формате UUID (128 бит) вместо 16 бит;
- uuid задачи
- добавлено поле serial_id, которое содержит уникальный 64-битный
номер посылки. В отличие от run_id это поле уникально для всей таблицы в целом.
- флаг is_vcs, который устанавливается в 1 при посылках в систему
с помощью gitlab/github интеграции. Для добавления полей в структуру еще зарезервировано 95 байт. Добавлено поле is_checked для хранения признака того, что посылка проверена.
В таблице runs для полей заданы значения по-умолчанию.
Во всех таблицах устранены нулевые даты (0000-00-00 00:00:00). Вместо этого используется NULL.
judge_uuid используется как идентификатор запроса на компиляцию и выполнение.
Изменена схема именования пакетов на компиляцию и запуск программ.
Страница "Testing queue" административного интерфейса содержит больше информации о времени ожидания посылки в очереди.
Поддерживается хранение статуса турнира в базе mysql с помощью плагина status-mysql.
Поддерживается хранение статуса пользователей в базе mysql с помощью плагина xuser-mysql.
Поддерживается хранение аватаров пользователей в базе mysql с помощью плагина avatar-mysql.
Поддерживается хранение информации о вариантах задач в базе mysql с помощью плагина variant-mysql.
Флаг insecure языкового процессора игнорируется при работе в режиме контейнеризации. Все поддерживаемые языки программирования считаются "безопасными".
Добавлена глобальная конфигурационная переменная variant_plugin.
При просмотре отчета о тестировании отображается максимальный объем использованной оперативной памяти (RSS) при работе программы.
Добавлен новый плагин storage-mysql, который позволяет хранить "файлы" в базе данных mysql. В качестве файлов могут выступать и файлы с исходным кодом, и файлы с протоколами тестирования.
Добавлен новый плагин submit-mysql для хранения пользовательских посылок в базе mysql.
Добавлена поддержка интеграции с gitlab и github.
В XML-лог турнира добавлена информация о времени начала и окончания работы каждого участника (userrunheaders).
Добавлена конфигурационная переменная задачи enable_user_input.
Поддерживается тестирование пользовательских программ на входных данных пользователя (опция "запустить на сервере").
Добавлена глобальная конфигурационная переменная time_between_submits.
Добавлена глобальная конфигурационная переменная max_input_size.
Добавлена глобальная конфигурационная переменная max_submit_num.
Добавлена глобальная конфигурационная переменная max_submit_total.
Добавлен новый плагин userprob-mysql, который позволяет хранить информацию для тройки пользователь-турнир-задача.
Поддерживаются http-запросы с телом в формате application/json.
Добавлена конфигурационная переменная задачи enable_vcs.
Добавлена конфигурационная переменная задачи post_pull_cmd.
Добавлена конфигурационная переменная vcs_compile_cmd.
Добавлен плагин vcs_gitlab, поддерживающий интеграцию с gitlab и github.
В запросе submit-run можно указывать язык программирования не только как его числовой id, а как строку короткого имени (short_name).
В режиме enable_extended_info в переменные окружения для проверяющей программы и интерактора добавляется переменная окружения EJUDGE_TEST_COUNT.
Поддерживается режим печати, при котором исходный код посылки копируется в специальный каталог, из которого он может быть скопирован сторонними средствами.
Корректно обрабатывается пустая строка в конфигурационных переменных test_pat.
Поддерживается аутентификация с помощью Yandex OAUTH.
Добавлена глобальная конфигурационная переменная print_just_copy.
Поддерживается logo_url в отображаемых страницах.
ejudge-control
Добавлены опции --agent, --instance-id, --queue, -v, --mirror, -nhb, -ht, -hb, -hc.
ej-compile-control
Добавлены опции --agent, --instance-id, --queue, -v
ej-convert-status
Новая утилита для конвертации файлов статусов в файловой системе или записей статусов в mongodb в базу mysql.
ej-convert-xuser
Новая утилита для конвертации файлов статусов пользователей в файловой системе или записей статусов пользователей в mongodb в базу mysql.
ej-convert-variant
Новая утилита для конвертации файлов информации о варианте задач для пользователей в базу mysql.
ej-jobs
Плагин для telegram поддерживает хранение своего состояния в базе mysql.
Старый файл сокета удаляется при старте программы.
ej-super-run
Ограничение на PID процесса проверяется в соответствии с ограничениями Linux (#101).
При запуске тестируемой программы диспозиция сигнала SIGPIPE устанавливается по умолчанию (#103).
В тестируемые программы не утекает файловый дескриптор устройства случайных чисел /dev/urandom.
Переработана структура struct testinfo_struct. Новая версия структуры бинарно несовместима с предыдущей. Это потребует перекомпиляции проверяющих программ, написанных с использованием библиотеки libchecker.
В отчет о тестировании добавлен атрибут max_rss_available, который устанавливается в значение yes, если отчет о тестировании содержит информацию об испольновании rss.
В отчет о тестировании добавлен атрибут max_rss, который содержит максимальный объем ОЗУ (RSS), использованный при выполнении программы.
При запуске программы с пользовательскими данными предварительно может запускаться программа проверки тестов (test checker). Вывод этой программы добавляется в элемент test_checker.
При запуске программы оценивания поддерживается опция enable_extended_info.
Исправления в обработке comment-and-ok (#115).
При отображении дат используется формат дат ISO (YYYY-MM-DD).
При запуске проверяющей программы в режиме scoring_checker устанавливается переменная окружения EJUDGE_MAX_SCORE (#121).
ej-super-server
Из-за перехода на хранение информации о варианте в базе MySQL отключено редактирование вариантов, назначенных пользователям.
ej-suid-container
Поддерживается работа в случае, когда подсистема контейнеризации не поддерживает файл memory.memsw.limit_in_bytes (например, ubuntu).
ej-vcs-compile
Новая утилита для компиляции проекта в режиме интеграции с github/gitlab.
ejudge-execute
Поддерживаются ограничения по времени и памяти из .inf-файла.
.inf-файлы
Добавлено поле ignore_exit_code. Если оно установлено, то проверка кода завершения тестируемой программы не выполняется, то есть программа считается завершившейся успешно при любом коде завершения. Это не включает завершение программы из-за фатального сигнала, что по-прежнему считается ошибкой периода выполнения.
tools/logrotate
Новая утилита, которая переименовывает лог-файлы
libchecker
Добавлены функции checker_kill_2, open_control_fd.
Прочее
По умолчанию используется компилятор go из пакета golang, а не gcc-go.
Добавлена поддержка языка swift.
Добавлена поддержка java 18 и 19.