ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Dagger v0.19.7 版本详解:CurrentModule API 增强、--eager-runtime 标志与缓存性能修复

Dagger v0.19.7 版本详解:CurrentModule API 增强、--eager-runtime 标志与缓存性能修复 Dagger v0.19.7 版本详解CurrentModule API 增强、--eager-runtime 标志与缓存性能修复【免费下载链接】daggerAutomation engine to build, test and ship any codebase. Runs locally, in CI, or directly in the cloud项目地址: https://gitcode.com/GitHub_Trending/da/dagger本篇基于 v0.19.7 发布记录发布于 2025-11-20逐条解读该版本引入的三项新增能力与十二项缺陷修复并结合开源仓库源码印证各特性在 CLI 参数解析、引擎客户端与会话缓存层面的落地位置帮助使用者快速掌握本次更新对模块开发、SDK 运行时调试、云引擎认证和缓存命中率的实际影响。版本概览v0.19.7 是一个以模块工具链增强 缓存正确性修复为主线的迭代整体结构如下Added3 项CurrentModule API 暴露Dependencies()与GeneratedContextDirectory()dagger functions新增--eager-runtime标志新增 SDK 运行时调试模式Fixed12 项集中在 git 元数据缓存、文件内容缓存键、引擎查询缓存、Docker daemon 连接速度、磁盘占用计算、云认证优先级、并发私有仓库 secret 冲突、LLM 输出冗长度、TypeScript 枚举默认值等方向外部贡献者chrisjpalmerCurrentModule API 增强。新增功能1. CurrentModule API 暴露 Dependencies() 与 GeneratedContextDirectory()该变更PR #11146由 chrisjpalmer 贡献让模块运行时可以通过CurrentModule对象直接获取两类关键信息Dependencies()当前模块声明的依赖模块列表使模块代码可以在运行时自省自己的模块依赖树GeneratedContextDirectory()模块代码生成的上下文目录即 codegen 产物所在目录模块可以据此读取自己生成的客户端代码位置。这一能力的价值在于模块自描述过去模块若需要知道依赖或生成目录只能在模块加载器外部处理现在模块函数内部即可完成自省与联动。仓库中的集成测试可直接验证该字段在 GraphQL 层的可查询性例如 module_current_module_test.go 中专设了generatedContextDirectory测试用例module_call_test.go 与 module_config_test.go 中也有{moduleSource(refString:.){generatedContextDirectory{export(path:.)}}}这类直接导出生成目录的查询写法可作为理解该字段用法的参照。2.dagger functions新增--eager-runtime标志该标志PR #11413由 TomChv 贡献用于禁用模块运行时的懒加载lazy load改为提前加载eager运行时。从源码结构看该标志的落地链路清晰可查标志在 internal/cmd/dagger/module.go 中注册// Add the eager module loading flag to disable lazy load on runtime. moduleFlags.BoolVar(eagerRuntime, eager-runtime, false, load module runtime eagerly)默认值为false即保持原有的懒加载行为它作为模块加载类标志的一部分被挂载到functions及api functions别名、listen、query、call、mcp、script、checks等一批会连接引擎的命令上见 module.go 中的moduleAddFlags调用标志值最终通过 function_name.go 中的initModuleParams传入引擎连接参数func initModuleParams(a []string) client.Params { return client.Params{ ExecCmd: a, Function: functionName(a), EagerRuntime: eagerRuntime, LoadWorkspaceModules: shouldLoadWorkspaceModules(false), } }也就是说--eager-runtime是一个引擎会话级参数在 CLI 与引擎建立连接时即生效而非在查询执行时处理。该标志同时被列入版本能力门控清单见 capabilities_test.go 中的eager-runtime条目意味着在不同 CLI 与引擎版本组合下其行为会受能力协商约束。适用场景模块运行时按需懒加载可能在首次调用时产生可感知的延迟对调试、基准测量或希望运行时初始化错误尽早暴露的工作流可以显式加上--eager-runtime让运行时在会话建立阶段就完成加载。3. 新增 SDK 运行时调试模式发布说明PR #11349由 grouville 贡献以一句话描述了该特性Add SDK runtime debug mode即允许开发者进入 SDK 运行时的调试模式观察模块函数在引擎侧的执行细节。当前仓库内的发布记录未展开具体触发方式与环境变量名称实际使用细节建议以官方文档说明为准从发布节奏看它与--eager-runtime同属模块运行时可观测性方向的补强。缺陷修复Fixed本次修复可归为四类逐条说明如下。缓存正确性修复git.Remote() 元数据进入会话缓存PR #11366远程 git 仓库的元数据查询如最新 tag、分支信息此前每次都会触发真实解析现在缓存在会话级缓存中重复查询不再重复访问远端。对频繁调用git().withURL(...)元数据接口的 CI 场景是直接的提速点。Directory.File() 改为基于文件内容缓存PR #11329修复前Directory.File()的缓存键未把文件内容纳入考虑存在内容变化后返回旧文件对象的风险修复后按内容哈希确定缓存键保证内容变 → 缓存失效的语义正确。禁用引擎客户端查询的缓存PR #11416引擎客户端自身的查询client query被错误地纳入缓存导致其结果可能过期本次直接关闭该路径的缓存。三条修复共同指向一个主题v0.19.7 对缓存键与缓存边界做了更严格的校准优先保证正确性而非命中率。性能与稳定性加快与本地 Docker daemon 的连接时间PR #11421由 tiborvass 贡献本地环境下 CLI 启动到连接 docker daemon 的握手路径被优化减少每次命令的前置等待。磁盘占用计算性能改进PR #11327由 sipsma 贡献磁盘用量统计路径整体加速。修复磁盘占用计算中的罕见 panicPR #11450由 sipsma 贡献同一代码路径的极端场景崩溃问题被消除。这两项同由 sipsma 完成属于先提速、再兜底的组合修复。云引擎认证云引擎优先使用 DAGGER_CLOUD_TOKEN 而非 OAuthPR #11438由 marcosnils 贡献当两者同时存在时令牌环境变量优先于交互式 OAuth 登录态。仓库中可确认该环境变量的定义位置driver.go 中声明了EnvDaggerCloudToken DAGGER_CLOUD_TOKENcloud.go 中的报错提示也要求先执行dagger login org或配置 DAGGER_CLOUD_TOKEN。这一优先级调整对 CI 场景意义重大流水线中通常注入令牌而非维护 OAuth 会话令牌优先可以避免认证走错分支导致的鉴权失败或行为不一致。并发访问私有 git 仓库的 secret 冲突修复多客户端并发使用不同 auth token 时的 failed to add secret 错误PR #11456由 sipsma 贡献此前当多个客户端同时访问同一私有 git 仓库、且各自持有不同的认证令牌时secret 注册逻辑会产生冲突报错修复后该并发场景可以正常工作。这是团队协作或多流水线并行场景下较常见的隐性故障源。LLM() 相关修复LLM() 杂项修复PR #11370由 vito 贡献发布说明仅以 Miscellaneous fixes in LLM() 概括未展开具体条目降低直接对象函数调用时的 LLM 输出冗长度PR #11435由 vito 贡献当 LLM 以直接调用对象函数的方式工作对应 object tools 模式时其过程输出被精简避免刷屏式日志。仓库中 LLM 对象工具的实现位于 llm_object_tools.go可作为理解该调用形态的源码入口。用户体验与 SDK 修正面向用户的错误信息更简洁PR #11434由 vito 贡献精简了直接呈现给终端用户的错误文案减少噪声。TypeScriptintrospection 阶段正确解析枚举默认值PR #11319由 grouville 贡献修复前 TypeScript SDK 的代码内省无法正确解析枚举类型的默认值会产生未解析警告修复后默认值被正确带入生成的类型定义消除了这类误报警告。修复项速查表类别修复内容对应 PR缓存git.Remote() 元数据进入会话缓存#11366缓存Directory.File() 按文件内容缓存#11329缓存禁用引擎客户端查询缓存#11416性能加快本地 Docker daemon 连接#11421性能磁盘占用计算提速#11327稳定性修复磁盘占用计算罕见 panic#11450认证云引擎优先 DAGGER_CLOUD_TOKEN#11438并发修复多 token 并发访问私有 git 的 secret 错误#11456LLMLLM() 杂项修复#11370LLM直接对象函数调用时输出更简洁#11435体验面向用户的错误信息更简洁#11434SDKTypeScript 枚举默认值在 introspection 中正确解析#11319版本影响小结模块开发者CurrentModule.Dependencies()/GeneratedContextDirectory()让运行时自省模块依赖与生成目录成为可能--eager-runtime提供了绕过懒加载的显式开关适合调试与测量运行时初始化开销。CI 与云环境用户DAGGER_CLOUD_TOKEN优先级调整与私有仓库并发 secret 修复直接改善了流水线场景的认证与并发可靠性。通用用户本次大量修复围绕缓存键正确性与边界升级后重复查询 git 元数据、文件内容读取等路径的缓存行为更符合预期同时 Docker daemon 连接与磁盘占用统计也更快更稳。完整变更清单见仓库内的 .changes/v0.19.7.md其中还附有官方文档、社区讨论渠道等后续入口的指引外部链接从略。升级前建议留意--eager-runtime依赖版本能力协商若 CLI 与引擎版本组合不匹配该标志可能不可用或行为受门控约束。【免费下载链接】daggerAutomation engine to build, test and ship any codebase. Runs locally, in CI, or directly in the cloud项目地址: https://gitcode.com/GitHub_Trending/da/dagger创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表