From 6746539b279905800c5b8dfe4f6f99e16e1f5856 Mon Sep 17 00:00:00 2001 From: Maritsu <66056347+Maritsu@users.noreply.github.com> Date: Wed, 26 Nov 2025 16:36:44 +0100 Subject: [PATCH 1/3] simlib: add missing #include directives This fixes a compilation error where the compiler complains about `uint8_t` not being defined. --- subprojects/simlib/include/simlib/string_compare.hh | 1 + subprojects/simlib/include/simlib/string_transform.hh | 1 + subprojects/simlib/src/file_contents.cc | 1 + 3 files changed, 3 insertions(+) diff --git a/subprojects/simlib/include/simlib/string_compare.hh b/subprojects/simlib/include/simlib/string_compare.hh index 3742bd45..aa48bfc0 100644 --- a/subprojects/simlib/include/simlib/string_compare.hh +++ b/subprojects/simlib/include/simlib/string_compare.hh @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include diff --git a/subprojects/simlib/include/simlib/string_transform.hh b/subprojects/simlib/include/simlib/string_transform.hh index 63052f1e..4c42d3cf 100644 --- a/subprojects/simlib/include/simlib/string_transform.hh +++ b/subprojects/simlib/include/simlib/string_transform.hh @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include diff --git a/subprojects/simlib/src/file_contents.cc b/subprojects/simlib/src/file_contents.cc index 0a6242ec..6f91674a 100644 --- a/subprojects/simlib/src/file_contents.cc +++ b/subprojects/simlib/src/file_contents.cc @@ -1,3 +1,4 @@ +#include #include #include #include From 65f3c483f21a060c9dcb065b1fdd6723e67a5a10 Mon Sep 17 00:00:00 2001 From: Maritsu <66056347+Maritsu@users.noreply.github.com> Date: Wed, 26 Nov 2025 16:00:39 +0100 Subject: [PATCH 2/3] sim: allow submitting solutions written in C++23 --- .../sim/include/sim/submissions/old_submission.hh | 8 ++++++-- subprojects/sim/include/sim/submissions/submission.hh | 1 + .../add_or_reupload_problem.cc | 1 + .../job_handlers/judge_or_rejudge_submission.cc | 1 + subprojects/sim/src/web_server/old/submissions_api.cc | 2 ++ subprojects/sim/src/web_server/static/kit/scripts.js | 4 ++++ subprojects/simlib/include/simlib/sim/judge_worker.hh | 6 ++++-- subprojects/simlib/src/sim/judge_worker.cc | 5 +++++ .../simlib/test/sim/judge/language_suite/cpp_clang.cc | 11 +++++++++++ .../simlib/test/sim/judge/language_suite/cpp_gcc.cc | 11 +++++++++++ 10 files changed, 46 insertions(+), 4 deletions(-) diff --git a/subprojects/sim/include/sim/submissions/old_submission.hh b/subprojects/sim/include/sim/submissions/old_submission.hh index 058445b5..1bafb87a 100644 --- a/subprojects/sim/include/sim/submissions/old_submission.hh +++ b/subprojects/sim/include/sim/submissions/old_submission.hh @@ -35,6 +35,7 @@ struct OldSubmission { (PYTHON, 5, "python") (RUST, 6, "rust") (CPP20, 7, "cpp20") + (CPP23, 8, "cpp23") ); // Initial and final values may be combined, but special not @@ -96,6 +97,7 @@ constexpr const char* to_string(OldSubmission::Language x) { case OldSubmission::Language::CPP14: return "C++14"; case OldSubmission::Language::CPP17: return "C++17"; case OldSubmission::Language::CPP20: return "C++20"; + case OldSubmission::Language::CPP23: return "C++23"; case OldSubmission::Language::PASCAL: return "Pascal"; case OldSubmission::Language::PYTHON: return "Python"; case OldSubmission::Language::RUST: return "Rust"; @@ -109,7 +111,8 @@ constexpr const char* to_extension(OldSubmission::Language x) { case OldSubmission::Language::CPP11: case OldSubmission::Language::CPP14: case OldSubmission::Language::CPP17: - case OldSubmission::Language::CPP20: return ".cpp"; + case OldSubmission::Language::CPP20: + case OldSubmission::Language::CPP23: return ".cpp"; case OldSubmission::Language::PASCAL: return ".pas"; case OldSubmission::Language::PYTHON: return ".py"; case OldSubmission::Language::RUST: return ".rs"; @@ -123,7 +126,8 @@ constexpr const char* to_mime(OldSubmission::Language x) { case OldSubmission::Language::CPP11: case OldSubmission::Language::CPP14: case OldSubmission::Language::CPP17: - case OldSubmission::Language::CPP20: return "text/x-c++src"; + case OldSubmission::Language::CPP20: + case OldSubmission::Language::CPP23: return "text/x-c++src"; case OldSubmission::Language::PASCAL: return "text/x-pascal"; case OldSubmission::Language::PYTHON: return "text/x-python"; case OldSubmission::Language::RUST: return "text/x-rust"; diff --git a/subprojects/sim/include/sim/submissions/submission.hh b/subprojects/sim/include/sim/submissions/submission.hh index c43dea8d..a3bfd031 100644 --- a/subprojects/sim/include/sim/submissions/submission.hh +++ b/subprojects/sim/include/sim/submissions/submission.hh @@ -31,6 +31,7 @@ struct Submission { (PYTHON, 5, "python") (RUST, 6, "rust") (CPP20, 7, "cpp20") + (CPP23, 8, "cpp23") ); // Initial and final values may be combined, but special not diff --git a/subprojects/sim/src/job_server/job_handlers/add_or_reupload_problem/add_or_reupload_problem.cc b/subprojects/sim/src/job_server/job_handlers/add_or_reupload_problem/add_or_reupload_problem.cc index a8786c84..4ce6f1c5 100644 --- a/subprojects/sim/src/job_server/job_handlers/add_or_reupload_problem/add_or_reupload_problem.cc +++ b/subprojects/sim/src/job_server/job_handlers/add_or_reupload_problem/add_or_reupload_problem.cc @@ -185,6 +185,7 @@ std::vector submit_solutions( case sim::SolutionLanguage::CPP14: return Submission::Language::CPP14; case sim::SolutionLanguage::CPP17: return Submission::Language::CPP17; case sim::SolutionLanguage::CPP20: return Submission::Language::CPP20; + case sim::SolutionLanguage::CPP23: return Submission::Language::CPP23; case sim::SolutionLanguage::PASCAL: return Submission::Language::PASCAL; case sim::SolutionLanguage::PYTHON: return Submission::Language::PYTHON; case sim::SolutionLanguage::RUST: return Submission::Language::RUST; diff --git a/subprojects/sim/src/job_server/job_handlers/judge_or_rejudge_submission.cc b/subprojects/sim/src/job_server/job_handlers/judge_or_rejudge_submission.cc index 432f8144..b428feb4 100644 --- a/subprojects/sim/src/job_server/job_handlers/judge_or_rejudge_submission.cc +++ b/subprojects/sim/src/job_server/job_handlers/judge_or_rejudge_submission.cc @@ -149,6 +149,7 @@ void judge_or_rejudge_submission( case Submission::Language::CPP14: return sim::SolutionLanguage::CPP14; case Submission::Language::CPP17: return sim::SolutionLanguage::CPP17; case Submission::Language::CPP20: return sim::SolutionLanguage::CPP20; + case Submission::Language::CPP23: return sim::SolutionLanguage::CPP23; case Submission::Language::PASCAL: return sim::SolutionLanguage::PASCAL; case Submission::Language::PYTHON: return sim::SolutionLanguage::PYTHON; case Submission::Language::RUST: return sim::SolutionLanguage::RUST; diff --git a/subprojects/sim/src/web_server/old/submissions_api.cc b/subprojects/sim/src/web_server/old/submissions_api.cc index 0b9dc0c1..4d8ba85c 100644 --- a/subprojects/sim/src/web_server/old/submissions_api.cc +++ b/subprojects/sim/src/web_server/old/submissions_api.cc @@ -902,6 +902,8 @@ void Sim::api_submission_add() { slang = OldSubmission::Language::CPP17; } else if (slang_str == "cpp20") { slang = OldSubmission::Language::CPP20; + } else if (slang_str == "cpp23") { + slang = OldSubmission::Language::CPP23; } else if (slang_str == "pascal") { slang = OldSubmission::Language::PASCAL; } else if (slang_str == "python") { diff --git a/subprojects/sim/src/web_server/static/kit/scripts.js b/subprojects/sim/src/web_server/static/kit/scripts.js index b620f005..8ca64315 100644 --- a/subprojects/sim/src/web_server/static/kit/scripts.js +++ b/subprojects/sim/src/web_server/static/kit/scripts.js @@ -2061,6 +2061,7 @@ function submission_language_to_user_string(submission_language) { case 'python': return 'Python'; case 'rust': return 'Rust'; case 'cpp20': return 'C++20'; + case 'cpp23': return 'C++23'; default: assert(false, 'unexpected submission_language: ' + submission_language); } } @@ -4579,6 +4580,9 @@ function add_submission_impl(as_oldmodal, url, api_url, problem_field_elem, mayb }).add('