Rust是否完全独立于OS和C?

Rust是否完全独立于OS和C?,c,rust,C,Rust,Rust是否完全独立于其他语言和OSs,比如C,或者它不是 Rust是否完全独立于OS和C Rust通常依赖主机系统来支持I/O之类的东西,但它可以是独立的 对于操作系统开发,您将使用:一个没有主机支持的Rust环境。该环境包括没有线程、没有动态内存、没有I/O的库(std库的子集)。实现这些将是开发操作系统的一部分 在C语言中,您应该遵守一些约束,例如不使用任何并发、限制标准库的使用等等 不完全是。在独立的C语言中,有一些标准的图书馆设施保证可用 此外,是否可能有多个执行线程是由实现定义的。在

Rust是否完全独立于其他语言和OSs,比如C,或者它不是

Rust是否完全独立于OS和C

Rust通常依赖主机系统来支持I/O之类的东西,但它可以是独立的

对于操作系统开发,您将使用:一个没有主机支持的Rust环境。该环境包括没有线程、没有动态内存、没有I/O的库(std库的子集)。实现这些将是开发操作系统的一部分

在C语言中,您应该遵守一些约束,例如不使用任何并发、限制标准库的使用等等

不完全是。在独立的C语言中,有一些标准的图书馆设施保证可用

此外,是否可能有多个执行线程是由实现定义的。在使用SMP等开发普通操作系统时,您将需要一个具有此类支持的独立实现

然而,在Rust中,我发现您应该明确指定代码的某些部分,以使用C的链接实现,而不是Rust,并考虑编程行为的更多方面

也不完全是这样。人们可以仅使用Rust的ABI来编程操作系统,以与汇编文件和其他位进行接口。问题是这样的ABI在可预见的未来不会稳定。因此,如果你愿意跟随这些变化,你可以做到。但是使用C语言更简单

避免处理ABI的另一种可能性是尝试使用内联程序集来完成所有工作

所以我的问题是,Rust是否完全独立于其他语言和OSs,比如C,或者它不是


两者都可以独立使用。

C11引入了
和支持并发的内存模型。我看不出有什么理由“限制标准库的使用”(这通常会导致您重新实现标准库的这些部分)。为什么您永远不应该在C中使用并发和限制标准库的使用?至少可以说,你的前提很奇怪。如果你是从头开始编写操作系统,你有责任提供标准库,但这并不意味着你一旦编写好就不能使用它。此外,每种编程语言最终都必须依赖操作系统内核来完成某些事情,比如访问文件,举个例子。与OS内核的接口实际上总是使用某种C接口,因为C是编程的通用语言。如果你想设计一个“独立于C”的操作系统,你就面临着第二十二条军规。当然,我相信你可以用C做类似的事情。@ikegami:什么,你认为人们可以用C做操作系统吗?谁听说过这样的事?@Eric Postdischil:)是的,“我相信”可能有点轻描淡写了。@skevula我指的是铁锈ABI。是否在程序集中写入其他对象文件不在范围内;谈论“稳定”或“不稳定”是没有意义的。哦,好的,谢谢。@skevula C是一个标准,有很多实现。每个人都可以定义自己的ABI。我不知道你说的“为什么不能做这件事?”是什么意思。Rust也是这样做的:它也定义了ABI(但这样的ABI并不意味着要被冻结,这就是问题所在)。不客气!:-)@是的,Rust确实可以像C一样独立使用,这是真的。同样,使用C实现的ABI比任何Rust的ABI都要简单(由于语言特性)。但“汇编”没有ABI,它只是汇编;你可以使用任何ABI。新年快乐!也许你指的是Rust的API(应用程序编程接口),Rust中的一组例程可用于编程各种事情(执行各种功能)。ABI是应用程序二进制接口,不是每种语言的。当项目的二进制文件(可执行代码)涉及多种语言时,它们必须使用相同的应用程序二进制接口。从定义上讲,这就是它们如何协同工作。