Difference between revisions of "Изменения в версии 3.10.0"
(Created page with "Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в в...") |
(...) |
||
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.10.0]] | Навигация: [[Main Page|Главная страница]]/[[Система ejudge]]/[[Разработка]]/[[История версий]]/[[Изменения в версии 3.10.0]] | ||
− | Время выхода: | + | Время выхода: 26 декабря 2022 г. |
+ | |||
+ | [[Изменения в версии 3.9.1|Предыдущая версия]] [[Изменения в версии 3.10.1|Следующая версия]] | ||
+ | |||
+ | [[Инсталляция ejudge 3.9.2+ на Fedora 34+ с нуля|Инсталляция на Fedora]] | ||
+ | |||
+ | Новые возможности: | ||
+ | * [[Аутентификация с помощью OAUTH2|Аутентификация с помощью Yandex]] (в дополнение к уже поддерживающимся Google и VK). | ||
+ | * [[Запуск на пользовательских данных|Поддержка запуска программы на сервере]] на тестовых данных пользователя. | ||
+ | * [[Интеграция с github/gitlab|Поддержка интеграции с github и gitlab]]. | ||
+ | * [[Параллельное тестирование|Новая модель распределенной компиляции и тестирования]]. | ||
+ | * [[Миграция в базу данных|Хранение информации о вариантах задач в MySQL]]. | ||
+ | * [[Миграция в базу данных|Отказ от использования MongoDB]]. | ||
+ | |||
+ | === [[ejudge.xml]] === | ||
+ | |||
+ | Добавлен новые элементы [[ejudge.xml:compiler_options|<tt>compiler_options</tt>]] и [[ejudge.xml:compiler_option|<tt>compiler_option</tt>]]. | ||
+ | <compiler_options> | ||
+ | <compiler_option compiler="gcc" option="-std=gnu18" /> | ||
+ | <compiler_option compiler="g++" option="-std=gnu++20" /> | ||
+ | </compiler_options> | ||
+ | |||
+ | Используются для сборки проверяющих программ по "Check contest settings". | ||
+ | |||
+ | Добавлен новый элемент <tt>[[ejudge.xml:default_variant_plugin|default_variant_plugin]]</tt>. | ||
+ | |||
+ | === [[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 интеграции. | ||
+ | * поле is_checked для хранения признака того, что посылка проверена. | ||
+ | |||
+ | Для добавления полей в структуру еще зарезервировано 95 байт. | ||
+ | |||
+ | В таблице runs для полей заданы значения по-умолчанию. | ||
+ | |||
+ | Во всех таблицах устранены нулевые даты (0000-00-00 00:00:00). | ||
+ | Вместо этого используется NULL. | ||
+ | |||
+ | judge_uuid используется как идентификатор запроса на компиляцию | ||
+ | и выполнение. | ||
+ | |||
+ | Изменена схема именования пакетов на компиляцию и запуск программ. | ||
+ | |||
+ | Страница "Testing queue" административного интерфейса содержит больше | ||
+ | информации о времени ожидания посылки в очереди. | ||
+ | |||
+ | Поддерживается хранение статуса турнира в базе mysql с помощью | ||
+ | плагина status-mysql. | ||
+ | |||
+ | Поддерживается хранение статуса пользователей в базе mysql | ||
+ | с помощью плагина xuser-mysql. | ||
+ | |||
+ | Поддерживается хранение аватаров пользователей в базе mysql | ||
+ | с помощью плагина avatar-mysql. | ||
+ | |||
+ | Поддерживается хранение информации о вариантах задач в базе mysql | ||
+ | с помощью плагина variant-mysql. | ||
+ | |||
+ | Флаг <tt>[[serve.cfg:language:insecure|insecure]]</tt> | ||
+ | языкового процессора игнорируется при работе в режиме контейнеризации. | ||
+ | Все поддерживаемые языки программирования считаются "безопасными". | ||
+ | |||
+ | Добавлена глобальная конфигурационная переменная | ||
+ | <tt>[[serve.cfg:global:variant_plugin|variant_plugin]]</tt>. | ||
+ | |||
+ | При просмотре отчета о тестировании отображается максимальный | ||
+ | объем использованной оперативной памяти (RSS) при работе | ||
+ | программы. | ||
+ | |||
+ | Добавлен новый плагин storage-mysql, который позволяет хранить | ||
+ | "файлы" в базе данных mysql. В качестве файлов могут выступать | ||
+ | и файлы с исходным кодом, и файлы с протоколами тестирования. | ||
+ | |||
+ | Добавлен новый плагин submit-mysql для хранения пользовательских | ||
+ | посылок в базе mysql. | ||
+ | |||
+ | Добавлена поддержка [[Интеграция с github/gitlab|интеграции с gitlab и github]]. | ||
+ | |||
+ | В XML-лог турнира добавлена информация о времени начала и окончания | ||
+ | работы каждого участника (userrunheaders). | ||
+ | |||
+ | Добавлена конфигурационная переменная задачи | ||
+ | <tt>[[serve.cfg:problem:enable_user_input|enable_user_input]]</tt>. | ||
+ | |||
+ | Поддерживается [[Запуск на пользовательских данных|тестирование пользовательских программ на входных данных пользователя]] (опция "запустить на сервере"). | ||
+ | |||
+ | Добавлена глобальная конфигурационная переменная | ||
+ | <tt>[[serve.cfg:global:time_between_submits|time_between_submits]]</tt>. | ||
+ | |||
+ | Добавлена глобальная конфигурационная переменная | ||
+ | <tt>[[serve.cfg:global:max_input_size|max_input_size]]</tt>. | ||
+ | |||
+ | Добавлена глобальная конфигурационная переменная | ||
+ | <tt>[[serve.cfg:global:max_submit_num|max_submit_num]]</tt>. | ||
+ | |||
+ | Добавлена глобальная конфигурационная переменная | ||
+ | <tt>[[serve.cfg:global:max_submit_total|max_submit_total]]</tt>. | ||
+ | |||
+ | Добавлен новый плагин userprob-mysql, который позволяет хранить | ||
+ | информацию для тройки пользователь-турнир-задача. | ||
+ | |||
+ | Поддерживаются http-запросы с телом в формате application/json. | ||
+ | |||
+ | Добавлена конфигурационная переменная задачи | ||
+ | <tt>[[serve.cfg:problem:enable_vcs|enable_vcs]]</tt>. | ||
+ | |||
+ | Добавлена конфигурационная переменная задачи | ||
+ | <tt>[[serve.cfg:problem:post_pull_cmd|post_pull_cmd]]</tt>. | ||
+ | |||
+ | Добавлена конфигурационная переменная | ||
+ | <tt>[[serve.cfg:problem:vcs_compile_cmd|vcs_compile_cmd]]</tt>. | ||
+ | |||
+ | Добавлен плагин vcs_gitlab, поддерживающий интеграцию с gitlab и github. | ||
+ | |||
+ | В запросе submit-run можно указывать язык программирования не только | ||
+ | как его числовой id, а как строку короткого имени (short_name). | ||
+ | |||
+ | В режиме | ||
+ | <tt>[[serve.cfg:problem:enable_extended_info|enable_extended_info]]</tt> | ||
+ | в переменные окружения для | ||
+ | проверяющей программы и интерактора добавляется переменная | ||
+ | окружения <tt>EJUDGE_TEST_COUNT</tt>. | ||
+ | |||
+ | Поддерживается режим печати, при котором исходный код посылки | ||
+ | копируется в специальный каталог, из которого он может быть | ||
+ | скопирован сторонними средствами. | ||
+ | |||
+ | Корректно обрабатывается пустая строка в конфигурационных | ||
+ | переменных test_pat. | ||
+ | |||
+ | Поддерживается аутентификация с помощью Yandex OAUTH. | ||
+ | |||
+ | Добавлена глобальная конфигурационная переменная | ||
+ | <tt>[[serve.cfg:global:print_just_copy|print_just_copy]]</tt>. | ||
+ | |||
+ | Поддерживается | ||
+ | <tt>[[contest.xml:logo_url|logo_url]]</tt> | ||
+ | в отображаемых страницах. | ||
+ | |||
+ | === [[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 | ||
+ | ([https://github.com/blackav/ejudge/pull/101 #101]). | ||
+ | |||
+ | При запуске тестируемой программы диспозиция сигнала SIGPIPE устанавливается | ||
+ | по умолчанию | ||
+ | ([https://github.com/blackav/ejudge/pull/103 #103]). | ||
+ | |||
+ | В тестируемые программы не утекает файловый дескриптор устройства | ||
+ | случайных чисел <tt>/dev/urandom</tt>. | ||
+ | |||
+ | Переработана структура struct testinfo_struct. Новая версия | ||
+ | структуры бинарно несовместима с предыдущей. Это потребует | ||
+ | перекомпиляции проверяющих программ, написанных | ||
+ | с использованием библиотеки [[libchecker]]. | ||
+ | |||
+ | В отчет о тестировании добавлен атрибут max_rss_available, | ||
+ | который устанавливается в значение yes, если отчет о тестировании | ||
+ | содержит информацию об испольновании rss. | ||
+ | |||
+ | В отчет о тестировании добавлен атрибут max_rss, который содержит | ||
+ | максимальный объем ОЗУ (RSS), использованный при выполнении программы. | ||
+ | |||
+ | При запуске программы с пользовательскими данными предварительно | ||
+ | может запускаться программа проверки тестов (test checker). | ||
+ | Вывод этой программы добавляется в элемент test_checker. | ||
+ | |||
+ | При запуске программы оценивания поддерживается опция | ||
+ | <tt>[[serve.cfg:problem:enable_extended_info|enable_extended_info]]</tt>. | ||
+ | |||
+ | Исправления в обработке comment-and-ok | ||
+ | ([https://github.com/blackav/ejudge/pull/115 #115]). | ||
+ | |||
+ | При отображении дат используется формат дат ISO (YYYY-MM-DD). | ||
+ | |||
+ | При запуске проверяющей программы в режиме | ||
+ | <tt>[[serve.cfg:problem:scoring_checker|scoring_checker]]</tt> | ||
+ | устанавливается переменная окружения <tt>EJUDGE_MAX_SCORE</tt> | ||
+ | ([https://github.com/blackav/ejudge/pull/121 #121]). | ||
+ | |||
+ | === [[ej-super-server]] === | ||
+ | |||
+ | Из-за перехода на хранение информации о варианте в базе MySQL | ||
+ | отключено редактирование вариантов, назначенных пользователям. | ||
+ | |||
+ | === [[ej-suid-container]] === | ||
+ | |||
+ | Поддерживается работа в случае, когда подсистема контейнеризации | ||
+ | не поддерживает файл memory.memsw.limit_in_bytes (например, ubuntu). | ||
+ | |||
+ | === [[ej-vcs-compile]] === | ||
+ | |||
+ | Новая утилита для компиляции проекта в режиме интеграции с github/gitlab. | ||
+ | |||
+ | === [[ejudge-execute]] === | ||
+ | |||
+ | Поддерживаются ограничения по времени и памяти из .inf-файла. | ||
+ | |||
+ | === [[.inf-файлы]] === | ||
+ | |||
+ | Добавлено поле <tt>ignore_exit_code</tt>. Если оно установлено, | ||
+ | то проверка кода завершения тестируемой программы не выполняется, | ||
+ | то есть программа считается завершившейся успешно при любом коде | ||
+ | завершения. Это не включает завершение программы из-за | ||
+ | фатального сигнала, что по-прежнему считается ошибкой | ||
+ | периода выполнения. | ||
+ | |||
+ | === [[tools/logrotate]] === | ||
+ | |||
+ | Новая утилита, которая переименовывает лог-файлы | ||
+ | |||
+ | === [[libchecker]] === | ||
+ | |||
+ | Переработана структура struct testinfo_struct. Новая версия | ||
+ | структуры бинарно несовместима с предыдущей. Это потребует | ||
+ | перекомпиляции проверяющих программ, написанных | ||
+ | с использованием библиотеки [[libchecker]]. | ||
+ | |||
+ | Добавлены функции <tt>checker_kill_2</tt>, <tt>open_control_fd</tt>. | ||
+ | |||
+ | === Прочее === | ||
+ | |||
+ | По умолчанию используется компилятор go из пакета golang, а не gcc-go. | ||
+ | |||
+ | Добавлена поддержка языка swift. | ||
+ | |||
+ | Добавлена поддержка java 18 и 19. |
Latest revision as of 13:53, 29 January 2023
Навигация: Главная страница/Система ejudge/Разработка/История версий/Изменения в версии 3.10.0
Время выхода: 26 декабря 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 интеграции.
- поле is_checked для хранения признака того, что посылка проверена.
Для добавления полей в структуру еще зарезервировано 95 байт.
В таблице 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
Переработана структура struct testinfo_struct. Новая версия структуры бинарно несовместима с предыдущей. Это потребует перекомпиляции проверяющих программ, написанных с использованием библиотеки libchecker.
Добавлены функции checker_kill_2, open_control_fd.
Прочее
По умолчанию используется компилятор go из пакета golang, а не gcc-go.
Добавлена поддержка языка swift.
Добавлена поддержка java 18 и 19.