devenv 1.0:用 Rust 重写 - devenv

  • 发布信息:已发布devenv 1.0https://devenv.sh/),这是 CLI 到 Rust 的重写,带来许多新功能和改进。
  • 重写原因:一是 Python 重写时速度未达预期,二是 Nix 社区关于 flakes 存在争议,未来可使用相同 Rust 库和工具。
  • 新功能亮点

    • 默认进程管理器devenv up使用process-compose,处理进程间依赖并提供 ncurses 界面。
    • 测试基础设施devenv.nix中的enterTest属性可定义测试逻辑,运行devenv test可执行测试,包含所有工具和进程,方便集成和功能测试。
    • devenv-nixpkgs:创建用于在nixpkgs-unstable上运行测试的devenv-nixpkgs,运行约 300 个不同语言和进程的测试。
    • 非 root 容器:生成的容器以普通用户运行,提高安全性。
    • DEVENV_RUNTIME:引入环境变量DEVENV_RUNTIME,默认指向$XDG_RUNTIME_DIR, fallback 到/tmp
    • Python 原生库支持:解决 Nix 中使用pip工具的问题,可在 Python 中使用原生库。
    • CLI 改进:添加输入、更新单个输入、构建devenv.nix中的属性、以特定方式运行环境等命令,调整默认核心数和max-jobs
  • 迁移指南

    • 弃用devenv container --copy <name>重命名为devenv container copy <name>devenv container --docker-run <name>重命名为devenv container run <name>devenv ci重命名为devenv test且范围更广。
    • 破坏性变化.env文件需以.env前缀开头,默认去除--impure标志,builtins.currentSystem不再工作,需使用pkgs.stdenv.system,新生成的devenv.lock不能用于旧版本。
  • 未来展望

    • 在容器中运行devenv:支持在容器内运行devenv shelldevenv test,方便复杂环境设置和测试。
    • 生成包含完整环境的容器:enterShell可作为容器生成的一部分执行。
    • macOS 支持生成容器:目前不支持,未来有望实现。
    • 原生映射依赖:使devenv能将语言特定依赖映射到本地系统。

总结:devenv 1.0重写为 Rust 带来多方面改进,有迁移指南和未来展望,鼓励用户尝试并反馈。

阅读 18
0 条评论