新闻详情

新闻详情

首页 / 资讯中心 / 详情

如何给 Hydro 在线判题系统添加新编程语言:一份配置文件搞定评测定制

发布时间:2026/9/19 22:04:56来源:尧图网络
如何给 Hydro 在线判题系统添加新编程语言:一份配置文件搞定评测定制
如何给 Hydro 在线判题系统添加新编程语言一份配置文件搞定评测定制【免费下载链接】Hydro项目地址: https://gitcode.com/hydro-dev/Hydro想给你的 Hydro OJ开源在线判题系统Hydro Online Judge增加一门新语言比如 Lua、Swift 或 Kotlin好消息是你不需要改任何代码只需要在评测机的语言配置文件YAML 格式里加上一段描述怎么编译、怎么运行的规则即可。本文将带你了解 Hydro 判题系统的语言配置机制并给出添加新编程语言的完整步骤。一、Hydro 如何知道该怎么跑你的代码Hydro 的判题核心是 hydrojudge 包它内置了一份语言清单 langs.yaml。每一门语言都是 YAML 里的一个键值就是它的评测说明书。以 C 为例cc: compile: /usr/bin/g -O2 -Wall -stdc11 -o foo foo.cc -lm判题流程很简单把用户提交的代码存成约定文件名 → 执行compile里的编译命令 → 执行execute里的运行命令 → 在沙箱中跑测试点比对输出得出评测结果。二、核心字段速查一份语言说明书能写什么语言配置的完整字段定义在 packages/common/lang.ts 中常用字段如下字段作用默认值compile编译命令编译产物需输出为/w/foo无解释型语言可不写execute运行产物的命令/w/foocode_file用户代码保存的文件名foo.语言键名target编译产物名如 Java 的 jar 包—time_limit_rate/memory_limit_rate时间/内存限制倍率解释型语言常 11compile_time_limit/compile_memory_limit编译阶段的超时与内存毫秒/MB—version编译版本命令用于前端展示编译器版本—remote是否仅在远程评测机上评测falsehidden/disabled隐藏该语言 / 禁用该语言falseanalysis提交时的静态分析命令如检查是否使用了特殊库—可以看到只有execute等字段有合理的默认值比如 lang.ts 中的 parseLang 会自动补上code_file: foo.语言键名、execute: /w/foo等缺省项——这意味着解释型语言Python、Ruby 这类往往只需要一行配置。三、添加新语言实操三步搞定步骤 1确认评测机已安装对应编译器新语言首先要保证评测机或远程评测容器里装好了编译器/解释器并可用/usr/bin/...之类的绝对路径调用。Docker 部署方式可参考 install/docker/judge/Dockerfile 添加安装步骤。步骤 2在语言配置文件中新增一段 YAML以添加Lua为例只需在语言配置里加上lua: execute: /usr/bin/lua foo.lua time_limit_rate: 2如果它需要编译可参考 langs.yaml 中java的写法编译 指定code_file/target 调大compile_time_limitswift: code_file: Main.swift compile: /usr/bin/swiftc -O -o /w/foo /w/Main.swift compile_time_limit: 30000步骤 3配置生效并验证内置语言清单位于 langs.yaml评测机通过配置文件judge.yaml解析逻辑见 packages/hydrojudge/src/config.ts读取语言设置也支持用环境变量VJ4_LANGS指向一份自定义语言文件见 packages/hydrojudge/src/hosts/vj4.ts。重启评测服务后在前端提交页面即可看到新语言若配置了version字段判题记录页还会显示编译器版本实现见 packages/hydrojudge/src/info.ts。四、新手常见坑位清单产物路径不对编译产物必须放在/w/foo或指定的target否则评测时报执行错误解释型语言忘了调倍率Python/JS 等运行慢建议像内置py3、java一样调大time_limit_rate编译超时Swift、C# 这类编译较慢的语言记得设置compile_time_limit: 30000参考 langs.yaml 中rs、go的写法想让某语言只在特定评测机跑加上remote: true避免在没装编译器的节点上评测。总结给 Hydro 判题系统添加新编程语言本质上就是写一份编译 运行的命令说明书在 langs.yaml 风格的配置里增加一段 YAML填好compile与execute按需设置倍率与超时重启服务即可。一份配置文件就能完成整套评测定制的扩展这也是 Hydro OJ 插件化、可定制设计的魅力所在。【免费下载链接】Hydro项目地址: https://gitcode.com/hydro-dev/Hydro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

winget 装好 Claude Code,claude 命令的模型通道改到 TaoToken 2026/9/20 1:17:25

winget 装好 Claude Code,claude 命令的模型通道改到 TaoToken

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
solon-ai-harness 的 Agent 每加一个模型就写一份 sk-?TaoToken 这样改 ChatConfig 2026/9/20 1:17:25

solon-ai-harness 的 Agent 每加一个模型就写一份 sk-?TaoToken 这样改 ChatConfig

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
从初三数学圆PDF到结构化题库:Python抽取与公式识别实战 2026/9/20 1:17:25

从初三数学圆PDF到结构化题库:Python抽取与公式识别实战

简介:一份面向初三学生的圆专题数学练习资料,围绕中考常考的“圆”相关知识编排,适合课后巩固、考前强化及教师布置分层作业使用。整体以单个PDF文件打包,总大小仅147KB,内容紧凑、便于下载后按题目顺序逐题训练。其中…

阅读更多 →
uni-app x 全局变量与状态管理实战:globalData、Pinia 与全局 reactive 变量 2026/9/20 1:17:25

uni-app x 全局变量与状态管理实战:globalData、Pinia 与全局 reactive 变量

示例工程前端移动开发跨平台 【免费下载链接】uni-app A cross-platform framework using Vue.js 项目地址: https://gitcode.com/gh_mirrors/un/uni-app 点击查看 免费下载 导读 本文围绕 uni-app x 的全局数据共享问题,系统讲解三种可选方案&#xf…

阅读更多 →
Spring Boot+MySQL构建智慧旅游系统实战 2026/9/20 1:17:25

Spring Boot+MySQL构建智慧旅游系统实战

简介:本资源是一份面向计算机专业本科生的毕业设计文档,聚焦基于SpringBoot与MVC架构的智慧旅游系统开发实践,适用于Java Web开发初学者及课程设计、毕设参考者。文档系统阐述了智慧旅游系统的定义与特点,深入分析地理特征、文化资…

阅读更多 →
PHP函数实用手册:签名、边界与个人索引生成指南 2026/9/20 1:14:25

PHP函数实用手册:签名、边界与个人索引生成指南

简介:这是一份面向PHP开发者和学习者的函数速查手册,以PDF电子书形式整理PHP常用内置函数,适合在日常编码、备考复习或课堂教学中随时查阅。内容按功能模块归类,覆盖Apache服务器函数、数组函数、日历函数等主要板块。Apache部分提…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞