“用Rust重写一切!”工程传来一个最新消息:基于Rust改造的Fish shell即将发布beta版本进行公测。
Fish无疑是最有趣的最好用的Shell之一,其丰富的功能列表让许多现有的压箱底的老古董shell相形见绌。和POSIX 标准的shell,比如Bash等不同,Fish shell基于面向更加友好,易用的目标来打造和兼容在大多数POSIX OS上也可以顺利运行。
之前就听说过了,Fish shell的Rust化改造并使其可用于服务器。然而,根据最新爆出消息,第一个基于Rust Fish版本即将开放进行公测。
最近创建的一个Fish shell GitHub仓库问题列表中开发人员发表了一个计划,将发布基于Rust Port的Fish的 Beta 版,以通过公测的方式来发现和完善Rust Port的各种问题。
开发人员认为,Rust版本的发布将提高Shell的可维护性和错误修复能力,并为未来发展奠定基础。虽然Rust移植版不会立即为最终用户带来新的功能,但它标志着Fish Shell发展的重要一步。
一般来说,软件公开测试版是稳定版本发布之前的必经之路,可以在稳定版本发布之前发现和根除所有Bug。
Fish Shell Rust转型
Fish shell 所基于的C++基础出现了许多不可避免的问题。致使其任何必要的改变都需要花费长时间来实施。现有版本是最初于2016年迁移到C++11版本,并一直延续下来,对底层语言C++升级是个一个漫长而痛苦的过程,致使进一步升级更现代的 C++14/17存在极大的不确定性。
如果放弃这种升级换用另一种方式,好处是:
可以让运行旧LTS发行版的服务器上的Fish可用;
使其易于构建和运行;
不再要在过分关注于C++的安全问题,例如头文件、内存安全、未定义行为、编译器错误等问题。
而另一种方式就是用现在流行的内存安全语言Rust来代替C++展示其肌肉:
将基本功能维护都过渡到Rust,并目标是在下一个主要版本发布时候实现。
基于项目现状考虑,这种转型是一个过渡层移植,而非完全用Rust重写,并且通过过渡层,将应用都通过Rust实现,并通过Rust形式翻译链接现有C++底层模块。
这种思想源于一个被丢弃的尝试:Fish shell在原作者“Axel Liljencrantz”丢弃后被“ridiculousfish”拾起,并给了他绿色信号,让这个Fork成为官方的后续项目。
为了证明这是可行的,他将一些模块移植到Rust中,并将它们放在一个位于C++ 代码下并链接到C++代码的包中。
目前官方请求Fish和Rust开发工具的人提供完成脚本,并使用git存储库最新代码对其进行测试验证。
可以展望用不了多久Rust版的Fish Shell就可以跑在你我的服务器上了。
领取专属 10元无门槛券
私享最新 技术干货