uutils coreutils:像编译器一样精准报错
Pointing at the error: compiler-style diagnostics in uutils coreutils
Coreutils 工具报错五十年,终于迎来了改变。uutils coreutils 0.11.0 版本引入了类似 rustc 编译器的诊断功能,不再只给出一行模糊的错误提示,而是用箭头精准指向参数中的具体错误字符。无论是 tr 的字符集范围、sort 的字段规格,还是 chmod 的权限模式,现在都能清晰定位问题所在。这一改进仅在终端交互时生效,脚本和管道中仍保持原有格式,确保了与 GNU coreutils 的完美兼容。通过 ariadne 库,开发者将命令行工具的错误体验提升到了新高度,让调试过程更加直观高效。
对于大多数命令来说,本就没有其他地方可以指向,但少数命令的参数本身就是小型语言:一个 test 表达式、一个 chmod 模式、一个 sort 键或一个 tr 集合。
- discardable_dan
处理编译器错误已经成为我工作中最有趣的部分。如果你算一笔账,会发现绝大多数编译器调用都会产生错误。因此,这些调用必须生成尽可能优质的错误信息!(也许在 LLM 领域情况有所不同,但在之前这绝对是正确的。)追踪代码片段(spans)、执行额外的算法工作、深入探究期望为何失败,以便为用户提供最具信息量的错误提示,这些都在主计算路径上增加了额外的工作量。但回报是丰厚的:代码中存在的 bug 更容易被诊断,修复也更迅速。追踪代码片段以指向原始定义等操作,在你看到那个能精准解释问题出在哪里的错误之前,总让人觉得像是在做底层管道工作。而一旦你看到了,那些不再让你感到沮丧、不再让你觉得需要撒网式排查的错误,就会显得截然不同。
- shakna
请把这些都通过 TTS 引擎读出来。
确实,拥有真正有针对性的信息非常有帮助。但不得不使用 TUI 来完成这件事,这让我很头疼。不无巧合的是,我大部分时间都在使用 JAWS。
- emilfihlman
很酷的创举(确实是又好又酷)。
先把 Rust 版本做得和 C 版本完全一样再说吧。
给一个需要正确运行的软件增加复杂度、破坏兼容性并引入新 bug,这简直荒谬。