花粉编程语言/现代语言中的操作系统开发
外观
< 花粉编程语言
在我看来,在现代编程语言中编写包含多个静态库的 C 程序是比较困难的。现代编程语言通常包含一个运行时库。Rust、D 和 Ada 都包含一个运行时。
Rust 运行时非常小,但它是必需的,因为它包含了基本整数类型、向量和其他类型的定义。no_std 宏仅保留了不依赖于分配的操作系统无关代码。
这类似于 D 中的 betterC。betterC 完全去除了运行时库。它没有 GC、TypeInfo 或分配。
- 当 Rust 库静态链接时,Rust 不需要运行时初始化。
- Ada 需要通过调用 adainit 和 adafinal 来进行运行时初始化。
- 当 D 不处于 betterC 模式时,它也需要运行时初始化,用于初始化 GC 和其他全局变量,以及调用一些操作系统函数来设置状态,例如 pthreads。
在以前的版本中,cargo init 默认情况下创建库而不是二进制文件。这些模块包含仅限 Rust 的代码,这些代码链接到用 C 编写的静态或动态库,包括 C 标准库或任何操作系统库。类似地,Ada 库仅包含 Ada 代码。实际上,.a 库可以像 .o 目标文件一样链接,而目标文件又映射到用特定语言编写的源文件。