如何在运行时解释或评估Rust?

3

我一直在搜索,尽管这似乎是一个非常想要的功能,但所有的搜索结果似乎都至少有一年的历史。

目前的情况如何?是否有好的解决方案来在运行时评估任意的Rust代码(例如Haskell的hint)?

也许可以使用Miri来实现一些东西?


“一个非常想要的功能”,真的吗?谁想要那个?为什么想要那个?Miri有完全不同的目的。恐怕你不应该试图追求这个目标。你不会想要解释C或C++,对吧? - mcarton
1
如果你在谷歌上搜索一下,你会发现有很多人都在询问这个问题,并且在其他许多语言中也存在这个问题。我无法告诉你为什么其他人想要这样做,这似乎有点奇怪,不是吗?我的用例非常特殊,但我希望能够将任何类型的 Rust 代码发送到服务器并在运行时执行它,这就是我的用例。 - jundl77
许多(大部分?)支持“eval”的流行语言都是解释型语言。大多数编译型语言要么根本不支持 eval,要么需要使用比简单的 eval(string) 更为复杂的 API。 - Wesley Wiser
2
Scala和Haskell都提供了这个功能,我相信还有其他语言也有类似的功能 - 但它们都有一个REPL。 - jundl77
1个回答

5

Miri(缩写自Rust解释器MIRInterpreter)是Rust代码的事实标准解释器。它是驱动Rust编译器rustc内部的编译时函数评估的工具,但Miri比编译器当前使用的功能更丰富。

出于实验目的,Miri也可以在Rust Playground中使用。它可用于评估程序的特定运行,并检测某些类型的未定义行为是否存在。

Miri不提供Rust REPL,但它可能是创建此类工具的一部分


我以为 Rust 没有真正的编译时函数执行(CTFE)?还是有的吗?我研究了 Miri,但这似乎是一个非常 hacky 的解决方案。我也可以从 Rust 中调用 rustc,不过没有更简洁的方法吗? - jundl77
3
CTFE仍处于萌芽阶段。某些能力是可用的(例如,AtomicUsize::new 是一个const fn),而其他能力则不可用。 - Shepmaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接