花粉程式語言/現代語言中的作業系統開發
外觀
< 花粉程式語言
在我看來,在現代程式語言中編寫包含多個靜態庫的 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 目標檔案一樣連結,而目標檔案又對映到用特定語言編寫的原始檔。