Expand description
语言注册表与围栏代码块 info string 解析。
支持的语言通过 LANGUAGES 注册(镜像名、运行命令、默认资源限制、是否允许网络)。
parse_fence_info 解析 markdown 围栏代码块的信息串,识别 runnable 标记与
可选的 JSON 资源覆盖(如 python runnable {"timeout_secs":10})。
实际可用语言默认即注册表里的全部;若设置了 CODE_RUNNER_LANGUAGES
环境变量,则进一步收窄到该白名单内(is_supported_lang)。
别名归一化:normalize_lang 把 js/javascript 归一为 node、
rs 归一为 rust、ts/typescript 归一为 bun。归一化在 parse_fence_info
与 is_supported_lang 内完成,markdown 渲染期就把别名换成 canonical key,
下游 data-lang / ExecRequest.language / LANGUAGES.get 只见到 canonical
名(python/node/go/rust/bun),不再出现别名,避免查表落空。
Structs§
- Language
Def - 单个语言的运行定义。语言名即
LANGUAGES的 key,不再冗余存字段。
Constants§
- LANG_
ALIASES 🔒 - 语言别名 → canonical key 映射。
Statics§
- LANGUAGES
- 内置语言注册表。新增语言时在此
insert即可默认启用; 若运维需要收窄,设置CODE_RUNNER_LANGUAGES为逗号分隔列表。
Functions§
- is_
supported_ lang - 是否支持该语言:先
normalize_lang归一化,再查LANGUAGES注册表。 若设置了CODE_RUNNER_LANGUAGES,还需同时在该白名单内(用于收窄可用语言, 白名单用 canonical key 比较——运维写node而非js);未设置则全部放行。 - normalize_
lang - 把语言标识归一化为
LANGUAGES注册表里的 canonical key。 - parse_
fence_ info - 解析围栏代码块的 info string。