Brush Shell v0.2.19 版本发布:兼容性增强与性能优化
项目简介
Brush 是一个用 Rust 语言编写的 Bash 兼容 shell 实现,旨在提供现代化的 shell 体验同时保持与 Bash 的高度兼容性。该项目采用了 Rust 的内存安全特性来构建一个更可靠、更安全的 shell 环境,同时通过精心设计实现了对 Bash 脚本的良好兼容性。
版本亮点
本次发布的 Brush Shell v0.2.19 版本带来了一系列重要的改进,主要集中在兼容性增强、API 优化和性能提升三个方面。
兼容性增强
-
新增 BRUSH_VERSION 环境变量
现在可以通过 BRUSH_VERSION 变量明确区分 Brush 自身的版本和它所兼容的 Bash 版本,这对于脚本开发和调试非常有用。 -
Gettext 引用字符串支持
增加了对 Gettext 引用字符串的初步支持,虽然目前还不支持翻译功能,但已经能够正确解析这类字符串结构。 -
Bash 扩展重定向支持
完整实现了>&-、>&N-等 Bash 特有的重定向形式,使得更多 Bash 脚本能够在 Brush 中正常运行。 -
算术运算改进
修复了左移位运算的处理,并允许在单目运算符后使用空格,提高了算术表达式的兼容性。
API 与功能改进
-
解析器 API 优化
对脚本解析 API 进行了调整,现在可以直接从字节流读取脚本内容,提高了使用的灵活性。 -
函数管理增强
新增了清除所有 shell 环境函数的能力,为开发者提供了更灵活的环境控制选项。 -
printf 内置命令重写
基于 Rust coreutils 项目的 uucore 库重写了 printf 实现,提高了格式化和输出的可靠性。 -
新增 --rcfile 选项
命令行新增了指定启动配置文件的选项,为用户提供了更灵活的启动配置方式。
重要问题修复
-
ANSI-C 字符串转义处理
修正了 ANSI-C 字符串中转义序列的处理逻辑,特别是对单引号的转义处理。 -
Here Document 终止处理
修复了当 Here Document 被 EOF 终止时的处理逻辑,避免了可能的解析错误。 -
管道输入处理
修正了当命令被管道传递到 stdin 时的行为,确保了交互式和非交互式使用场景的一致性。 -
路径搜索优化
移除了路径搜索中的冗余查找操作,提高了命令执行的效率。
技术细节深入
变量处理改进
新版本对变量处理进行了多项优化,特别是对特殊变量如 GROUPS 的处理更加准确,确保有效 GID 总是位于 GROUPS 数组的第一个位置。同时改进了对大小写转换变量(-u/-c/-l)的更新机制,使其行为更符合 Bash 标准。
解析器架构优化
解析器部分引入了 insta 测试框架进行快照测试,提高了解析器行为的可验证性。同时增加了对 AST 结构的序列化支持,便于调试和测试。错误处理机制也进行了抽象化改进,使错误信息更加清晰和一致。
性能优化策略
除了路径搜索优化外,新版本还对多个热点路径进行了性能调优。通过减少不必要的变量查找和环境操作,提升了整体执行效率。特别是在频繁执行的命令查找和变量扩展路径上进行了针对性优化。
开发者体验提升
对于使用 Brush 作为库的开发者,新版本提供了更友好的 API 设计:
- 可以直接从字节流读取脚本内容,不再局限于文件或字符串
- 提供了更灵活的函数管理接口
- 解析错误信息更加结构化,便于程序化处理
- AST 结构增加了序列化支持,便于调试和测试
总结
Brush Shell v0.2.19 是一个重要的兼容性和稳定性提升版本,通过多项改进使 Brush 更加接近 Bash 的行为标准。特别是对复杂脚本元素(如 Here Document、ANSI-C 字符串、算术表达式等)的处理更加准确可靠。性能优化和 API 改进也为开发者提供了更好的使用体验。
随着与 Oils 项目的兼容性测试集成,Brush 的兼容性验证将更加全面,有助于项目朝着更高兼容性和稳定性的方向发展。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00