新闻详情

新闻详情

首页 / 资讯中心 / 详情

devenv 中启用 Gleam 语言环境:languages.gleam 模块配置与实现解析

发布时间:2026/11/15 21:23:20来源:尧图网络
devenv 中启用 Gleam 语言环境:languages.gleam 模块配置与实现解析
开发工具CLI【免费下载链接】devenvFast, Declarative, Reproducible, and Composable Developer Environments using Nix项目地址https://gitcode.com/gh_mirrors/de/devenv点击查看免费下载导读Gleam 是一门运行在 Erlang 虚拟机BEAM之上的强类型函数式语言。在 devenv 项目中通过languages.gleam模块你可以在 Nix 声明式环境中一键获得完整、可复现的 Gleam 开发工具链。本文基于 Gleam 语言文档 与 模块实现系统讲解该模块的两个核心配置项languages.gleam.enable与languages.gleam.package的用法、默认值与底层行为并给出可直接复制运行的完整示例。模块概览一个选项组两个配置项devenv 将每种语言的支持封装为languages.name.*形式的选项。Gleam 模块位于 src/modules/languages/gleam.nix对外暴露两个选项选项类型默认值作用languages.gleam.enablebooleanfalse是否启用 Gleam 开发工具languages.gleam.packagepackagepkgs.gleam指定要使用的 Gleam 包可覆盖为指定版本这两个选项是本文的核心下面逐一展开。开启 Gleam 支持languages.gleam.enablelanguages.gleam.enable是一个布尔开关用于控制是否将 Gleam 开发工具纳入当前 devenv 环境。类型boolean默认值false示例值true从源码实现看src/modules/languages/gleam.nix#L18-L24当enable true时模块会执行两件事config lib.mkIf cfg.enable { languages.erlang.enable true; packages [ cfg.package ]; };自动启用 Erlang 支持languages.erlang.enable trueGleam 编译产物运行在 BEAM 虚拟机上需要 Erlang/OTP 运行时才能执行因此模块会隐式拉起 Erlang 环境保证gleam run产出的字节码可以直接运行。把cfg.package加入packages即把选定的 Gleam 包安装进 shell使gleam、gleam build、gleam test、gleam format等命令直接可用。如果你在 devenv 之外还单独配置了languages.erlang.enable两者并不冲突模块层面的叠加是幂等的。选择 Gleam 版本languages.gleam.packagelanguages.gleam.package用于指定环境内安装的 Gleam 包来源。类型package默认值**pkgs.gleam即当前 nixpkgs 快照中的 Gleam 版本源码中的定义src/modules/languages/gleam.nix#L10-L15package lib.mkOption { type lib.types.package; default pkgs.gleam; description The Gleam package to use.; defaultText lib.literalExpression pkgs.gleam; };为什么需要覆盖 package三个常见场景锁定版本默认跟随 nixpkgs想固定到特定 Gleam 版本例如项目要求 1.x 的某个小版本时可以从 nixpkgs 或其他源取指定版本使用自定义构建例如带特殊编译选项或补丁的本地 Gleam 构建产物统一工具链版本让 CI 与本地 shell 使用完全一致的 Gleam 版本保证可复现性。覆盖示例将 Gleam 替换为自定义包{ pkgs, ... }: { languages.gleam.enable true; languages.gleam.package pkgs.gleam.overrideAttrs (old: { # 例如打上本地补丁或调整构建参数 patches (old.patches or []) [ ./gleam-custom.patch ]; }); }需要注意的是覆盖package不会关闭 Erlang 依赖的自动启用——只要enable trueErlang 运行时依然会被带上。完整可运行示例仓库的 examples/gleam 目录提供了一个最小可运行示例直接说明了实际用法。devenv.nix{ pkgs, ... }: { # https://devenv.sh/languages/ languages.gleam.enable true; enterShell gleam --version ; # See full reference at https://devenv.sh/reference/options/ }配套的 devenv.yaml 声明了输入源inputs: nixpkgs: url: github:NixOS/nixpkgs/nixpkgs-unstable使用方法在包含上述两个文件的目录下devenv shell # 进入带 gleam 的开发者 shell gleam --version # 验证 Gleam 已就绪 gleam new my_app # 初始化新项目 cd my_app gleam runenterShell会在每次进入环境时打印gleam --version用于即时确认工具链生效。由于 Erlang 被自动启用gleam run启动 BEAM 进程时不会再提示缺少运行时。底层实现要点为什么开启 Gleam 必须同时开启 Erlang结合 devenv-core 的模块求值流程languages.*各模块的config最终会被合并进顶层选项再求值。Gleam 模块的关键设计在于lib.mkIf cfg.enable条件块内部直接声明languages.erlang.enable true这是一种语言依赖语言的模块间联动——从源码结构看它保证了 BEAM 运行时与 Gleam 编译器永远同时出现省去了用户手动配置 Erlang 的步骤也避免了两者版本不匹配导致的运行时错误。对比同目录下的 Erlang 模块src/modules/languages/erlang.nix可以看到 Erlang 模块会额外处理rebar3的编译版本对齐问题而 Gleam 模块保持极简仅声明包本身其余依赖交由 Erlang 模块负责。小结你想做的事配置写法启用 Gleam 工具链languages.gleam.enable true;使用指定版本的 Gleamlanguages.gleam.package 某个 package 表达式;同时获得可运行的 BEAM 环境无需额外配置enable true自动完成只需记住一个开关和一个包选项你就能在 devenv 中得到完整、可复现、跨机器一致的 Gleam 开发环境。更多语言模块的同类用法可参考 supported-languages 示例 与 语言配置总览如存在若需查看该模块的全部选项定义可阅读 模块源码。赞分享开发工具CLI【免费下载链接】devenvFast, Declarative, Reproducible, and Composable Developer Environments using Nix项目地址https://gitcode.com/gh_mirrors/de/devenv点击查看免费下载相关推荐5步构建医疗信息化系统OpenEMR开源电子病历实战指南5步构建医疗信息化系统OpenEMR开源电子病历实战指南 OpenEMR作为全球最受欢迎的开源电子健康记录系统为医疗机构提供了完整的企业级医疗信息管理解决方开发工具CLIdevenv 中配置 Lean 4 开发环境languages.lean4 模块详解devenv 中配置 Lean 4 开发环境languages.lean4 模块详解 本指南介绍如何在 Nix 驱动的开发者环境 devenv 中启用 Lea开发工具CLIgrpc-gateway 怎么给 runtime.ServeMux 添加自定义 HTTP 路由grpc gateway 怎么给 runtime.ServeMux 添加自定义 HTTP 路由 当你基于 grpc gateway 搭建网关后某些 HTTP开发工具CLI上一篇【亲测免费】 ZynAddSubFX 开源合成器项目推荐下一篇CppNumericalSolvers轻量级C非线性优化库创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

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

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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