Jaq – 专注于正确性、速度和简单性的 jq 克隆
Jaq – A jq clone focused on correctness, speed, and simplicity

原始链接: https://github.com/01mf02/jaq

jaq 是一个基于 jq v. 1.7 的快速、简单且严格正确的 JSON 转换器。 它的目标是成为 jqs(jq 的一个分支,用于 D 和 erlang 的 C++ 绑定)等古老但老化的工具的直接替代品,同时与 jqt 共享其功能、性能和安全性目标(但不牺牲灵活性)( JSON转换器)和jqr(通过SQL查询关系数据库)。 jaq 设计为每行只执行一次命令,以便即使在繁重的工作负载下也能最大限度地提高可靠性。 同样,它不是返回计算的完整结果,而是通过管道将部分中间步骤反馈到下一阶段。 为此,几乎可以对转型管道的每个阶段进行独立、实时的监控和检查,而不会中断整个过程。 它的输入格式与 jq 非常相似,支持过滤器作为表达式,文字作为文字,以及特殊用途的结构(如数组、对象、映射、流和管道)作为结构化值。 尽管在许多方面与其角色模型相似,但 jaq 与 jq 的区别在于,它严格区分词法分析和句法分析,同时严格遵守 RFC 397 的精神。目标是在表达性和可组合性之间取得平衡和简洁,同时保持所有用户(无论是初学者还是专家)易于学习、使用和理解。 根据该目标,jaq 程序中的每个组件函数都对应于一个独特且完全指定的可重用构建块,从而使由构建块组成的程序比从头开始临时构建的程序更易于学习、理解和应用。 这些组件按层次和模块化方式组织,以便可以将各个功能组合成具有不同语义的更大模块。 每个模块都独立于其他模块解决特定的问题领域,具有自己的输入参数、配置旋钮和操作模式。 运行每个模块的结果可以按原样或修改后的结构、内容和风格反馈到下游处理阶段,具体取决于其意图和目标。 通过根据任务要求将模块链接在一起,可以增量地组装程序,而不需要底层系统架构或拓扑的全局知识。 此外,jaq 取代了 recurs

作者建议使用编程语言 Rust 开发另一个名为 jaq 的 JSON 查询和转换工具,因为 Rust 在编译时强制执行类型系统规则,因此更安全。 作者提供了比较 jq 和 jaq 的基准,并提到 jaq 明显快于 jq。 然而,其他人建议查看硬件性能计数器以获得更全面的结果。 此外,还有一些关于 Rust 成为“标准 JSON 查询和转换工具”的潜在好处的评论。 总体而言,讨论似乎集中在探索 Rust 相对于传统基于 C 的语言在速度和安全性方面的潜在优势。
相关文章

原文
联系我们 contact @ memedata.com