Rust的不足之处,让它无法成为一门成熟的编程语言( 二 )


接下来是 LLVM 依赖问题 。 我知道 LLVM 有很多优点 (比如不需要担心在多平台上的代码生成和优化问题) , 但它也有一些缺点 。 首先 , 没有一个真正的自托管编译器 (这也是一个理论问题 , 但仍然值得我们思考) 。 其次 , 它的一些行为会限制我们 。 例如 , 我看到有很多人抱怨调试构建的速度太慢 , 主要是因为 LLVM 后端导致的 。 我猜想它仍然不能做一些与内存相关的优化 , 因为它的设计参考了 C++ 编译器 , 而后者仍然存在奇怪的多内存访问问题 。 我知道现在有 cranelift , 所以希望这个问题可以得到改善 。
最后 , 还有一个与上一个问题相关的问题 。 Rust 对汇编的支撑很差 。 当然 , 并不是所有人都需要汇编支持 , 但面向系统编程的语言除了支持高级语言代码外还应该要支持编译汇编 , 所以也应该支持汇编文件 , 即使不像 GAS 那样提供了丰富的预处理器语法 。 我们可以用 build.rs 来调用外部汇编器 , 但这样一点也不好 。
其他问题Rust std 库有一个问题 , 它对于操作系统的交互来说并没有什么用 。 如果我想对任意一个 UNIX 系统做一些事情 , 至少需要导入 libc , 并链接到外部 libc(它是运行时的一部分) 。 一种解决方案是把 musl 翻译成 Rust , 这样至少可以省掉链接步骤 。 但更好的解决方案应该是支持使用 std 里的 syscall() , 因为很多有趣的 libc 函数只是对 syscall() 进行了包装 (例如 open()/write()/ioctl()) 。
我不是 Rust 的架构师 , 也不可能成为 Rust 的架构师 。 但是我知道 , Rust 要成为一门成熟的适合系统开发的编程语言 , 缺少了一些东西 (本质上就是:完全自托管、规范和能够不借助 C 编译器和汇编实现与底层的交互) 。 希望这些问题能够得到解决 。
原文链接:
延伸阅读:
我为什么反对使用Rust?-InfoQ
自从尝了Rust , Java突然不香了-InfoQ
【Rust的不足之处,让它无法成为一门成熟的编程语言】关注我并转发此篇文章 , 私信我“领取资料” , 即可免费获得InfoQ价值4999元迷你书 , 点击文末「了解更多」 , 即可移步InfoQ官网 , 获取最新资讯~