Skip to main content

Module languages

Module languages 

Source
Expand description

语言注册表与围栏代码块 info string 解析。

支持的语言通过 LANGUAGES 注册(镜像名、运行命令、默认资源限制、是否允许网络)。 parse_fence_info 解析 markdown 围栏代码块的信息串,识别 runnable 标记与 可选的 JSON 资源覆盖(如 python runnable {"timeout_secs":10})。

实际可用语言默认即注册表里的全部;若设置了 CODE_RUNNER_LANGUAGES 环境变量,则进一步收窄到该白名单内(is_supported_lang)。

别名归一化normalize_langjs/javascript 归一为 noders 归一为 rustts/typescript 归一为 bun。归一化在 parse_fence_infois_supported_lang 内完成,markdown 渲染期就把别名换成 canonical key, 下游 data-lang / ExecRequest.language / LANGUAGES.get 只见到 canonical 名(python/node/go/rust/bun),不再出现别名,避免查表落空。

Structs§

LanguageDef
单个语言的运行定义。语言名即 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。